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

Расширенная модель записи

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

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

Концепция REM

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

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

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

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

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

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

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

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

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

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

внимание

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

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


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

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

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

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

Связанные списки:

  • Атрибуты – cписок атрибутов, связанных с расширенной моделью.
  • Элементы формы модели – cписок элементов формы, связанных с расширенной моделью записи.
  • Используемые коллекции – cвязанные с моделью коллекции атрибутов.
  • Клиентские скрипты модели – cписок клиентских скриптов, связанных с моделью.
внимание
  • Не создавайте и не добавляйте атрибуты в модель c таким же наименованием, как у существующего атрибута, связанного с этой моделью.
  • Не переименовывайте уже созданные атрибуты таким образом, чтобы новое наименование совпадало с уже существующим атрибутом, связанным с этой моделью.

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


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

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

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

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

ПолеОбязательноОписание
КонтейнерДаУкажите ранее созданную модель.
Тип атрибутаДаУкажите тип атрибута.
ЗаголовокДаУкажите заголовок атрибута. Вы можете использовать латиницу, кириллицу, цифры от 0 до 9, пробел и символ нижнего подчеркивания ( _ ).
Заголовок атрибута может быть локализован.
Наименование атрибутаДаСистемное наименование атрибута. Поле заполняется автоматически заголовком, используются только латинские буквы, цифры от 0 до 9 и символ ( _ ).
После сохранения записи поле доступно только для чтения.
Связать с колонкойНетУкажите колонку целевой таблицы для связи значения атрибута до создания записи (в том числе до срабатывания бизнес-правила типа до). Для выбора доступны колонки таблицы, указанной в связанной модели или ее дочерних таблиц.
Если целевая колонка является обязательной, значение будет сохранено до того, как оно будет обработано на стороне сервера.
Также, обязательную целевую колонку не нужно добавлять на форму записи, иначе механизм проверки с клиентской стороны может помешать сохранению записи. Связывание значения атрибута через поле Связать с колонкой доступно только если тип атрибута совпадает с типом целевой колонки.
Следующее сообщение появится, если в целевой таблице нет колонки: Атрибут "{attribute_name}" не может быть записан в колонку, т.к. она отсутствует в таблице
КомментарииНетНапишите комментарий, описывающий атрибут.
АктивноНетУстановите флажок, чтобы сделать атрибут активным.
Только для чтенияНетУстановите флажок, чтобы сделать добавленное с помощью этого атрибута поле доступным только для чтения.
ОбязательноНетУстановите флажок, чтобы сделать добавленное с помощью этого атрибута поле обязательным для заполнения.

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


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

внимание

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

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

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

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

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

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

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

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

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

Связанные списки

  • Атрибуты – cоздайте атрибут, который будет относиться к коллекции, или выберите существующий из таблицы.
  • Элементы формы – cоздайте элементы формы, который будет относиться к коллекции, или выберите существующий из таблицы.
  • Используется в моделях – cоздайте модель, которая будет относиться к коллекции, или выберите существующую из таблицы.
  • Клиентские скрипты – cоздайте клиентский скрипт модели, который будет относиться к коллекции, или выберите существующий из таблицы.
внимание
  • Не переименовывайте атрибут коллекции таким образом, чтобы новое наименование атрибута совпадало с наименование атрибута, созданного или добавленного в связанную модель или коллекции связанной модели.
  • Коллекция и модель могут быть связаны только один раз.
  • Модель и коллекция, у которых есть хотя бы один одноименный атрибут, не могут быть связаны друг с другом.

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


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

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

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

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

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

В случае, если на странице с формой записи одной таблицы присутствует RE-модель записи другой таблицы, которая добавлена на форму с помощью виджета с Simple-тегом <rem>, или RE-модель выведена с помощью тега <remform>, клиентский скрипт модели не сможет обратиться напрямую к основной форме записи через переменную s_form. В данном случае на странице находятся два независимых объекта форм. Для оперирования основной формой записи, используйте конструкцию s_widgets.getForm('formName'), где formName – название представления формы.

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


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

примечание

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

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

подсказка

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

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

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

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

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

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

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

ПолеОбязательноОписание
КонтейнерДаУкажите ранее созданную модель или коллекцию. Если элемент создается из связанного списка, то поле заполняется автоматически.
ПозицияДаУкажите позицию элемента на форме. Элементы выводятся на форму по возрастанию.
Элемент блокаДаВыберите тип элемента. Доступные опции:
  • Начало – используйте этот элемент, чтобы указать начало блока полей. Вы также можете указать заголовок сгруппированных полей. Когда выбран этот тип, появляется поле Заголовок блока.
  • Разделитель – используйте этот элемент, чтобы разделить поля на колонки.
  • Конец – используйте этот элемент, чтобы указать конец блока полей.
Заголовок блокаНетУкажите заголовок группы полей. Заголовок будет отображаться над группой атрибутов на соответствующей странице.
Поле появляется, когда в поле Элемент блока выбран тип Начало.