Creatio development guide
PDF
Документация по разработке
Описание платформы
Это документация Creatio версии 7.13.0. Мы рекомендуем использовать новую версию документации.

Детали

Glossary Item Box

Общие сведения

Детали предназначены для отображения дополнительных данных для основного объекта раздела. Детали раздела отображаются на вкладках страницы раздела в контейнере вкладок.

В зависимости от метода ввода и отображения данных различают следующие типы деталей:

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

Подробное описание деталей в зависимости от их типа представлено в статье "Деталь".

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

Для того чтобы мастер деталей мог корректно работать с созданной разработчиком деталью, ее необходимо зарегистрировать. Для регистрации детали необходимо в таблицу SysDetail добавить запись с указанием заголовка детали, идентификатора схемы детали DetailSchemaUid (колонка UId таблицы SysSchema) и идентификатора схемы объекта детали EntitySchemaUId (колонка UId таблицы SysSchema).

Подробно процесс создания деталей разных типов изложен в разделе "Создание деталей".

Базовая схема детали BaseDetailV2

Все схемы деталей должны быть наследниками базовой схемы детали BaseDetailV2. В схеме реализована базовая логика инициализации данных и общения со страницей редактирования.

Класс базовой схемы детали содержит такие свойства:

Сообщения BaseDetailV2

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

Табл. 1. — Сообщения базовой детали

Название Режим Направление Описание
GetCardState Адресное Публикация Возвращает состояние страницы редактирования.
SaveRecord Адресное Публикация Сообщает странице редактирования о необходимости сохранить данные.
DetailChanged Адресное Публикация Сообщает странице редактирования об изменении данных детали.
UpdateDetail Адресное Подписка Подписка на обновление страницы редактирования.
OpenCard Адресное Публикация Открывает страницу редактирования.

Виды режимов сообщений определены в перечислении Terrasoft.core.enums.MessageMode, а направление сообщений — в перечислении Terrasoft.core.enums.MessageDirectionType. Подробнее о них можно узнать из "JavaScript API клиентской части ядра платформы".

Атрибуты BaseDetailV2

Свойство attributes содержит атрибуты модели представления детали. Атрибуты, определенные в классе базовой детали, представлены в таблице 2.

Табл. 2. — Атрибуты базовой детали

Название Тип Описание
CanAdd BOOLEAN Признак возможности добавления данных.
CanEdit BOOLEAN Признак возможности редактирования данных.
CanDelete BOOLEAN Признак возможности удаления данных.
Collection COLLECTION Коллекция данных детали.
Filter CUSTOM_OBJECT Фильтр детали. Используется для фильтрации данных в детали.
DetailColumnName STRING Имя колонки, по которой выполняется фильтрация.
MasterRecordId GUID Значение ключа родительской записи.
IsDetailCollapsed BOOLEAN Признак свернутости детали.
DefaultValues CUSTOM_OBJECT Значения колонок модели по умолчанию.
Caption STRING Заголовок детали.

Возможные типы данных атрибутов представлены перечислением Terrasoft.DataValueType. Подробнее о типах данных можно узнать из "JavaScript API клиентской части ядра платформы".

Методы BaseDetailV2

Методы, определенные в классе базовой детали, представлены в таблице 3.

Табл. 3. — Методы базовой детали

Название Параметры Описание
init

{Function} callback —функция обратного вызова.

{Object} scope — контекст выполнения метода.

Инициализирует страницу детали.
initProfile Нет Инициализирует профиль схемы. По умолчанию содержит значение Terrasoft.emptyFn.
initDefaultCaption Нет Устанавливает заголовок детали по умолчанию.
initDetailOptions Нет Инициализирует коллекцию данных представления реестра.
subscribeSandboxEvents Нет Подписывается на сообщения, необходимые для работы детали.
getUpdateDetailSandboxTags Нет Генерирует массив тегов для сообщения UpdateDetail.
updateDetail {Object} config — конфигурационный объект, содержащий свойства детали. Обновляет деталь согласно переданным параметрам. По умолчанию содержит значение Terrasoft.emptyFn.
initData

{Function} callback —функция обратного вызова.

{Object} scope — контекст выполнения метода.

Инициализирует коллекцию данных представления реестра.
getEditPageName Нет Возвращает имя страницы редактирования в зависимости от типа выбранной записи (при редактировании) или от выбранного типа записи для добавления (при добавлении).
onDetailCollapsedChanged {Boolean} isCollapsed — признак свернутой/развернутой детали. Обработчик сворачивания или разворачивания детали.
getToolsVisible Нет Возвращает значение свернутости детали.
getDetailInfo Нет Публикует сообщение для получения информации о детали.

Массив модификаций BaseDetailV2

В массиве модификаций diff базовой детали определен только базовый контейнер для представления детали:

diff: /**SCHEMA_DIFF*/[
  // Базовый контейнер для представления детали.
  {
     "operation": "insert",
     "name": "Detail",
     "values": {...}
  }
]/**SCHEMA_DIFF*/

Базовый класс детали с реестром BaseGridDetailV2

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

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

Сообщения BaseGridDetailV2

Основные сообщения схемы BaseGridDetailV2 приведены в таблице 4.

Табл. 4. — Сообщения базовой детали с реестром

Название Режим Направление Описание
getCardInfo Адресное Подписка Возвращает информацию о странице редактирования — значения по умолчанию, название колонки типизации, значение колонки типизации.
CardSaved Широковещательное Подписка Обрабатывает сообщение сохранения страницы редактирования.
UpdateFilter Широковещательное Подписка Обновляет фильтры в детали.
GetColumnsValues Адресное Публикация

Получает значения колонок модели страницы редактирования.

Виды режимов сообщений определены в перечислении Terrasoft.core.enums.MessageMode, а направление сообщений — в перечислении Terrasoft.core.enums.MessageDirectionType. Подробнее о них можно узнать из "JavaScript API клиентской части ядра платформы".

Атрибуты BaseGridDetailV2

Основные атрибуты класса BaseGridDetailV2 приведены в таблице 5.

Табл. 5. — Атрибуты базовой детали с реестром

Название Тип Описание
ActiveRow GUID Значение первичной колонки активной записи реестра.
IsGridEmpty BOOLEAN Признак того, что реестр пуст.
MultiSelect BOOLEAN Признак, разрешен ли множественный выбор.
SelectedRows COLLECTION Массив выбранных записей.
RowCount INTEGER Количество строк в реестре.
IsPageable BOOLEAN Признак активности постраничной загрузки.
SortColumnIndex INTEGER Индекс колонки сортировки.
CardState TEXT Режим открытия страницы редактирования записи.
EditPageUId GUID Уникальный идентификатор страницы редактирования.
ToolsButtonMenu COLLECTION Коллекция выпадающего списка функциональной кнопки.
DetailFilters COLLECTION Коллекция фильтров детали.
IsDetailWizardAvailable BOOLEAN Признак, что мастер детали доступен.

Возможные типы данных атрибутов представлены перечислением Terrasoft.DataValueType. Подробнее о типах данных детали можно узнать из "JavaScript API клиентской части ядра платформы".

Миксины BaseGridDetailV2

Основные миксины, используемые классом BaseGridDetailV2, приведены в таблице 6.

Табл. 6. — Миксины базовой детали с реестром

Название Класс Описание
GridUtilities Terrasoft.GridUtilities Миксин для работы с реестром.
WizardUtilities Terrasoft.WizardUtilities Миксин для работы с мастером деталей.

Подробнее миксин GridUtilities описан ниже.

Методы BaseGridDetailV2

Методы, используемые классом BaseGridDetailV2, приведены в таблице 7.

Табл. 7. — Методы базовой детали с реестром

Название Параметры Описание
init

{Function} callback — функция обратного вызова.

{Object} scope — контекст выполнения метода.

Замещает метод класса BaseDetailV2. Вызывает логику метода init родителя, регистрирует сообщения, инициализирует фильтры.
initData

{Function} callback — функция обратного вызова.

{Object} scope — контекст выполнения метода.

Замещение метода класса BaseDetailV2. Вызывает логику метода initData родительского класса, инициализирует коллекцию данных представления рееестра.
loadGridData Нет Выполняет загрузку данных реестра.
initGridData Нет Выполняет инициализацию значений по умолчанию для работы со списком.
getGridData Нет Возвращает коллекцию реестра.
getFilters Нет Возвращает коллекцию фильтров детали.
getActiveRow Нет Возвращает идентификатор выбранной записи в реестре.
addRecord {String} editPageUId — идентификатор типизированной страницы редактирования. Добавляет новую запись в реестр. Сохраняет страницу редактирования в случае необходимости.
copyRecord {String} editPageUId — идентификатор типизированной страницы редактирования. Копирует запись и открывает страницу редактирования.
editRecord {Object} record — модель записи для редактирования. Открывает страницу редактирования выбранной записи.
subscribeSandboxEvents Нет Подписывается на сообщения, необходимые для работы детали.
updateDetail {Object} config — конфигурационный объект, содержащий свойства детали. Замещение метода класса BaseDetailV2. Вызывает логику метода updateDetail родителя, обновляет деталь.
openCard

{String} operation — тип операции (добавление/редактирование).

{String} typeColumnValue — значение колонки типизации записи.

{String} recordId — идентификатор записи.

Открывает страницу редактирования.
onCardSaved Нет Обрабатывает событие сохранения страницы редактирования, в которой находится деталь.
addToolsButtonMenuItems {Terrasoft.BaseViewModelCollection} toolsButtonMenu — коллекция выпадающего списка функциональной кнопки. Добавляет элементы в коллекцию выпадающего списка функциональной кнопки.
initDetailFilterCollection Нет Инициализирует фильтр детали.
setFilter

{String} key — тип фильтров.

{Object} value — значение фильтров.

Устанавливает значение фильтров детали.
loadQuickFilter {Object} config — параметры загрузки модуля фильтров. Загружает быстрый фильтр.
destroy Нет Очищает данные, выгружает деталь.

Массив модификаций BaseGridDetailV2

В массиве модификаций diff базовой детали определен только базовый контейнер для представления детали:

diff: /**SCHEMA_DIFF*/ [
  {
    // Элемент для отображения реестра.
    "operation": "insert",
    "name": "DataGrid",
    "parentName": "Detail",
    "propertyName": "items",
    "values": {
      "itemType": Terrasoft.ViewItemType.GRID,
      …
    }
  },
  {
    // Кнопка дозагрузки реестра.
    "operation": "insert",
    "parentName": "Detail",
    "propertyName": "items",
    "name": "loadMore",
    "values": {
      "itemType": Terrasoft.ViewItemType.BUTTON,
      …
    }
  },
  {
    // Кнопка добавления записи.
    "operation": "insert",
    "name": "AddRecordButton",
    "parentName": "Detail",
    "propertyName": "tools",
    "values": {
      "itemType": Terrasoft.ViewItemType.BUTTON,
      …
    }
  },
  {
    // Кнопка добавления типизированной записи.
    "operation": "insert",
    "name": "AddTypedRecordButton",
    "parentName": "Detail",
    "propertyName": "tools",
    "values": {
      "itemType": Terrasoft.ViewItemType.BUTTON,
      …
    }
  },
  {
    // Меню детали.
    "operation": "insert",
    "name": "ToolsButton",
    "parentName": "Detail",
    "propertyName": "tools",
    "values": {
      "itemType": Terrasoft.ViewItemType.BUTTON,
      …
    }
  }
] /**SCHEMA_DIFF*/

Миксин GridUtilitiesV2

GridUtilitiesV2 — миксин, реализующий логику работы с элементом управления "реестр". В классе Terrasoft.configuration.mixins.GridUtilities реализованы:

  1. Подписка на сообщения.
  2. Загрузка данных.
  3. Работа с реестром:
    • выбор записей (поиск активных);
    • добавление, удаление, редактирование записей;
    • установка фильтров;
    • сортировка;
    • экспорт в файл;
    • проверка прав доступа к записям реестра.

Методы GridUtilitiesV2

Основные методы класса GridUtilitiesV2 представлены в таблице 8.

Табл. 8. — Методы базовой детали с реестром

Название Параметры Описание
init

Нет

Осуществляет подписку на события.
destroy Нет Очищает подписки на события.
loadGridData Нет Выполняет загрузку данных реестра.
beforeLoadGridData Нет Подготавливает модель представления перед загрузкой данных.
afterLoadGridData Нет Подготавливает модель представления после загрузки данных.
onGridDataLoaded {Object} response — результат выборки данных из БД. Обработчик события загрузки данных. Выполняется, когда сервер возвращает данные.
addItemsToGridData

{Object} dataCollection — коллекция новых элементов.

{Object} options — параметры добавления.

Добавляет коллекцию новых элементов в коллекцию реестра.
reloadGridData Нет Выполняет перезагрузку реестра.
initQueryOptions {Terrasoft.EntitySchemaQuery} esq — запрос, в котором будут инициализированы необходимые настройки. Инициализирует настройки (постраничность, иерархичность) экземпляра запроса.
initQuerySorting {Terrasoft.EntitySchemaQuery} esq — запрос, в котором будут инициализированы необходимые настройки. Инициализирует колонки сортировки.
prepareResponseCollection {Object} collection — коллекция элементов реестра. Модифицирует коллекцию данных перед загрузкой в реестр.
getFilters Нет Возвращает примененные в данной схеме фильтры. Переопределяется в наследниках.
exportToFile Нет Экспортирует содержимое реестра в файл.
sortGrid {String} tag — ключ, указывающий, каким образом пересортировать реестр. Выполняет сортировку в реестре.
deleteRecords Нет Инициирует удаление выбранных записей.
checkCanDelete

{Array} items — идентификаторы выбранных записей.

{Function} callback — Функция обратного вызова.

{Object} scope — Контекст выполнения метода.

Проверяет возможность удаления записи.
onDeleteAccept Нет Выполняет удаление после подтверждения пользователем.
getSelectedItems Нет Возвращает выбранные записи в реестре.
removeGridRecords {Array} records — Удаленные записи. Убирает из реестра удаленные записи.

Деталь с редактируемым реестром

Деталь с редактируемым реестром позволяет пользователю вносить изменения непосредственно в реестре без перехода на страницу редактирования записи. Для того чтобы сделать реестр детали редактируемым, в ее схеме необходимо:

  1. Добавить зависимости от модулей ConfigurationGrid, ConfigurationGridGenerator, ConfigurationGridUtilities.
  2. Подключить миксины ConfigurationGridUtilites и OrderUtilities.
  3. Установить атрибут IsEditable в значение true.
  4. В массив модификаций добавить конфигурационный объект, в котором устанавливаются свойства и выполняется привязка методов-обработчиков событий реестра детали.

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

Модуль ConfigurationGrid

Модуль ConfigurationGrid содержит реализацию элемента управления "Конфигурационный реестр". Класс Terrasoft.ConfigurationGrid является наследником класса Terrasoft.Grid. Основные методы класса Terrasoft.ConfigurationGrid представлены в таблице 9.

Табл. 9. — Методы конфигурационного реестра

Название Параметры Описание
init

Нет

Инициализирует компонент. Осуществляет подписку на события.
activateRow {String|Number} id — идентификатор строки реестра. Выделяет строку и добавляет элементы редактирования.
deactivateRow {String|Number} id — идентификатор строки реестра. Снимает выделение строки и удаляет элементы редактирования.
formatCellContent

{Object} cell — ячейка.

{Object} data — данные.

{Object} column — конфигурация ячейки.

Форматирует данные ячейки строки.
onUpdateItem {Terrasoft.BaseViewModel} item — элемент коллекции. Обработчик события обновления записи.
onDestroy Нет Уничтожает реестр и его компоненты.

Модуль ConfigurationGridGenerator

Класс Terrasoft.ConfigurationGridGenerator генерирует конфигурацию реестра и является наследником класса Terrasoft.ViewGenerator. Методы, реализованные в классе Terrasoft.ConfigurationGridGenerator, представлены в таблице 10.

Табл. 10. — Методы генератора конфигурационного реестра

Название Параметры Описание
addLinks Нет Переопределенный метод класса Terrasoft.ViewGenerator. В редактируемый реестр не будут добавлены ссылки.
generateGridCellValue

{Object} config — конфигурация колонки.

Переопределенный метод класса Terrasoft.ViewGenerator. Генерирует конфигурацию значения в ячейке.

Модуль ConfigurationGridUtilities

Класс Terrasoft.ConfigurationGridUtilities содержит методы инициализации модели представления строки реестра, обработки действий активной записи и обработки горячих клавиш.

Основные свойства класса Terrasoft.ConfigurationGridUtilities представлены в таблице 11, а его методы — в таблице 12.

Табл. 11. — Свойства класса Terrasoft.ConfigurationGridUtilities

Название Тип Описание
currentActiveColumnName String Имя текущей выделенной колонки.
columnsConfig Object Конфигурация колонок.
systemColumns Array Коллекция названий системных колонок.

Табл. 12. — Методы класса Terrasoft.ConfigurationGridUtilities

Название Параметры Описание
onActiveRowAction

{String} buttonTag — Тег выбранного действия.

{String} primaryColumnValue — идентификатор активной записи.

Обрабатывает нажатие действия активной записи.
saveRowChanges

{Object} row — строка реестра.

{Function} [callback] — функция обратного вызова.

{Object} scope — контекст вызова функции обратного вызова.

Сохраняет запись.
activeRowSaved

{Object} row — строка реестра.

{Function} [callback] — функция обратного вызова.

{Object} scope — контекст вызова функции обратного вызова.

Обрабатывает результат сохранения записи.
initActiveRowKeyMap {Array} keyMap — описание событий. Инициализирует подписку на события нажатия кнопок в активной строке.
getCellControlsConfig {Terrasoft.EntitySchemaColumn} entitySchemaColumn — колонка ячейки реестра. Возвращает конфигурацию элементов редактирования ячейки реестра.
copyRow {String} recordId — идентификатор копируемой записи. Копирует и добавляет запись в реестр.
initEditableGridRowViewModel

{Function} [callback] — функция обратного вызова.

{Object} scope — контекст вызова функции обратного вызова.

Инициализирует классы элементов коллекции редактируемого реестра.

© Terrasoft 2002-2019.

Был ли данный материал полезен?

Как можно улучшить эту статью?