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

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

Glossary Item Box

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

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

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

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

К СВЕДЕНИЮ

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

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

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

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

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

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

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

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

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

Исходый код замещающей схемы модели представления страницы редактирования контакта:

// В список зависимостей модуля добавить модуль BusinessRuleModule.
define("ContactPageV2", ["BusinessRuleModule", "ConfigurationConstants"],
    function(BusinessRuleModule, ConfigurationConstants) {
        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). При этом фильтрация также работает в окне выбора значения из справочника (рис. 3).

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

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

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

© Terrasoft 2002-2017.

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

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