Резервирование регистрационного номера сценарием

В данной статье приведено описание реализации резервирования регистрационного номера сценарием в процессе.

Для корректной работы сценария необходимо:

  • в разделе Администрирование - Документооборот - Номенклатура осуществить настройку выбранного дела (Рис. 1), а именно в поле Разрешено резервирование установить переключатель в положение Да. После этого необходимо сохранить и опубликовать номенклатуру дел;
  • настроить вариант регистрации документов. Подробнее о создании и настройке вариантов регистрации документов см. соответствующий раздел справки.

 

Рис. 1. Администрирование – Документооборот - Номенклатура

Для создания зарезервированного номера сценарием необходимо:

  • подключить пространство имен: usingEleWise.ELMA.Documents.Managers
  • использовать класс: ReservedRegNumberManager

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

                // eql-запрос для поиска нужного типа документа
                string eqlParam = "ContractType = " + context.ContractType.Id + " AND Templates = " + context.Template.Id;
                var Param = EntityManager<TypicalContractParameters>.Instance.Find (eqlParam).FirstOrDefault ().DocumentType.DocumentTypeUID;
                if (string.IsNullOrWhiteSpace (context.ReservedNumber)) {
                    // поиск варианта регистрации
                    var varReg = RegistrationVariantManager.Instance.FindAll ().Where (x => x.DocumentType.TypeUid.ToString () == Param).FirstOrDefault ();
                    if (varReg != null) {
                        //резервирование регистрационного номера по варианту
                        var reservReg = ReservedRegNumberManager.Instance.ReservRegNumberByVariant (varReg);
                        reservReg.Save ();
                        context.ReservedNumber = reservReg.RegNumber;
                        //формирование полного регистрационного номера в соответствии с номенклатурой дел компании
                        var prefix = context.IsFrame ? "PA_" : "SA_";
                        var operatorCode = context.ContractingPartyLeg != null ? context.ContractingPartyLeg.Name + "_" : string.Empty;
                        var objectID = context.ObjectInf != null ? context.ObjectInf.Name + "-" : string.Empty;
                        var reservedNumber = !string.IsNullOrEmpty (context.ReservedNumber) ? DateTime.Now.Year.ToString () + context.ReservedNumber : string.Empty;
                        context.RegistrNumber = string.Format ("{0}{1}{2}", operatorCode, objectID, reservedNumber);
                        if (!string.IsNullOrEmpty (context.ReservedNumber) && (string.IsNullOrEmpty (context.ContractNumber) || context.ContractNumber.Contains (context.ReservedNumber))) {
                            context.ContractNumber = context.RegistrNumber;
                        }
                    }
                }