Creatio development guide

Создание пользовательской детали с полями

Glossary Item Box

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

Деталь с полями – деталь, которая может включать несколько групп полей редактирования. Базовая деталь с полями реализована в схеме BaseFieldsDetail пакета BaseFinance, доступного в банковских продуктах bpm'online — bank customer journey, bank sales и lending. Модель представления записи детали реализована в схеме BaseFieldRowViewModel.

Базовая деталь с полями позволяет выполнять следующие действия:

  • Добавлять записи на деталь без сохранения страницы, на которой эта деталь размещена.
  • Работать с деталью как со страницей редактирования.
  • Использовать базовую валидацию полей с возможностью добавления пользовательской.
  • Добавлять виртуальную запись.
  • Расширять логику поведения записей.

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

Описание кейса

Реализовать пользовательскую деталь с полями для регистрации документов. На деталь должны добавляться записи с полями [Номер]([Number]) и [Серия]([Series]) документа. Деталь разместить на вкладке [История]([History]) страницы редактирования контакта (физ. лица).

Алгоритм реализации кейса

1. Создать схему объекта детали

Для этого необходимо в пользовательском пакете создать новую схему объекта со следующими значениями свойств (рис. 1):

  • [Заголовок] ([Title]) — "Регистрационный документ" ("Registration document").
  • [Название] ([Name]) — "UsrRegDocument".
  • [Пакет] ([Package]) — пакет, в котором схема объекта будет размещена после публикации. По умолчанию содержит название пакета, выбранного перед созданием схемы. Значение может быть изменено на любое из выпадающего списка.
  • [Родительский объект] ([Parent object]) — "Базовый объект" ("Base object"), реализованный в пакете Base.

Рис. 1. — Свойства схемы объекта детали с полями

В структуру объекта необходимо добавить три колонки, свойства которых приведены в таблице 1. Как добавить колонку в схему объекта подробно описано в статье "Создание схемы объекта".

Табл. 1. — Свойства колонок схемы объекта детали UsrRegDocument

Заголовок (Title) Название (Name) Тип данных (Data Type)
Контакт (Contact) UsrContact Справочник (Lookup)
Серия (Series) UsrSeries Строка (50 символов) (Text (50 characters))
Номер (Number) UsrNumber Целое (Integer)

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

2. Создать схему модели представления пользовательской детали с полями

Для этого необходимо в пользовательском пакете добавить клиентскую схему [Схема модели представления детали с полями] ([Schema of the Detail View Model with Fields]) (рис. 2).

Рис. 2. — Добавление клиентской схемы модели представления детали с полями

Для созданной схемы необходимо установить следующие значения свойств (рис. 3):

  • [Заголовок] ([Title]) — "Регистрационные документы" ("Registration documents").
  • [Название] ([Name]) — "UsrRegDocumentFieldsDetail".
  • [Пакет] ([Package]) — пакет, в котором схема объекта будет размещена после публикации. По умолчанию содержит название пакета, выбранного перед созданием схемы. Значение может быть изменено любым из выпадающего списка.
  • [Родительский объект] ([Parent object]) — "Базовая деталь с полями" ("Base fields detail"), реализованная в пакете BaseFinance.

Рис. 3. — Свойства клиентской схемы UsrRegDocumentFieldsDetail

Свойству [Значение] ([Value]) локализуемой строки [Caption] необходимо присвоить значение "Регистрационные документы" ("Registration documents") (рис. 4).

Рис. 4. — Свойства локализуемой строки

В исходном коде схемы необходимо создать описание модуля и переопределить в нем базовый метод getDisplayColumns(), возвращающий массив с названиями колонок, отображающихся как поля в детали. По умолчанию этот метод возвращает все обязательные колонки и колонку, которая отмечена признаком [Отображаемое значение] в схеме объекта.

Исходный код схемы:

define("UsrRegDocumentFieldsDetail", [],
    function() {
        return {
            entitySchemaName: "UsrRegDocument",
            diff: /**SCHEMA_DIFF*/ [], /**SCHEMA_DIFF*/
            methods: {
                getDisplayColumns: function() {
                    return ["UsrSeries", "UsrNumber"];
                }
            }
        };
    });

Для применения изменений схему необходимо сохранить.

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

Для этого необходимо создать замещающую схему страницы редактирования контакта (ContactPageV2). Основные свойства замещающей схемы (рис. 5):

  • [Заголовок] ([Title]) — "Схема отображения карточки физ. лица" ("Display schema - Contact card").
  • [Название] ([Name]) — "ContactPageV2".
  • [Пакет] ([Package]) — пакет, в котором схема объекта будет размещена после публикации. По умолчанию содержит название пакета, выбранного перед созданием схемы. Значение может быть изменено любым из выпадающего списка.
  • [Родительский объект] ([Parent object]) — "Схема отображения карточки физ. лица" ("Display schema - Contact card"), реализованная в пакете UIv2.

Рис. 5. — Свойства замещающей схемы ContactPageV2

В исходном коде схемы необходимо:

Исходный код схемы:

define("ContactPageV2", [], function() {
    return {
        entitySchemaName: "Contact",
        details: /**SCHEMA_DETAILS*/ {
            // Добавление детали с полями.
            "UsrRegDocumentFieldsDetail": {
                // Название клиентской схемы детали.
                "schemaName": "UsrRegDocumentFieldsDetail",
                // Фильтрация записей детали текущего контакта (физ. лица).
                "filter": {
                    // Колонка объекта детали.
                    "detailColumn": "UsrContact",
                    // Колонка идентификатора контакта.
                    "masterColumn": "Id"
                }
            }
        } /**SCHEMA_DETAILS*/ ,
        diff: /**SCHEMA_DIFF*/ [{
            // Добавление нового элемента.
            "operation": "insert",
            // Название элемента.
            "name": "UsrRegDocumentFieldsDetail",
            // Конфигурационный объект значений.
            "values": {
                // Тип элемента.
                "itemType": Terrasoft.ViewItemType.DETAIL
            },
            // Имя элемента-контейнера.
            "parentName": "HistoryTab",
            // Имя свойства элемента-контейнера, 
            // содержащего коллекцию вложенных элементов.
            "propertyName": "items",
            // Индекс добавляемого в коллекцию элемента.
            "index": 0
        }] /**SCHEMA_DIFF*/
    };
});

Для применения изменений схему необходимо сохранить.

В результате выполнения кейса на вкладке [История]([History]) страницы редактирования контакта (физ. лица) появится пользовательская деталь с полями [Регистрационные документы] ([Registration documents]) (рис. 6).

Рис. 6. — Результат выполнения кейса

ВАЖНО

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

© Terrasoft 2002-2018.

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

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