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

Правило 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.

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

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