Creatio development guide
PDF
Документация по разработке
Разработка в bpm'online на примерах
Конфигурирование страницы
Это документация Creatio версии 7.13.0. Мы рекомендуем использовать новую версию документации.

Правило BINDPARAMETER. Как скрыть поле на странице редактирования по определенному условию

Glossary Item Box

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

Правило BINDPARAMETER используется для решения следующих задач:

  • скрыть или отобразить поле;
  • заблокировать или разблокировать поле;
  • сделать поле обязательным или необязательным для заполнения.

Подробно бизнес-правила описаны в статье "Бизнес-правила и их применение".

К СВЕДЕНИЮ

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

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

Добавить на страницу редактирования активности новое поле [Место встречи] ([Meeting place]), которое будет отображаться только для активностей категории "Встреча" ("Meeting").

К СВЕДЕНИЮ

Добавление поля на страницу редактирования может быть реализовано двумя способами — с помощью Мастера разделов и вручную.

Процесс добавления поля на страницу редактирования описан в статье "Добавление нового поля".

Исходный код

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

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

1. Создать замещающий объект и добавить в него новую колонку

Создайте замещающий объект [Активность] ([Activity]) и добавьте в него новую колонку [Место встречи] ([Meeting place]) типа "строка" (рис. 1). Процесс создания замещающего объекта описан в статье "Создание схемы объекта".

Рис. 1. — Добавление пользовательской колонки в замещающий объект

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

Создайте замещающий клиентский модуль, в котором в качестве родительского объекта укажите схему [Cтраница редактирования активности] ([Activity edit page]) (рис. 2). Процесс создания замещающей страницы описан в статье "Создание клиентской схемы".

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

3. Добавить новое поле на страницу редактирования активности.

Добавьте в массив diff конфигурационный объект с настройками расположения поля [Место встречи] ([Meeting place]) на странице. Добавление поля подробно рассмотрено в статье "Добавление нового поля".

Для возможности локализации приложения, создайте локализуемую строку (рис. 3) и свяжите ее с заголовком поля.

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

4. В свойство rules модели представления страницы добавить правило

Добавьте в свойство rules модели представления страницы правило BINDPARAMETER для колонки UsrMeetingPlace. Свойству property правила установите значение BusinessRuleModule.enums.Property.VISIBLE. В массив conditions добавьте условие выполнения правила — значение колонки ActivityCategory модели должно быть равно конфигурационной константе ConfigurationConstants.Activity.ActivityCategory.Meeting.

К СВЕДЕНИЮ

Конфигурационная константа ConfigurationConstants.Activity.ActivityCategory.Meeting содержит идентификатор записи "Встреча" справочника [Категория активности].

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

// В список зависимостей модуля добавить модуль BusinessRuleModule и ConfigurationConstants.
define("ActivityPageV2", ["BusinessRuleModule", "ConfigurationConstants"],
    function(BusinessRuleModule, ConfigurationConstants) {
        return {
            // Название схемы объекта страницы редактирования.
            entitySchemaName: "Activity",
            // Отображение нового поля на странице редактирования.
            diff: /**SCHEMA_DIFF*/[
                // Метаданные для добавления поля [Место встречи].
                {
                    // Операция добавления компонента на страницу.                
                    "operation": "insert",
                    // Мета-имя родительского контейнера, в который добавляется поле.
                    "parentName": "Header",
                    // Поле добавляется в коллекцию компонентов
                    // родительского элемента.
                    "propertyName": "items",
                    // Имя колонки схемы, к которой привязан компонент.
                    "name": "UsrMeetingPlace",
                    "values": {
                        // Заголовок поля.
                        "caption": {"bindTo": "Resources.Strings.MeetingPlaceCaption"},
                        // Расположение поля.
                        "layout": { "column": 0, "row": 5, "colSpan": 12 }
                    }
                }
            ]/**SCHEMA_DIFF*/,
            // Правила модели представления страницы редактирования.
            rules: {
                // Набор правил для колонки [Место встречи] модели представления. 
                "UsrMeetingPlace": {
                    // Зависимость видимости поля [Место встречи] от значения в поле [Категория].
                    "BindParametrVisibilePlaceByType": {
                        // Тип правила BINDPARAMETER.
                        "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                        // Правило регулирует свойство VISIBLE.
                        "property": BusinessRuleModule.enums.Property.VISIBLE,
                        // Массив условий, при выполнении которых срабатывает правило.
                        // Определяет равно ли значение в колонке [Категория] значению "Встреча".
                        "conditions": [{
                            // Выражение левой части условия.
                            "leftExpression": {
                                //Тип выражения — атрибут (колонка) модели представления.
                                "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                // Название колонки модели представления, значение которой сравнивается в выражении.
                                "attribute": "ActivityCategory"
                            },
                            // Тип операции сравнения.
                            "comparisonType": Terrasoft.ComparisonType.EQUAL,
                            // Выражение правой части условия.
                            "rightExpression": {
                                // Тип выражения — константное значение.
                                "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                // Значение, с которым сравнивается выражение левой части.
                                "value": ConfigurationConstants.Activity.ActivityCategory.Meeting
                            }
                        }]
                    }
                }
            }
        };
    });

После сохранения схемы и обновления веб-страницы приложения на странице редактирования активности поле [Место встречи] ([Meeting place]) будет отображаться только в том случае, если категория активности — "Встреча" ("Meeting") (рис.4, 5).

Рис. 4. — Результат выполнения примера. Тип активности — "Выполнить" ("To do"), поле [Место встречи] ([Meeting place]) скрыто

Рис. 5. — Результат выполнения примера. Тип активности — "Встреча" ("Meeting"), поле [Место встречи] ([Meeting place]) отображено

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

© Terrasoft 2002-2019.

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

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