Правило 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]) отображено
Смотрите также:
- Бизнес-правила и их применение
- Правило BINDPARAMETER. Как заблокировать поле на странице редактирования по определенному условию
- Правило BINDPARAMETER. Как сделать поле обязательным для заполнения по определенному условию
- Пример применения правила FILTRATION
- Бизнес-правила, созданные с помощью мастеров