Расширенная модель записи (REM) позволяет дополнить набор полей таблицы.

Табличная структура REM повторяет структуру справочников с таблицами и колонками. Вместо колонок в REM используются атрибуты. Вы можете связать атрибуты REM с таблицей с помощью Модели (sys_re_model). Кроме того, вы можете создать коллекции атрибутов − универсальные наборы атрибутов, которые могут быть использованы в нескольких моделях одновременно.

Вы можете просмотреть справочники связанные с REM через категорию меню Расширенная модель записи.

Концепция REM


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

В случае, если дочерних таблиц немного и большая часть колонок совпадает, модель данных будет работать нормально. Но когда количество дочерних таблиц увеличивается, а количество совпадающих колонок уменьшается, управлять такой моделью становится сложнее. Модель данных с большой и сложной структурой наследования таблиц имеет следующие недостатки:

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

Каталог запросов по шаблонам можно рассмотреть как один из примеров таких таблиц. Есть родительская таблица для каталога и запись таблицы для каждого шаблона запроса с определенными атрибутами.

Для решения этой проблемы и была создана концепция Расширенной модели записи (REM).

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

Настройка расширенных моделей

Для настройки расширенной модели вам нужно:

  1. Создать расширенную модель.
  2. Создать атрибуты и включить их в модель.
  3. (опционально) Настроить коллекцию атрибутов.
  4. (опционально) Настроить клиентский скрипт расширенной модели записи.

На диаграмме ниже вы можете увидеть разницу между моделями и коллекциями. Модели создаются с определенным набором атрибутов, которые используются только в этой модели. Коллекции содержат атрибуты, которые могут применяться к разным моделям. 

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

Создание модели


Для создания модели выполните следующие шаги:

  1. Перейдите в Расширенная модель записи → Модели.
  2. Нажмите Создать и заполните поля.
  3. Нажмите Сохранить или Сохранить и выйти.

Поля формы Модель 

ПолеОбязательноОписание
ЗаголовокДаУкажите заголовок модели. Можно задать его на любом языке.
ТаблицаДа

Дайте ссылку на таблицу, которая будет затронута моделью.

После сохранения формы поле Таблица становится доступным только для чтения.

ОписаниеНетВведите описание модели.
Сценарий после вставкиНетВведите скрипт, который должен выполняться после создания записи. Для разработки скрипта можно использовать методы SimpleRecord Server-Side.
АктивноНетУстановите флажок, чтобы сделать модель активной.
ИконкаНетЗагрузите изображение для идентификации модели.
Связанные списки
АтрибутыСписок атрибутов, связанных с расширенной моделью.
Элементы формы моделиСписок элементов формы, связанных с расширенной моделью записи.
Используемые коллекцииСвязанные с моделью коллекции атрибутов.
Клиентские скрипты моделиСписок клиентских скриптов, связанных с моделью.
  • Не создавайте и не добавляйте атрибуты в модель c таким же наименованием, как у существующего атрибута, связанного с этой моделью.
  • Не переименовывайте уже созданные атрибуты таким образом, чтобы новое наименование совпадало с уже существующим атрибутом, связанным с этой моделью.

Настройка атрибутов


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

  1. Перейдите в Расширенная модель записи → Атрибуты.
  2. Нажмите Создать и заполните поля.
  3. Нажмите Сохранить или Сохранить и выйти.

Поля формы Атрибуты

ПолеОбязательноОписание
КонтейнерДаУкажите ранее созданную модель.
Тип атрибутаДаУкажите тип атрибута.
ЗаголовокДа

Укажите заголовок атрибута. Вы можете использовать латиницу, кириллицу, цифры от 0 до 9, пробел и символ нижнего подчеркивания ( _ ).

Заголовок атрибута может быть локализован.

Наименование атрибутаДа

Системное наименование атрибута. Поле заполняется автоматически заголовком, используются только латинские буквы, цифры от 0 до 9 и символ ( _ ).

После сохранения записи поле доступно только для чтения.

Связать с колонкойНет

Укажите колонку целевой таблицы для связи значения атрибута до создания записи (в том числе до срабатывания бизнес-правила типа before). Для выбора доступны колонки таблицы, указанной в связанной модели или ее дочерних таблиц.

Если целевая колонка является обязательной, значение будет сохранено до того, как оно будет обработано на стороне сервера.

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


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

Следующее сообщение появится, если в целевой таблице нет колонки:

Атрибут "{attribute_name}" не может быть записан в колонку, т.к. она отсутствует в таблице

КомментарииНетНапишите комментарий, описывающий атрибут.
АктивноНетУстановите флажок, чтобы сделать атрибут активным.
Только для чтенияНетУстановите флажок, чтобы сделать добавленное с помощью этого атрибута поле доступным только для чтения.
ОбязательноНетУстановите флажок, чтобы сделать добавленное с помощью этого атрибута поле обязательным для заполнения.
Параметры типа
Зависит от поляДа

Укажите колонку Таблицы типа Reference, которая ссылается на справочник Таблицы и имеет системное имя table_id.

Поле появляется, когда выбран один из типов атрибутов:

  • Field Name
  • Conditions
  • Template
Максимальная длинаНет

Укажите максимальную длину значения для колонки.

Поле появляется, когда выбран один из следующих типов атрибута:

  • String
  • Text
  • URL
  • Password
  • Script
  • Journal Input
  • HTML
  • Encrypted Password
  • Translated Text
  • Record Class
Таблица с опциямиНетУкажите таблицу, в которой хранятся опции выбора. Поле появляется, когда выбран тип атрибута Choice.
Опции из поляДаУкажите колонку Таблицы с опциями, которая содержит опции выбора. Поле появляется, когда заполнено значение в Таблица с опциями.
Тип спискаДа

Выберите тип списка опций:

  • Выпадающий список с опцией –Нет—
  • Выпадающий список без опции –Нет—(укажите значение по умолчанию)

Поле появляется, когда выбран тип атрибута Choice.

Дополнительные атрибутыНет

Укажите дополнительные настройки для поля. Например, введите текст ниже для того, чтобы применить стиль радиокнопок к полю опций:

choice_decorator=radio

Поле появляется, когда выбран один из следующих типов атрибутов:

  • Choice
  • Conditions
  • Image
СсылкаДаУкажите таблицу со значениями, которые вам необходимы. Поле появляется, когда Тип атрибута – это List или Reference.
При удаленииНет

Выберите действие, которое будет выполняться при удалении записи, на которую есть ссылка. Доступные варианты выбора:

  • Без действий – никакие действия не будут выполняться.
  • Присвоить NULL – ссылка на запись будет удалена из поля (значение будет равно null).

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

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


  • Каскадное удаление – запись, ссылающаяся на удаленную запись, тоже будет удалена.
  • Запретить удаление – удаление записи, на которую ссылается поле, запрещено.
  • Присвоить значение по умолчанию – значение поля при удалении записи, на которую действует ссылка, будет заменено на значение по умолчанию.

Поле появляется, когда когда Тип атрибутаReference.

Значение по умолчанию
Значение по умолчаниюДа/Нет

Укажите значение по умолчанию, которым будет предзаполнено поле при создании записи.

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

Динамическое значение по умолчаниюНетУстановите флажок, если хотите, чтобы значение по умолчанию генерировалось динамически.
Динамическое значение по умолчанию Да

Поле появляется, когда выбран флажок Динамическое значение по умолчанию.

Выберите скрипт из справочника Динамические значения по умолчанию (sys_default_value_dynamic), чтобы результаты его выполнения были автоматически высчитаны и внесены в это поле. Это значение будет значением по умолчанию для указанной колонки.

  1. Скрипт должен быть заранее создан в справочнике Динамические значения по умолчанию (sys_default_value_dynamic).
  2. Вы можете выбрать только активные записи скриптов. (Установлен флажок Активно)
Определитель ссылок
Тип определителя ссылокНет

Укажите тип определителя ссылок:

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

Поле появляется, когда выбран один из следующих типов атрибута:

  • List
  • Reference
  • Field Name
Условия определителя ссылокНетНастройте фильтры, используя конструктор условий. Поле появляется, когда выбран Простой тип определителя ссылок.
Динамический определитель ссылокНетВыберите динамический определитель ссылок из списка. Поле появляется, когда выбран Динамический тип определителя ссылок.
Зафиксировать определительНет

Установите флажок, чтобы зафиксировать фильтр в навигационной цепочке. Эта функция блокирует использование конструктора условий.

Поле появляется, когда выбран один из следующих типов атрибута:

  • List
  • Reference
  • Field Name

Настройка коллекций атрибутов


Коллекции атрибутов реализованы для использования отношений "многие-ко-многим", поэтому они позволяют повторно использовать одни и те же атрибуты в различных моделях вместо того, чтобы добавлять их отдельно в каждую модель.

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

Для использования, выполните следующие шаги:

  1. Создайте запись коллекции, как описано ниже.
  2. Добавьте в нее созданные ранее атрибуты или создайте новые, используя связанный список Атрибуты.
  3. Свяжите коллекцию с раннее созданными моделями, используя связанный список Используется в моделях.

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

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

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

  1. Перейдите в Расширенная модель записиКоллекции.
  2. Нажмите Создать и заполните поля.
  3. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

Поля формы Коллекция 

ПолеОбязательноОписание
ЗаголовокДаУкажите заголовок коллекции.
АктивноНетУстановите флажок, чтобы сделать коллекцию активной.
ТаблицаНетУкажите таблицу, к которой относится коллекция.
Связанные списки
АтрибутыСоздайте атрибут, который будет относиться к коллекции, или выберите существующий из таблицы.
Элементы формы

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


Используется в моделяхСоздайте модель, которая будет относиться к коллекции, или выберите существующую из таблицы.
Клиентские скриптыСоздайте клиентский скрипт модели, который будет относиться к коллекции, или выберите существующий из таблицы.
  1. Не переименовывайте атрибут коллекции таким образом, чтобы новое наименование атрибута совпадало с наименование атрибута, созданного или добавленного в связанную модель или коллекции связанной модели.
  2. Коллекция и модель могут быть связаны только один раз.
  3. Модель и коллекция, у которых есть хотя бы один одноименный атрибут, не могут быть связаны друг с другом.

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


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

  1. Перейдите в Расширенная модель записиКлиентские скрипты модели.
  2. Нажмите Создать и заполните поля.
  3. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

Поля формы Клиентский скрипт модели

ПолеОбязательноОписание
НаименованиеДа

Укажите название клиентского скрипта.

КонтейнерДаУкажите созданную ранее модель.
ТипДа

Выберите тип скрипта. Доступные опции:

  • При загрузке – скрипт начинается, когда система показывает форму.
  • При изменении – скрипт начинается после изменения значения указанного поля.
  • При отправке формы – клиентский скрипт может отменить отправку форму, вернув значение false.
АтрибутДаУкажите атрибут, изменение которого будет являться триггером выполнения скрипта. Поле появляется, когда выбран тип При изменении.
ОписаниеНетДобавьте описание клиентского скрипта.
АктивноНетУстановите флажок, чтобы сделать скрипт активным.
ПорядокНетОпределите порядок выполнения скрипта. Скрипты выполняются в порядке возрастания. 
СкриптНет

Введите клиентский скрипт.

В скрипте возможно использовать методы класса SimpleForm. Если модель отображается с помощью Simple-тега <rem>, то объект s_form будет соответствовать родительской форме, на которой размещен виджет. При использовании Simple-тега <remform> объектом s_form будет форма, отображаемая тегом.

Настройка элементов формы модели или коллекции


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

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

Сгруппируйте атрибуты по общим параметрам и дайте им заголовок. На скриншоте ниже пользовательские атрибуты разделены на две колонки:

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

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

  1. Перейдите в Расширенная модель записиМодели или в Расширенная модель записи → Коллекции в зависимости от того, что вы хотите настроить.
  2. Откройте запись необходимой модели/коллекции.
  3. В области Связанные списки откройте вкладку Элементы формы моделей.
  4. Организуйте атрибуты, изменяя значения в поле Позиция. Атрибуты выводятся на форму по возрастанию.

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

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

  1. Перейдите в Расширенная модель записи Модели или в Расширенная модель записи → Коллекции в зависимости от того, что вы хотите настроить.
  2. Откройте запись необходимой модели/коллекции.
  3. В области Связанные списки откройте вкладку Элементы формы моделей.

  4. Нажмите Создать и заполните поля.
  5. Нажмите Сохранить или Сохранить и выйти, чтобы добавить элемент.

Поля формы Элемент формы модели

ПолеОбязательноОписание
КонтейнерДаУкажите ранее созданную модель/коллекцию. Если элемент создается из связанного списка, то поле заполняется автоматически.
ПозицияДаУкажите позицию элемента на форме. Элементы выводятся на форму по возрастанию.
Элемент блокаДа

Выберите тип элемента. Доступные опции:

  • Разделитель – используйте этот элемент, чтобы разделить поля на колонки.
  • Начало – используйте этот элемент, чтобы указать начало блока полей. Вы также можете указать заголовок сгруппированных полей. Когда выбран этот тип, появляется поле Заголовок блока.
  • Конец – используйте этот элемент, чтобы указать конец блока полей.
Заголовок блокаНет

Укажите заголовок группы полей. Заголовок будет отображаться над группой атрибутов на соответствующей странице.

Поле появляется, когда в поле Элемент блока выбран тип Начало.

  • No labels