[ELMA3] Использование в номенклатуре частей года (функция)
При работе с номенклатурой может возникнуть необходимость указать часть года, например, при генерации регистрационного номера (В1-СКР-13-0001, где 13 - номер года).
Для этого потребуется создать в системе функцию отсечения символов года. Сделать это можно через сценарии в Объекте или Документе.
Примечание
Если в разделе Администрирование — Документы — Настройки модуля «Документооборот» в блоке Канцелярия включена сквозная номенклатура, учётный год не будет совпадать с текущим при условии, что опция включена ранее начала текущего года. Чтобы использовать функцию отображения части года, выключите сквозную номенклатуру.
Рассмотрим реализацию данного функционала на примере: в формуле регистрационного номера нужно указать год номенклатуры, но только последнюю цифру (текущий год - 2013; в номер должна вставиться цифра 3). Сценарий для отсечения символов года будет выглядеть так:
[EleWise.ELMA.ComponentModel.Component] public class CustomFunctionsContainer : ITemplateGeneratorFunctionsContainer { public static FormatedValue LastChar(FunctionEvaluationContext context) { var s =context.Parameters != null && context.Parameters.Count > 0 && context.Parameters[0] != null && context.Parameters[0].Value != null? context.Parameters[0].Value.ToString() : null; //проверка на ноль return !string.IsNullOrEmpty(s) ? new FormatedValue(s[s.Length - 1]) : null; //отсечение символов } }
Для корректной работы сценария необходимо подключить следующие библиотеки:
using EleWise.TemplateGenerator; using EleWise.TemplateGenerator.Functions; using EleWise.ELMA.Templates;
В процессе нужно создать любой объект и на вкладку Сценарий вставить этот код (либо вставить код на вкладке сценарий в любом типе документа, чтобы не создавать ненужный объект). Затем опубликовать объект и перезапустить сервер.
После этого распубликуйте номенклатуру и в шаблоне используйте код вида {LastChar({$RegistrationCard.AccountingYear.Year})},опубликуйте номенклатуру.
Можно изменить количество отображаемых символов для этого достаточно в последней строке сценария указать нужное количество чисел. Например, указав (s.Substring(s.Length - 2)) будет отображаться 2 последних символа, а указав (s.Substring(s.Length - 3)) – отобразится 3 символа. После выполнения действий описанных выше код вида {LastChar({$RegistrationCard.AccountingYear.Year})} может использоваться в любых местах шаблона, где нужно указать год номенклатуры.
Например, при создании дела в поле Шаблон номера.