logo

Регистрация документа в системе от уже прошедшей даты

Для того, чтобы зарегистрировать документ от прошедшей даты, необходимо зарезервировать для него регистрационный номер.

В процессе используются следующие контекстные переменные:

  • Документ – тип объект Документ;
  • Дело – тип объект Дело;
  • Зарезервированный номер – тип объект Зарезервированные номера;
  • Документопоток – тип перечисление Документопоток;
  • Дата регистрации – тип Дата/Время;
  • Регистрационный номер – тип Строка.

Рис. 1. "Карта процесса"

В задаче процесса "Параметры регистрации" необходимо заполнить входные данные для резервирования регистрационного номера и регистрации документа (Рис. 2).

Рис. 2. "Параметры регистрации"

Для корректной работы бизнес-процесса сценарий создания зарезервированного номера и регистрация документа должны выполняться в разных транзакциях (Рис. 1), в противном случае в ходе бизнес-процесса возникнет ошибка.

Для создания зарезервированного номера необходимо использовать класс ReservedRegNumberManager.

Контекстные переменные:

  • context.Dokument – регистрируемый документ;
  • context.RegNumber – регистрационный номер для резервирования и регистрации;
  • context.Delo – дело для резервирования и регистрации (Depository);
  • context.Dokumentopotok – документопоток для регистрации (DocumentFlowType);
  • context.DateReg – дата, на которую будет создана регистрация;
  • context.ZarezervirovannyyNomer – переменная для хранения зарезервированного номера перед регистрацией.

Текст сценария "Резервирование номера":

1
2
3
4
5
var newReg = ReservedRegNumberManager.Instance.Create ();
newReg.RegNumber = context.RegNumber;
newReg.Depository=context.Delo;
newReg.Save ();
context.ZarezervirovannyyNomer = (ReservedRegNumber)newReg;

 

Сценарий "Регистрация документа":

Необходимые пространства имен:

using EleWise.ELMA.API;
using EleWise.ELMA.Documents.Managers;
using EleWise.ELMA.Documents.Models.Nomenclature;

Текст сценария:

1
2
3
var regNumber = PublicAPI.Docflow.Document.Register(context.Dokument, context.Delo, context.Dokumentopotok.Value, context.ZarezervirovannyyNomer);
context.ZarezervirovannyyNomer = null;
context.Dokument.RegistrationCard.FirstOrDefault ().RegistrationDate = context.DateReg;


C другими примерами сценариев для регистрации документов можно ознакомиться в статье https://www.elma-bpm.ru/kb/article-69.html