Механизм dot-walking позволяет получить доступ к значению полей связанных таблиц. В таблице могут содержаться ссылки на другие таблицы.
Например, в таблице Инцидент (itsm_incident) есть референсное (ссылочное) поле Заявитель. Значение в этом поле отсылает к записи пользователя в другой таблице — таблица Сотрудники. У записи пользователя есть поле Электронная почта.
Таким образом, взаимосвязанные значения, которые расположены в разных таблицах, образуют цепочку. Чтобы получить значение электронной почты сотрудника, который сообщил об инциденте, в скрипте нужно построить цепочку Инцидент.Заявитель.Почта с разбиением по точкам:
const current = new SimpleRecord('itsm_incident'); // объектом current будет запись из таблицы инцидентов
current.get('170539993117855116'); // получаем конкретную запись инцидента по id
ss.info(current.caller.email); // получаем информацию о почте заявителя инцидента
Поскольку Заявитель это поле типа Reference , то для получения значения референсного поля вместо dot-walking рекомендуется использовать метод getValue(property):
current.getValue(‘caller’);
Если у дочерней таблицы набор полей шире, чем у родительской, то использование dot-walking в скриптах недостаточно. При обращении через dot-walking к полям дочерней таблицы, которых нет в родительской, будет возникать ошибка «Property {название поля} not exist!».
Чтобы избежать такого поведения программы и получить через скрипт доступ к расширенным полям дочерней таблицы, на платформе SimpleOne предусмотрен оператор возможности — $$.
Данный оператор $$ указывается перед наименованием поля дочерней таблицы (атрибута объекта).
Например, необходимо получить мобильный телефон сотрудника, который сообщил об инциденте.
Поле Мобильный телефон расположено в таблице Сотрудники (Employee), которая является дочерней от таблицы Пользователи (User). При этом в родительской таблице Пользователи нет поля Мобильный телефон. В этом случае в скрипте необходимо указать оператор возможности $$ следующим образом:
const current = new SimpleRecord('itsm_incident');
current.get('170539993117855116');
ss.info(current.caller.$$mobile_phone);
Оператор возможности $$ позволяет искать значение в расширенных полях дочерней таблицы. И если значение не будет найдено, то вместо ошибки скрипт возвратит ответ null.