Публикация

Маска в номере

Добрый день, уважаемые пользователи интернет сообщества Terrasoft!

Как вы знаете, в системе BPMonline в таких сущностях как счет, документ и пр., существует поле "Номер", которое автоматически (если другой не указан) проставляется как номер предыдущей сущности плюс один. Иногда возникает необходимость добавить префиксы к нумерации, т.е к примеру счета нумеровать как С-1, С-2 и т.д., документы - Д-1, Д-2 и т.д.
Предлагаю Вам простой способ реализации автоматического проставления префиксов к номерам:
для этого Вам необходимо перейти в раздел «Системные настройки» меню [Инструменты] и открыть группу «Автонумерация записей». В этой группе откройте системную настройку «Маска номера инцидента» (документа, счета и т. д.)

1

и измените значение следующим образом:

I: {0} (для инцидента, другие префиксы - для других сущностей).

2

Приятной работы с BPMonline!

Поделиться

10 комментариев

Добрый день!
А как например добавить текущую дату к номеру документа?
Какие-то еще маски кроме {0} целочисленных допускаются?
Или это уже на уровне базы данных нужно делать?
Спасибо

На уровне конфигурации.

Чтобы произвольным образом изменить маску, нужно доработать в схеме «Сгенерировать номер по порядку» функцию «GenerateNumberForSchemaName». Там на вход подаётся название раздела, можно для какого-то одного или для любого раздела заменять определённый макрос на текущую дату.

Если возникают вопросы о конретной реализации, напишите пример формата номера, который хотите получить.

Спасибо, Александр.
Нашел метод GenerateSequenseNumber в схеме «Сгенерировать номер по порядку» в пакете Base 7.5.0
Подскажите еще, как мне его переопределить в своем пакете? Создать свой бизнес-процесс?
Хочу формировать номер заказа в формате YYYY/MM-###

Ниже генерация номера договора (OrderPageV2) в формате Город: кодГорода + Знач.Сис.Настройки + НомерПопорядку(6 знаков) + Знач.Сис.Настройки + КодПродуктаВДоговоре.
Может поможет:

onEntityInitialized: function() {
				this.callParent(arguments);
				if (this.isAddMode() || this.isCopyMode() || this.get("NumberEx") === ""
                        || this.get("NumberEx") === undefined || this.get("NumberEx") === null) {
                    if (this.get("Number") === "") {
                        this.getIncrementCode(function (responce) {
                            this.set("Number", responce);
                        });
                    }
					var owner = this.get("Owner");
					if (!this.Ext.isEmpty(owner)) {
						this.getContactCityCode(owner, function(cityCode) {
							if (this.Ext.isEmpty(cityCode) || this.Ext.isEmpty(cityCode.city)) {
								this.set("Number", "");
								this.set("NumberEx", "");
								this.showMessage("Номер договора не сгенерирован. В карточке ответственного не указан город!");
								return;
							}
							else if (this.Ext.isEmpty(cityCode.code)) {
								this.set("Number", "");
								this.set("NumberEx", "");
								this.showMessage("Номер договора не сгенерирован. Для города ответственного не указан код!");
							} else {
								this.getProductCode(function(productCode) {
									if (this.Ext.isEmpty(productCode) || this.Ext.isEmpty(productCode.product)) {
										this.set("Number", "");
										this.set("NumberEx", "");
										this.showMessage("Номер договора не сгенерирован. В заявке нет продуктов!");
										return;
									} else if (this.Ext.isEmpty(productCode.code)) {
										this.set("Number", "");
										this.set("NumberEx", "");
										this.showMessage("Номер договора не сгенерирован. В продукте заявки не указан код!");
									} else {
										var OrderNumber = this.get("Number");
										while(OrderNumber.length < 6) {
											OrderNumber = "0" + OrderNumber;
										}
										var parentThis = this;
										Terrasoft.SysSettings.querySysSettingsItem("OrderNumberSeparator", function(value) {
											parentThis.set("NumberEx", cityCode.city + ": " + cityCode.code + value +
												OrderNumber + value + productCode.code);
											parentThis.set("Number", cityCode.city + ": " + cityCode.code + value +
												OrderNumber + value + productCode.code);
										});
									}
								});
							}
						});
					}
				}
			}

Спасибо большое!

Каким образом решить проблему с сортировкой по полю номер с использованием маски, т.к. поле "Номер" является текстовым и в следствии этого возникает следующая ситуация:

Вопрос с сортировкой продолжили обсуждать здесь.

Здравствуйте. Подскажите пожалуйста, а как настроить маску, чтобы нумерация была типа цифры-год. Чтобы каждый год естественно концовка менялась. К примеру, 1885-15
Благодарю

Какая версия используется?

"Зверев Александр" написал:

Какая версия используется?

Здравствуйте, Александр. Используется версия 7.6

Войдите или зарегистрируйтесь, чтобы комментировать