Автоматическая нумерация процесса
Создание нумератора
Внимание!
Информация в этой статье актуальна для версий системы до 3.15.38 включительно.
Нумератор – это объект системы, позволяющий настроить сквозную автоматическую нумерацию.
Нумератор может быть создан в Дизайнере ELMA на вкладке Документооборот или при помощи сценария. Подробнее о создании нумератора в Дизайнере ELMA см. соответствующую страницу справки по системе ELMA.
В данной статье будет рассмотрен пример создания нумератора с помощью сценария. Для создания одного нумератора, скрипт создания нужно выполнить один раз. Для скрипта можно создать отдельный процесс и выполнить его в веб-части, либо выполнить скрипт в режиме эмуляции с параметром Откат после выполнения установленным в значение Нет. В результате выполнения скрипта необходимо знать Uid созданного нумератора.
Следует отметить, что создание нумератора и генерация номера должны быть выполнены в разных сценариях.
Пример сценария с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
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}.
- В качестве первой операции процесса добавим сценарий, в котором будем вычислять номер процесса.
Пространства имен:
using EleWise.ELMA.Documents.Managers;
Текст сценария:
//Загрузка нужного нумератора по Uid
var numerator = PublicAPI.Docflow.Objects.Nomenclature.Numerator.Load(new Guid("a2797010-8799-4877-bde3-bfc8216c5f49"));
//Инкрементируем нумератор и записываем в контекстную переменную. Второй параметр указывает на то надо ли сохранять новое значение в нумераторе
context.NomerProcessa = NumeratorManager.Instance.GetNewId(numerator, true);
Пространство имен:
using EleWise.ELMA.API;
Текст сценария: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
Пространства имен:
using EleWise.ELMA.Documents.Models.Nomenclature;
using EleWise.ELMA.Model.Services;
using EleWise.ELMA.Documents.Managers;
Текст сценария: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();