Резервирование регистрационного номера сценарием
В данной статье приведено описание реализации резервирования регистрационного номера сценарием в процессе.
Для корректной работы сценария необходимо:
- в разделе Администрирование – Документооборот – Номенклатура осуществить настройку выбранного дела (Рис. 1), а именно в поле Разрешено резервирование установить переключатель в положение Да. После этого необходимо сохранить и опубликовать номенклатуру дел;
- настроить вариант регистрации документов. Подробнее о создании и настройке вариантов регистрации документов см. соответствующий раздел справки.
Рис. 1. Администрирование – Документооборот - Номенклатура
Для создания зарезервированного номера сценарием необходимо подключить пространство имен:
usingEleWise.ELMA.Documents.Managers
Текст сценария:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // 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; } } } |