Документация

Документация по разработке bpm’online
PDF
Множественное добавление записей на деталь

Glossary Item Box

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

Обычно деталь позволяет добавлять только одну запись. С помощью миксина LookupMultiAddMixin можно осуществлять множественное добавление записей на деталь.

Миксин — это класс-примесь, предназначенный для расширения функциональности других классов. Боле подробно миксины описаны в статье "Миксины. Свойство mixins".

Миксин LookupMultiAddMixin предназначен для расширения схем деталей. Он позволяет расширить действие добавления записи на деталь, предоставляя пользователю возможность выбирать несколько записей из справочника одновременно. 

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

1. Создать замещающую схему для детали.

2. Использовать методы миксина с замещением базовых методов детали.

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

Реализовать возможность множественного добавления записей на деталь [Контакты] на странице редактирования записей раздела [Продажи].

Алгоритм выполнения кейса

1. Создать замещающую схему модели представления детали

Для этого необходимо в пользовательском пакете создать замещающий клиентский модуль (рис. 1). Процесс создания замещающей схемы страницы подробно описан в статье "Создание клиентской схемы".

Рис. 1. — Добавление замещающего клиентского модуля

 

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

Рис. 2. — Добавление замещающего клиентского модуля

2. Использовать методы миксина с замещением базовых методов детали

Для использования миксина LookupMultiAddMixin в схеме, его необходимо добавить в свойстве mixins и инициализировать в переопределенном методе init() схемы. Подробная информация о переопределении метода init() доступна в статье "Принципы модульной разработки в bpm'online".

Также для реализации необходимой функциональности нужно переопределить методы отображения кнопки добавления getAddRecordButtonVisible(), сохранения страницы детали onCardSaved() и добавления записи на деталь addRecord().

В методах сохранения страницы детали и добавления записи используется метод вызова справочного окна для множественного выбора openLookupWithMultiSelect() и связанный с ним метод getMultiSelectLookupConfig(), выполняющий конфигурирование справочного окна. Описание и основные параметры этих методов приведены в таблице 1.

Табл. 1. — Методы вызова и конфигурирования справочного окна

Метод Описание
openLookupWithMultiSelect(isNeedCheckOfNew) Открывает окно справочника с множественным выбором. Параметр isNeedCheckOfNew {bool} указывает на необходимость выполнять проверку является ли запись новой.
getMultiSelectLookupConfig()

Возвращает объект конфигурации для справочного окна. Свойства объекта:

rootEntitySchemaName — корневая схема объекта;

rootColumnName — связующая колонка, указывающая на запись корневой схемы;

relatedEntitySchemaName — связанная схема;

relatedColumnName — колонка, указывающая на запись связанной схемы.

В этом примере справочное окно будет использовать данные из таблицы OpportunityContact, используя колонки Opportunity и Contact

Полностью исходный код схемы модели представления детали:

define("OpportunityContactDetailV2", ["LookupMultiAddMixin"], function() {
    return {
        mixins: {
            // Подключение миксина к схеме.
            LookupMultiAddMixin: "Terrasoft.LookupMultiAddMixin"
        },
        methods: {
            // Переопределение базового метода инициализации схемы.
            init: function() {
                this.callParent(arguments);
                //Инициализация миксина.
                this.mixins.LookupMultiAddMixin.init.call(this);
            },
            // Переопределение базового метода отображения кнопки добавления.
            getAddRecordButtonVisible: function() {
                //Отображать кнопку добавления если деталь развернута, даже если для детали не реализована страница редактирования.
                return this.getToolsVisible();
            },
            // Переопределение базового метода.
            // Обработчик события сохранения страницы редактирования детали.
            onCardSaved: function() {
                // Открывает справочное окно с множественным выбором записей.
                this.openLookupWithMultiSelect();
            },
            // Переопределение базового метода добавления записи на деталь.
            addRecord: function() {
                // Открывает справочное окно с множественным выбором записей.
                this.openLookupWithMultiSelect(true);
            },
            // Метод, возвращающий конфигурационный объект для справочного окна.
            getMultiSelectLookupConfig: function() {
                return {
                    // Корневая схема — [Продажа].
                    rootEntitySchemaName: "Opportunity",
                    // Колонка корневой схемы.
                    rootColumnName: "Opportunity",
                    // Связанная схема — [Контакт].
                    relatedEntitySchemaName: "Contact",
                    // Колонка связанной схемы.
                    relatedColumnName: "Contact"
                };
            }
        }
    };
});

После сохранения схемы и обновления страницы приложения в браузере (с очисткой кеша) у пользователя по нажатию на кнопку добавления записи на деталь (рис. 3) появится возможность выбрать не одну, а несколько записей из справочника (рис. 4). После подтверждения все выбранные записи будут добавлены на деталь [Контакты] на странице редактирования записей раздела [Продажи] (рис.5).

Рис. 3. — Добавление новых записей на деталь

Рис. 4. — Выбор необходимых записей из справочника

Рис. 5. — Результат выполнения кейса. Все выбранные записи добавлены на деталь

 

 

© Terrasoft 2002-2017.

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

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