Добрый день, уважаемые пользователи интернет сообщества Terrasoft!
Как вы знаете, в системе BPMonline в таких сущностях как счет, документ и пр., существует поле "Номер", которое автоматически (если другой не указан) проставляется как номер предыдущей сущности плюс один. Иногда возникает необходимость добавить префиксы к нумерации, т.е к примеру счета нумеровать как С-1, С-2 и т.д., документы - Д-1, Д-2 и т.д.
Предлагаю Вам простой способ реализации автоматического проставления префиксов к номерам:
для этого Вам необходимо перейти в раздел «Системные настройки» меню [Инструменты] и открыть группу «Автонумерация записей». В этой группе откройте системную настройку «Маска номера инцидента» (документа, счета и т. д.)
и измените значение следующим образом:
I: {0} (для инцидента, другие префиксы - для других сущностей).
Приятной работы с BPMonline!
Добрый день!
А как например добавить текущую дату к номеру документа?
Какие-то еще маски кроме {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