Автоматическая нумерация процесса

Создание нумератора

Нумератор – это объект системы, позволяющий настроить сквозную автоматическую нумерацию.

Нумератор может быть создан в Дизайнере ELMA на вкладке Документооборот или при помощи сценария. Подробнее о создании нумератора в Дизайнере ELMA см. соответствующую страницу справки по системе ELMA.
В данной статье будет рассмотрен пример создания нумератора с помощью сценария. Для создания одного нумератора, скрипт создания нужно выполнить один раз. Для скрипта можно создать отдельный процесс и выполнить его в веб-части, либо выполнить скрипт в режиме эмуляции с параметром Откат после выполнения установленным в значение Нет. В результате выполнения скрипта необходимо знать Uid созданного нумератора.
Следует отметить, что создание нумератора и генерация номера должны быть выполнены в разных сценариях.

Пример сценария с использованием PublicAPI

Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.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;​
Пример использования созданного нумератора для нумерации экземпляров процесса.
  1. Создадим контекстную переменную Номер процесса типа Целое число.
  2. Добавим данную переменную в шаблон наименования процесса. Для этого на верхней панели вкладки Графическая модель выбираем Наименование экземпляров и в появившемся окне в строку шаблона вставим контекстную переменную {$Context.NomerProcessa}.
  3. В качестве первой операции процесса добавим сценарий, в котором будем вычислять номер процесса.
Пространства имен:
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);
Внимание!
Сценарий, указанный ниже, актуален для версии системы ELMA ниже 3.8.
Пространство имен:
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();