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

Ссылочные поля

Используйте поля типа Reference, чтобы соединить различные записи друг с другом. Эти поля извлекают значения из таблицы, на которую ссылаются, например, поле Часовой пояс ссылается на таблицу Часовые пояса (sys_timezone).

В SimpleOne поле сопровождается иконкой лупы , открывающей справочник, и иконкой плюса , открывающей окно создания новой записи в таблице, на которую ссылается поле.

Создание новой записи через поле типа Reference доступно на форме.

Чтобы создать недостающую запись в таблице, на которую ссылается поле, выполните следующие шаги:

  1. Нажмите на иконку плюса .
  2. В модальном окне заполните поля.
  3. Нажмите Сохранить.
внимание

Обратите внимание, что новая запись будет создана в таблице, на которую ссылается поле. Если в таблице Инциденты вы создали поле типа Reference, которое ссылается на таблицу Задачи, то запись будет создана в таблице Задачи, а не в Инциденты.

На списках для таких полей доступно встроенное редактирование.

Используйте следующие типы колонок для создания ссылки:

  • Reference
  • List
внимание

Учтите ограничения по использованию dot-walking для полей типа List:

  • Не используйте dot-walking c цепочкой больше одного поля для построения условий в конструкторе.
  • Не используйте dot-walking при настройке представления списков и форм.
ReferenceList
ОписаниеСсылается на запись в указанной таблице. Хранит ID записи.
Ссылается на несколько записей в указанной таблице. Хранит ID записей.
Скалярный типint8text
Критерии проверкиВы можете использовать следующий диапазон целочисленных значений: [-9223372036854775808 … 9223372036854775807]Все элементы должны быть отделены запятой.
примечание

Иногда в полях типа Reference вместо значений записей отображаются ID. Значения не могут быть показаны из-за образовавшихся циклов.

Например, поле ссылается на таблицу с колонкой, у которой активен атрибут Отображаемое поле. Эта колонка также может быть типа Reference. В какой-то момент, следующая колонка может отсылать к таблице, которая уже была просмотрена. Это значит, что образовался цикл и невозможно определить отображаемое значение в начальном поле. Показанный ID – это способ перейти к необходимой записи.

Создание поля типа Reference

При создании поля типа Reference, кроме обязательных, нужно заполнить следующие поля:

ПолеОбязательноОписание
СсылкаДаУкажите таблицу со значениями, которые вам необходимы.
При удаленииНетВыберите действие, которое будет выполняться при удалении записи, на которую есть ссылка. Доступные варианты выбора:
  • Без действий – никакие действия не будут выполняться.
  • Присвоить NULL – ссылка на запись будет удалена из поля (значение будет равно null).
  • Каскадное удаление – запись, ссылающаяся на удаленную запись, тоже будет удалена.
  • Запретить удаление – удаление записи, на которую ссылается поле, запрещено.
  • Присвоить значение по умолчанию– значение поля при удалении записи, на которую действует ссылка, будет заменено на значение по умолчанию.

Не забудьте задать значение по умолчанию в секции Значение по умолчанию, если выбрана опция Присвоить значение по умолчанию. В случае, если значение по умолчанию не установлено, а ссылочная запись удалена, ссылка на запись будет удалена из поля (значение будет равно null).

Если выбрана опция Присвоить NULL

Удаление записи А приведет к ошибке обновления ссылаемой на нее записи Б, если колонка, которая ссылается на запись А, является обязательной, а действие при удалении установлено Присвоить NULL.

Невозможно обновить запись {link}, так как она ссылается на удаленную запись

Определитель ссылок

Определитель ссылок позволяет создавать фильтры для выборки данных по определенным условиям и возврата их в поля типа Reference.

Эти поля хранят ID записей определенной таблицы. То есть это поле содержит ссылку на записи и поля в указанной таблице.

Определитель ссылок может состоять из:

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

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

Вы также можете изменить определитель ссылок в расширенных таблицах через переопределение полей. Для каждого поля, формы или таблицы может быть задан только один определитель ссылок.

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

  • Простой
  • Динамический

Простой определитель ссылок


В простом определители ссылок для настройки фильтров используются утверждения И/ИЛИ. Используйте их для несложных условий фильтрации. Например, чтобы отфильтровать только активных пользователей в справочнике Пользователи И/ИЛИ только компании из тихоокеанского часового пояса из справочника Компании. Подробнее о фильтрах читайте в статье Конструктор условий.

Чтобы создать простой определитель ссылок, выполните следующие шаги:

  1. Перейдите в Настройка системы → Все колонки.
  2. Найдите колонку, для которой вам нужно создать определитель ссылок, используя поля поиска над списком.
  3. Нажмите на секцию Определитель ссылок.
  4. Из выпадающего списка выберите Простой тип определителя.
  5. Укажите условия для определителя, используя конструктор условий. Вы можете задавать сложные фильтры, используя несколько И и ИЛИ в одном условии.
  6. (опционально) Установите флажок Зафиксировать определитель, чтобы закрепить условие в навигационной цепочке. Активный атрибут заблокирует возможность использования конструктора условий.

Динамический определитель ссылок


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

  1. Перейдите в Настройка системы → Все колонки.
  2. Найдите колонку, для которой вам нужно создать определитель ссылок, используя поля поиска над списком.
  3. Нажмите на секцию Определитель ссылок.
  4. Из выпадающего списка выберите Динамический тип определителя.
  5. Укажите динамический фильтр в поле Динамический определитель ссылок, которое ссылается на таблицу Настройки динамических фильтров.
  6. (опционально) Установите флажок Зафиксировать определитель, чтобы закрепить условие в навигационной цепочке. Активный атрибут заблокирует возможность использования конструктора условий.

Пример использования


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

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

Чтобы настроить определитель ссылок, выполните следующие шаги:

  1. Откройте форму записи, которая содержит нужное вам поле.
  2. Правой кнопкой мыши нажмите на заголовок поля Назначено на и выберите Настройка поля в контекстном меню.
  3. На форме колонки, перейдите во вкладку Определитель ссылок.
  4. Настройте определитель ссылок:
    • Тип определителя ссылок – Простой
    • Условия определителя ссылок – [Отдел] [равно] [Служба поддержки]
  5. Нажмите Сохранить или Сохранить и выйти.

Чтобы убедиться, что настройки были выполнены верно, введите имя пользователя, который не является сотрудником службы поддержки. Автозаполнение не предоставит никаких результатов.

Полезно знать


  1. Убедитесь, что все пользователи имеют доступ к полю, в которое вы добавляете определитель. Иначе, определитель скроет записи для пользователей, у которых нет доступа к указанному полю из-за правил контроля доступа (ACL).
  2. Секция Определитель ссылок доступна только для полей типа Reference и List. Для полей других типов используйте опции конструктора условий.
  3. Длина условия для таких полей ограничена, поэтому имеет смысл использовать условия вида (название_поля=значение) вместо поиска записи по ID в массиве.