Скрипт вычисления элементов произвольного справочника

Категория скрипта "Вычисление элементов справочника".

Описание скрипта

Скрипт используется для формирования произвольного справочника в виде ассоциативного списка "ключ–значение".

Когда выполняется скрипт

  • При открытии формы заполнения параметров действия по событию.
  • При открытии формы добавления или редактирования контента со встроенным приложением, для которого запрашиваются дополнительные параметры.

Результат выполнения скрипта

Скрипт возвращает ассоциативный список "ключ–значение", если ключ и значение имеют тип "строка".

Скрипт возвращает пустое значение, если:

  • отсутствуют доступные для выбора значения;
  • хотя бы один ключ или значение имеют тип, отличный от типа "строка".

Переменные и их значения

Глобальные переменные:

  • user — пользователь, инициализировавший событие. Является объектом класса "Сотрудник" (employee). Если событие инициализировал суперпользователь, то user=null.
  • ip — ip-адрес рабочего места пользователя user. Если действие выполняется автоматически системой (а не пользователем), то переменная не определяется.
  • appVersion — версия приложения.
  • api — используется для обращения к методам api, например api.utils, api.ldap, api.timing, см. Методы API;
  • modules — используется для обращения к скриптовому модулю и конкретному методу, определенному в нем, с помощью конструкции: modules.{код модуля}.{имя метода}({параметры метода}...), см. Скрипт текста модуля;
  • logger — используется для отладки скриптов и позволяет вывести в лог на указанный уровень переданную строку, см. Отладочные сообщения.
  • utils — синоним api.utils.

Переменные контекста:

  • form — значения полей формы, на которой присутствует параметр типа "Элемент произвольного справочника" (представление объекта на клиенте).
  • attrCode — код параметра, для которого производится вычисление ассоциативного списка.
  • subject — ссылка на объект, к которому применяется действие по событию.
  • subjects — набор ссылок на объекты, к которым применяется действие по событию. Переменная доступна, если действие выполняется как массовая операция в списке;
  • cardObject — объект, из карточки которого было инициировано событие. Переменная доступна, если событие вызвано из карточки объекта.
  • source — способ вызова события: OBJECT_LIST из списка объектов и OBJECT_CARD из карточки объекта.

Контекстные переменные: subject, subjects, cardObject, source недоступны при выполнении скрипта в интерфейсе администратора (при открытии формы добавления или редактирования контента со встроенным приложением, для которого запрашиваются дополнительные параметры).

Особенности скрипта

Скрипт вычисления элементов произвольного справочника выполняется только при открытии формы.

Если необходимо формировать список доступных элементов справочника в зависимости от выбранных значений других параметров формы, рекомендуется использовать Скрипт фильтрации значений параметра (для значений произвольного справочника).

Если необходимо вычислять значение для заполнения параметра при редактировании в зависимости от выбранных значений других параметров формы, рекомендуется использовать Скрипт вычисления значения параметра (для вычисления значений произвольного справочника).

Скрипты фильтрации значений параметра и вычисления значения параметра при редактировании выполняются при изменении параметров, указанных в PARAMS_FOR_UPDATE_ON_FORMS. В процессе выполнения этих скриптов вызывается скрипт вычисления элементов произвольного справочника для получения списка элементов, по которым нужно произвести фильтрацию или вычислить значение при редактировании. Таким образом, при выборе значений параметров на форме, от которых зависит список доступных элементов или значение параметра, будет получен актуальный набор элементов произвольного справочника, а не набор, полученный при открытии формы.

Пример скрипта

dictionary = [:]
for (ou in api.metainfo.getTypes('ou')) {
dictionary.put(ou.code, ou.title)
}
return dictionary