Перейти к основному содержимому
Версия: 1.23.3

Использование dot-walking в скриптах

Механизм dot-walking предоставляет доступ к полям связанных таблиц с формы, со списка или из скрипта. В таблице могут содержаться ссылки на другие таблицы. Доступ к полям в этих таблицах можно получить при помощи dot-walking.

Механизм dot-walking создает цепочку наименований атрибутов, разделенных точками. Например, incident.assigned_user.company ссылается на компанию пользователя, назначенного на инцидент.

примечание

В текущей статье описывается работа механизма dot-walking в скриптах. Подробнее о функциональности читайте в статье Dot-walking.

В следующем примере скрипт возвращает адрес электронной почты пользователя, ответственного за текущую назначенную группу:

dot-walking
const current = new SimpleRecord('itsm_incident');
current.get('158557395619812771');
ss.info(current.assignment_group.responsible.email);
// Info: john.doe@example.com

Для ускорения выполнения скрипта используйте метод getValue(property), чтобы получить значения полей типа Reference, вместо использования dot-walking.

Например, предпочтительнее использовать структуру current.getValue('reference_field') вместо current.reference_field.sys_id.

предупреждение

Стандартный механизм dot-walking не предназначен для обращения к полям дочерних таблиц, которые не являются унаследованными от родительской таблицы. Если вы используете его в такой ситуации, ответ будет содержать ошибку. Информация о том, как получить доступ к расширенным полям дочерних таблиц, доступна далее в статье.

Получение доступа к расширенным полям дочерних таблиц через оператор $$


При работе со скриптами может возникнуть ситуация, когда вам необходимо получить значение одного из расширенных полей дочерней таблицы, которых нет в родительской таблице. Если в такой ситуации вы используете стандартный механизм dot-walking, ответ будет содержать ошибку. Для решения этой проблемы создан оператор $$, который позволяет искать значение в расширенных полях дочерней таблицы.

Например, вам нужно получить информацию о руководителе заявителя по конкретной задаче из таблицы Задачи (task). Обычно заявителем указан объект из таблицы Пользователи (user), но в данном случае заявитель и его руководитель – это объекты из таблицы Сотрудники (employee), которая является дочерней от Пользователей и имеет расширенный набор полей.

Запись руководителя заявителя хранится только в таблице Сотрудники, и его нет в родительской таблице Пользователи. Чтобы получить ID пользователя, который является руководителем заявителя, используйте скрипт, который реализует атрибуты вызываемой записи в контексте текущего элемента.

Чтобы получить значение атрибута дочерней таблицы Сотрудники, перезагрузите запись в контексте текущей таблицы Задачи. В примере ниже объект current является объектом таблицы Задачи (task). Оператор $$, указаный перед наименованием вызываемого атрибута Руководитель, позволяет перезагрузить запись в контексте текущей таблицы Задачи и обратиться к нужному полю дочерней таблицы Сотрудники.

Обработка контекста
const current = new SimpleRecord('task');
current.get('170539993117855116'); // задача, где заявителем является запись из таблицы Сотрудники.
ss.info(current.caller.$$manager);
внимание

При вызове несуществующего атрибута, скрипт возвращает null.

При попытке применить этот скрипт к записи, в которой заявитель не является объектом таблицы Сотрудники (employee), скрипт возвращает null на все запросы.