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

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

Glossary Item Box

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

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

К СВЕДЕНИЮ

Обращение к выделенной записи выполняется через атрибут модели представления раздела ActiveRow, который возвращает значение первичной колонки выделенной записи. Далее это значение может использоваться для получения значений других полей выбранного объекта, например, из коллекции данных списочного реестра, которая хранится в свойстве GridData модели представления реестра.

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

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

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

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

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

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

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

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

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

  • [Название] — "CreationDateActionCaption";
  • [Заголовок] — "CreationDateActionCaption";
  • [Значение] — "Показать дату создания заказа".

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

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

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

define("OrderSectionV2", ["OrderConfigurationConstants"],
    function(OrderConfigurationConstants) {
    return {
        // Название схемы объекта раздела.
        entitySchemaName: "Order",
        // Коллекция методов модели представления раздела.
        methods: {
            // Метод, проверяющий на какой стадии находится заданный заказ.
            // В качестве параметра передается значение первичной колонки выделенной записи реестра.
            isRunning: function(activeRowId) {
                // Получение коллекции данных списочного представления реестра раздела.
                var gridData = this.get("GridData");
                // Получение модели выбранного заказа по заданому значению первичной колонки.
                var selectedOrder = gridData.get(activeRowId);
                // Получение свойства модели — статуса выбранного заказа.
                var selectedOrderStatus = selectedOrder.get("Status");
                // Значение статуса выбранного заказа сравнивается со значением типа "Исполнение"
                //  и в зависимости от результата сравнения метод возвращает true или false.
                return selectedOrderStatus.value === OrderConfigurationConstants.Order.OrderStatus.Running;
            },
            // Метод определяет, будет ли доступен пункт меню. 
            isCustomActionEnabled: function() {
                // Попытка получения идентификатора активной записи.
                var activeRowId = this.get("ActiveRow");
                // Если индентификатор определен, т.е.запись в реестре выбрана, и статус выбранного заказа
                // "Исполнение", то возвращается true, иначе — false.
                return activeRowId ? this.isRunning(activeRowId) : false;
            },
            // Метод-обработчик действия, который отображает в информационном окне дату создания заказа.
            showOrderInfo: function() {
                var activeRowId = this.get("ActiveRow");
                var gridData = this.get("GridData");
                // Получение даты создания заказа. 
                var dueDate = gridData.get(activeRowId).get("Date");
                // Вызов стандартного системного метода для отображения информационного окна.
                this.showInformationDialog(dueDate);
            },
            // Перегрузка базового виртуального метода, возвращающего коллекцию действий раздела.
            getSectionActions: function() {
                // Вызывается родительская реализация метода для получения коллекции
                // проинициализированных действий базового раздела.
                var actionMenuItems = this.callParent(arguments);
                // Добавление линии-сепаратора для визуального отделения пользовательского действия 
                //от списка действий базового раздела.
                actionMenuItems.addItem(this.getButtonMenuItem({
                    Type: "Terrasoft.MenuSeparator",
                    Caption: ""
                }));
                // Добавление пункта меню в список действий раздела.
                actionMenuItems.addItem(this.getButtonMenuItem({
                    // Привязка заголовка пункта меню к локализуемой строке схемы.
                    "Caption": {bindTo: "Resources.Strings.CreationDateActionCaption"},
                    // Привязка метода обработчика действия.
                    "Click": {bindTo: "showOrderInfo"},
                    // Привязка свойства доступности пункта меню к значению, которое возвращает метод isCustomActionEnabled.
                    "Enabled": {bindTo: "isCustomActionEnabled"}
                }));
                return actionMenuItems;
            }
        }
    };
});

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

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

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

© Terrasoft 2002-2016.

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

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