Скрипт встроенного приложения

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

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

Место настройки скрипта

Форма добавления приложения, см. Настройка встроенных приложений.

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

Выполняется непосредственно перед отображением виджета со встроенным приложением типа "Приложение запущено на внешнем сервере".

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

Результат выполнения скрипта зависит от метода определения URL приложения:

  • "Параметры определяются по системной логике" — скрипт возвращает ассоциативный массив пользовательских параметров, который будет передан во встроенное приложение через параметр params (в формате JSON).
  • "URL полностью определяется скриптом" — скрипт возвращает URL встроенного приложения. URL должен быть корректно сформирован, с обязательным указанием протокола передачи, например https://".
  • "Параметры определяются скриптом" — скрипт возвращает часть URL после адреса встроенного приложения

В случае возникновения ошибки в ходе выполнения скрипта или если длина JSON строки превысит 2000 символов, параметр scripterror будет содержать текст ошибки.

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

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

  • user — пользователь, инициализировавший событие. Является объектом класса "Сотрудник" (employee).

    Если событие инициализировал суперпользователь, то user=null.

    Если событие инициализировано скриптом (скриптовое действие по событию, скрипт на вход в статус), то переменная user берется из контекста инициировавшего его скрипта.

    Пример: пользователь выполнил изменение атрибута → произошло изменение статуса объекта (действие по событию) → произошло изменение ответственного (действие на вход в статус) → произошло оповещение (действие по событию) .Во всех скриптах этой цепочки переменная user должна содержать сотрудника, выполнившего первоначальное изменение атрибута.

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

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

  • subject — владелец атрибута, текущий объект над которым производится действие.
  • contentCode — код контента встроенного приложения.
  • cardObject — объект, из карточки которого было инициировано действие.

    Если действие инициировано НЕ из карточки объекта, то cardObject = null.

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

  • Не допускается возвращать объекты целиком (включая subject). Все объекты автоматически преобразуются к строке, содержащей UUID объекта.
  • Скрипт выполняется при каждом обновлении страницы, на которой находится встроенное приложение со скриптом.
  • В теле скрипта не рекомендуется выполнять редактирование объектов (включая utils.edit).

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

1. Отправка заголовка текущего объекта.

return "Название: ${subject.title}"

2. Получение списка отделов (во встроенное приложение будут переданы UUID отделов).

return utils.find('ou', [:])

3. Получение кода контента встроенного приложения

return contentCode

4. Получение URL встроенного приложения (URL должен содержать протокол передачи, например, http://, и полное доменное имя).

return 'http://www.naumen.ru/sd'

5. Получение части URL (после адреса встроенного приложения).

// адрес приложения http://www.naumen.ru

// скрипт возвращает '/sd'

// итоговый адрес приложения http://www.naumen.ru/sd

return '/sd'