Автоматическая нумерация процесса
Создание нумератора
Нумератор – это объект системы, позволяющий настроить сквозную автоматическую нумерацию.
У нумератора нет графического интерфейса, создать его можно при помощи скрипта. Для создания одного нумератора, скрипт создания нужно выполнить один раз. Для скрипта можно создать отдельный процесс и выполнить его в веб-части, либо выполнить скрипт в режиме эмуляции с параметром Откат после выполнения установленным в значение Нет. В результате выполнения скрипта необходимо знать Uid созданного нумератора.
Пример сценария с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.1 включительно.
1 | var numerator = PublicAPI.Docflow.Objects.Nomenclature.Numerator.CreateNumerator(1, new Guid( "a2797010-8799-4877-bde3-bfc8216c5f49" )); |
Данная функция также может быть вызвана и без использования Guid. В таком случае Guid будет сформирован автоматически:
var numer = PublicAPI.Docflow.Objects.Nomenclature.Numerator.CreateNumerator(long increment);
Guid uid = numer.Uid;
или
var numer = PublicAPI.Docflow.Objects.Nomenclature.Numerator.CreateNumerator();
Guid uid = numer.Uid;
Пример использования созданного нумератора для нумерации экземпляров процесса.
- Создадим контекстную переменную Номер процесса типа Целое число.
- Добавим данную переменную в шаблон наименования процесса. Для этого на верхней панели вкладки Графическая модель выбираем Наименование экземпляров и в появившемся окне в строку шаблона вставим контекстную переменную {$Context.NomerProcessa}.
- В качестве первой операции процесса добавим сценарий, в котором будем вычислять номер процесса.
Пространства имен:
1 | using EleWise.ELMA.Documents.Managers; |
Текст сценария:
1 2 3 4 | //Загрузка нужного нумератора по Uid var numerator = PublicAPI.Docflow.Objects.Nomenclature.Numerator.Load( new Guid( "a2797010-8799-4877-bde3-bfc8216c5f49" )); //Инкрементируем нумератор и записываем в контекстную переменную. Второй параметр указывает на то надо ли сохранять новое значение в нумераторе context.NomerProcessa = NumeratorManager.Instance.GetNewId(numerator, true ); |
Внимание!
Сценарий, указанный ниже, актуален для версии системы ELMA ниже 3.8.
Пространство имен:
Текст сценария:
1 | using EleWise.ELMA.API; |
1 2 3 4 | var numerator = PublicAPI.Docflow.Objects.Nomenclature.Numerator.Create(); numerator.Increment = 1; numerator.Uid = new Guid ( "a2797010-8799-4877-bde3-bfc8216c5f49" ); numerator.Save(); |
Пример сценария без использования PublicAPI
Требуется подключить сборки:
Elewise.ELMA.Documents
Elewise.ELMA.Documents.Docflow
Пространства имен:
1 2 3 | using EleWise.ELMA.Documents.Models.Nomenclature; using EleWise.ELMA.Model.Services; using EleWise.ELMA.Documents.Managers; |
1 2 3 4 5 6 7 | var numerator = InterfaceActivator.Create<INumerator>(); numerator.Increment = 1; //Забиваем какой нибудь константный Uid, по которому потому будем его загружать, в примере используется Uid = a2797010-8799-4877-bde3-bfc8216c5f49 //Uid можно сгенерировать можно с помощь кода: var guid = Guid.NewGuid(); //Каждый нумератор должен иметь уникальный Uid numerator.Uid = new Guid( "a2797010-8799-4877-bde3-bfc8216c5f49" ); numerator.Save(); |