logo

[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})} может использоваться в любых местах шаблона, где нужно указать год номенклатуры.

Например, при создании дела в поле Шаблон номера.