Creatio development guide
Это документация Creatio версии 7.8.0. Мы рекомендуем использовать новую версию документации.

Как добавить действие раздела: обработка выбора нескольких записей

Glossary Item Box

Режим выбора нескольких записей

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

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

Для раздела [Заказы] реализовать действие, которое в информационном окне будет отображать контрагентов нескольких выбранных в реестре заказов.

К СВЕДЕНИЮ

Значение первичных колонок выбранных записей хранится в свойстве SelectedRows модели представления раздела. Эти значения могут быть использованы для получения значений других полей выбранных объектов, например, из коллекции данных списочного реестра, которая хранится в свойстве GridData модели представления реестра.

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

1. В пользовательском пакете создать замещающую страницу раздела [Заказы]

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

Рис. 1. — Свойства замещающей страницы раздела [Заказы]

2. В коллекцию локализуемых строк замещающей схемы раздела добавить строку с заголовком пункта меню [Действия]

Для этого, щелкнув правой кнопкой по узлу структуры [LocalizableStrings], выбрать [Добавить] (рис. 2).

Рис. 2 — Добавление в схему локализируемой строки

Для созданной строки заполнить следующие свойства (рис. 3):

Рис. 3. — Свойства пользовательской локализованной строки

  • [Название] — "AccountSectionAction";
  • [Заголовок] — "AccountSectionAction";
  • [Значение] — "Отобразить контрагентов по выбранным заказам".

3. В коллекцию методов модели представления раздела добавить реализацию методов

  • isCustomActionEnabled() — определяет доступность добавленного пункта меню;
  • ShowOrdersInfo() — метод-обработчик действия, который отображает в информационном окне список контрагентов выбранных заказов;
  • getSectionActions() — переопределенный метод родительской схемы, возвращающий коллекцию действий раздела.

Для этого на вкладку исходного кода схемы нужно добавить следующее:

define("OrderSectionV2", ["OrderConfigurationConstants"],
    function(OrderConfigurationConstants) {
    return {
        // Название схемы раздела.
        entitySchemaName: "Order",
        // Коллекция методов модели представления раздела.
        methods: {
            // Метод определяет будет ли доступен пункт меню. 
            isCustomActionEnabled: function() {
                // Попытка получить массив идентификаторов выбранных записей.
                var selectedRows = this.get("SelectedRows");
                // Если массив содержит элементы (т.е. выбрана хотя бы одна запись в реестре),
                // то возвращает true, иначе — false.
                return selectedRows ? (selectedRows.length > 0) : false;
            },
            // Метод-обработчик действия, который отображает в информационном окне список контрагентов.
            showOrdersInfo: function() {
                // Получение массива значений первичных колонок выбранных записей.
                var selectedRows = this.get("SelectedRows");
                // Получение коллекции данных записей реестра.
                var gridData = this.get("GridData");
                // Переменная для хранения модели объекта выбранного заказа. 
                var selectedOrder = null;
                // Переменная для хранения названия контрагента выбранного заказа.
                var selectedOrderAccount = "";
                // Переменная для формирования текста с названиями контрагентов выбранных записей.
                var infoText = "";
                // Обработка массива значений первичных колонок выбранных записей реестра.
                selectedRows.forEach(function(selectedRowId) {
                    // Получение модели объекта выбранного заказа.
                    selectedOrder = gridData.get(selectedRowId);
                    // Получение названия контрагента выбранного заказа.
                    selectedOrderAccount = selectedOrder.get("Account").displayValue;
                    // Добавление названия контрагента в строку, которая будет отображена в информационном окне.
                    infoText += "\n" + selectedOrderAccount;
                });
                // Вызов стандартного системного метода для отображения информационного окна.
                this.showInformationDialog(infoText);
            },
            // Перегрузка базового виртуального метода, возвращающего коллекцию действий раздела.
            getSectionActions: function() {
                // Вызывается родительская реализация метода,
                // возвращающая коллекцию проинициализированных действий базового раздела. 
                var actionMenuItems = this.callParent(arguments);
                // Добавление линии сепаратора для визуального отделения пользовательского действия от списка 
                // действий базового раздела.
                actionMenuItems.addItem(this.getButtonMenuItem({
                    Type: "Terrasoft.MenuSeparator",
                    Caption: ""
                }));
                // Добавление пункта меню в список действий раздела.
                actionMenuItems.addItem(this.getButtonMenuItem({
                    // Привязка заголовка пункта меню к локализуемой строке схемы.
                    "Caption": {bindTo: "Resources.Strings.AccountsSectionAction"},
                    // Привязка метода-обработчика действия.
                    "Click": {bindTo: "showOrdersInfo"},
                    // Привязка свойства доступности пункта меню к значению, которое возвращает метод isCustomActionEnabled.
                    "Enabled": {bindTo: "isCustomActionEnabled"}
                }));
                return actionMenuItems;
            }
        }
    };
});

4. Сохранить созданную замещающую схему

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

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

Смотрите также:

© Terrasoft 2002-2016.

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

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