Creatio development guide
PDF
Разработка в bpm'online на примерах
Конфигурирование страницы

Пример применения правила FILTRATION

Glossary Item Box

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

Правило FILTRATION используется для настройки фильтрации справочной колонки модели представления в зависимости от значения другой колонки. Подробно бизнес-правила описаны в статье "Бизнес-правила и их применение".

К СВЕДЕНИЮ

В bpm'online реализована возможность настраивать бизнес-правила не только средствами разработки, но и с помощью мастера разделов. Подробнее об этом можно прочитать в статье "Настройка бизнес-правил".

Описание примера

Добавить на страницу контакта поля [Страна], [Область/Штат] и [Город]. При выборе определенной страны список областей должен быть отфильтрован по выбранной стране. При выборе определенной области список городов должен отображать города только из выбранной области. При выборе определенного города поля страны и области должны заполняться соответствующими городу значениями.

К СВЕДЕНИЮ

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

Исходный код

Пакет с реализацией примера можно скачать по ссылке.

Алгоритм реализации примера

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

Создайте замещающий клиентский модуль, в котором в качестве родительского объекта укажите схему [Схема отображения карточки контакта] ([Display schema — Contact card]) (рис. 1). Процесс создания замещающей страницы описан в статье "Создание клиентской схемы".

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

2. Добавить поля [Страна], [Область/штат] и [Город] на страницу редактирования.

Добавьте в массив diff три конфигурационных объекта с настройками свойств соответствующих полей.

3. Добавить правила с типом FILTRATION для колонок [Город] и [Область/штат]

Добавьте в свойство rules модели представления страницы два правила с типом BusinessRuleModule.enums.RuleType.FILTRATION для колонок [City] и [Region]. Для выполнения обратной фильтрации, т.е. автозаполнения полей [Страна] и [Область/Штат] соответствующими значениями в зависимости от выбранного города необходимо установить значение true для свойства autocomplete.

Исходный код замещающей схемы:

// В список зависимостей модуля добавить модуль BusinessRuleModule.
define("ContactPageV2", ["BusinessRuleModule"],
    function(BusinessRuleModule) {
        return {
            // Название схемы объекта страницы редактирования.
            entitySchemaName: "Contact",
            // Свойство, содержащее коллекцию бизнес-правил схемы модели представления страницы.
            rules: {
                // Набор правил для колонки [City] модели представления.
                "City": {
                    // Правило фильтрации колонки [City] по значению колонки [Region].
                    "FiltrationCityByRegion": {
                        // Тип правила FILTRATION. 
                        "ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
                        // Будет выполняться обратная фильтрация.
                        "autocomplete": true,
                        // Будет выполняться очистка значения при изменении значения колонки [Region].
                        "autoClean": true,
                        // Путь к колонке для фильтрации в справочной схеме [City],
                        // на которую ссылается колонка [City] модели представления
                        // страницы редактирования.
                        "baseAttributePatch": "Region",
                        // Тип операции сравнения в фильтре.
                        "comparisonType": Terrasoft.ComparisonType.EQUAL,
                        // В качестве значения при сравнении выступает колонка (атрибут)
                        // модели представления.
                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                        // Имя колонки модели представления страницы редактирования,
                        // по значению которой будет выполняться фильтрация.
                        "attribute": "Region"
                    }
                },
                // Набор правил для колонки [Region] модели представления.
                "Region": {
                    "FiltrationRegionByCountry": {
                        "ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
                        "autocomplete": true,
                        "autoClean": true,
                        "baseAttributePatch": "Country",
                        "comparisonType": Terrasoft.ComparisonType.EQUAL,
                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                        "attribute": "Country"
                    }
                }
            },
            // Настройка визуализации полей [Страна], [Область/штат] и [Город] на странице редактирования.
            diff: [
                // Метаданные для добавления поля [Страна].
                {
                    "operation": "insert",
                    "parentName": "ProfileContainer",
                    "propertyName": "items",
                    "name": "Country",
                    "values": {
                        "contentType": Terrasoft.ContentType.LOOKUP,
                        "layout": {
                            "column": 0,
                            "row": 6,
                            "colSpan": 24
                        }
                    }
                },
                // Метаданные для добавления поля [Область/штат].
                {
                    "operation": "insert",
                    "parentName": "ProfileContainer",
                    "propertyName": "items",
                    "name": "Region",
                    "values": {
                        "contentType": Terrasoft.ContentType.LOOKUP,
                        "layout": {
                            "column": 0,
                            "row": 7,
                            "colSpan": 24
                        }
                    }
                },
                // Метаданные для добавления поля [Город].
                {
                    "operation": "insert",
                    "parentName": "ProfileContainer",
                    "propertyName": "items",
                    "name": "City",
                    "values": {
                        "contentType": Terrasoft.ContentType.LOOKUP,
                        "layout": {
                            "column": 0,
                            "row": 8,
                            "colSpan": 24
                        }
                    }
                }
            ]
        };
    });

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

После сохранения схемы и обновления веб-страницы приложения в профиле контакта появятся три новых поля (рис. 2). В каждом из них содержимое будет фильтроваться в зависимости от значения, выбранного в другом (рис. 3). При этом фильтрация также работает в окне выбора значения из справочника (рис. 4).

Рис. 2. — Новые поля в профиле контакта

Рис. 3. — Фильтрация содержимого полей

Рис. 4. — Отфильтрованные области в окне выбора

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

© Terrasoft 2002-2019.

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

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