Настроить условия отображения поля на странице записи

Средний

Пример. Настроить условия отображения поля Место встречи (Meeting place) на странице активности. Поле отображается для активности категории "Встреча" ("Meeting") (т. e. в поле Категория (Category) выбрано значение "Встреча" ("Meeting")).

1. Создать схему замещающего объекта 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Замещающий объект (Add —> Replacing object).

  3. Заполните свойства схемы.

    • Код (Code) — "Activity".
    • Заголовок (Title) — "Активность" ("Activity").
    • Родительский объект (Parent object) — выберите "Activity".
  4. В схему добавьте колонку.

    1. В контекстном меню узла Колонки (Columns) структуры объекта нажмите add_button.
    2. В выпадающем меню нажмите Строка —> Строка (250 символов) (Text —> Text (250 characters)).

    3. Заполните свойства добавляемой колонки.

      • Код (Code) — "UsrMeetingPlace".
      • Заголовок (Title) — "Место встречи" ("Meeting place").
  5. На панели инструментов дизайнера объектов нажмите Сохранить (Save), а затем Опубликовать (Publish).

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

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Замещающая модель представления (Add —> Replacing view model).

  3. Заполните свойства схемы.

    • Код (Code) — "ActivityPageV2".
    • Заголовок (Title) — "Cтраница редактирования активности" ("Activity edit page").
    • Родительский объект (Parent object) — выберите "ActivityPageV2".
  4. Добавьте локализуемую строку.

    1. В контекстном меню узла Локализуемые строки (Localizable strings) нажмите кнопку scr_add_button.png.
    2. Заполните свойства локализуемой строки.

      • Код (Code) — "MeetingPlaceCaption".
      • Значение (Value) — "Место встречи" ("Meeting place").
    3. Для добавления локализуемой строки нажмите Добавить (Add).
  5. В объявлении класса модели представления в качестве зависимостей добавьте модули BusinessRuleModule и ConfigurationConstants.
  6. Реализуйте условия отображения поля.

    1. В свойство rules для колонки UsrMeetingPlace:

      1. В свойстве ruleType укажите значение BINDPARAMETER, которое задает тип бизнес-правила. Типы правил представлены перечислением BusinessRuleModule.enums.RuleType.
      2. В свойстве property укажите значение VISIBLE, которое устанавливает видимость колонки. Свойства бизнес-правила BINDPARAMETER представлены перечислением BusinessRuleModule.enums.Property.
      3. В массиве conditions укажите условия выполнения бизнес-правила. Значение колонки ActivityCategory должно быть равно конфигурационной константе ConfigurationConstants.Activity.ActivityCategory.Meeting, которая содержит идентификатор записи "Встреча" ("Meeting") справочника Категории активностей (Activity categories).
    2. В массив модификаций diff добавьте конфигурационный объект с настройками расположения поля Место встречи (Meeting place).

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

    ActivityPageV2
    /* В качестве зависимостей укажите модули BusinessRuleModule и ConfigurationConstants. */
    define("ActivityPageV2", ["BusinessRuleModule", "ConfigurationConstants"],
        function(BusinessRuleModule, ConfigurationConstants) {
            return {
                /* Название схемы объекта страницы записи. */
                entitySchemaName: "Activity",
                /* Отображение поля на странице записи. */
                diff: /**SCHEMA_DIFF*/[
                /* Метаданные для добавления на страницу записи поля [UsrMeetingPlace]. */
                    {
                        /* Выполняется операция добавления элемента на страницу. */
                        "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] модели представления. */
                    "UsrMeetingPlace": {
                        /* Зависимость видимости поля [UsrMeetingPlace] от значения в поле [ActivityCategory]. */
                        "BindParametrVisibilePlaceByType": {
                            /* Тип правила BINDPARAMETER. */
                            "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                            /* Правило регулирует свойство VISIBLE. */
                            "property": BusinessRuleModule.enums.Property.VISIBLE,
                            /* Массив условий для срабатывания правила. Определяет равно ли значение в колонке [ActivityCategory] значению "Встреча". */
                            "conditions": [{
                                /* Выражение левой части условия. */
                                "leftExpression": {
                                    /* Тип выражения — атрибут (колонка) модели представления. */
                                    "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                    /* Название колонки модели представления, значение которой сравнивается в выражении. */
                                    "attribute": "ActivityCategory"
                                },
                                /* Тип операции сравнения — равно. */
                                "comparisonType": Terrasoft.ComparisonType.EQUAL,
                                /* Выражение правой части условия. */
                                "rightExpression": {
                                    /* Тип выражения — константное значение. */
                                    "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                    /* Значение, с которым сравнивается выражение левой части. */
                                    "value": ConfigurationConstants.Activity.ActivityCategory.Meeting
                                }
                            }]
                        }
                    }
                }
            };
        });
    
  7. На панели инструментов дизайнера нажмите Сохранить (Save).

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера:

  1. Обновите страницу раздела Активности (Activities).
  2. При необходимости, в поле Категория (Category) страницы активности выберите значение "Встреча" ("Meeting")).

 

В результате выполнения примера поле Место встречи (Meeting place) отображается для активности категории "Встреча" ("Meeting").

Поле Место встречи (Meeting place) не отображается для другой категории активности (например, "Выполнить" ("To do")).