Публикация

Изменение видимости детали в зависимости от значения поля

Вопрос

Я создал деталь [Документы водителя], схема UsrSchema6Detail, в разделе [Контакты]. Мне необходимо показывать ее если выбрана должность [Водитель]. Если должность не выбрана или выбрана другая, то деталь скрыта.

Я добавил бизнес правило в схему контакты, оно не работает.

rules: {
   "UsrSchema6Detail": {
      BindParametrVisibilePlaceByType: {
         // Тип правила BINDPARAMETER.
         ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
         // Правило регулирует свойство VISIBLE поля.
         property: BusinessRuleModule.enums.Property.VISIBLE,
         conditions: [{
            // Выражение левой части условия.
            leftExpression: {
               //Тип выражения ATTRIBUTE указывает на то, что в качестве выражения выступает
               // аттрибут (колонка) модели представления.
               type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,
               // Название колонки модели представления, значение которой сравнивается в выражении.
               attribute: "Job"
            },
            // Тип операции сравнения.
            comparisonType: Terrasoft.ComparisonType.EQUAL,
            // Выражение правой части условия.
            rightExpression: {
               type: BusinessRuleModule.enums.ValueType.CONSTANT,
               value: "703e34d6-4113-43b5-84dc-2e1f8635c6d4"
            }
         }]
      }
   }
}

Если я применяю это же правило к колонке [Департамент], то оно работает так как надо. 

Ответ

Для решения Вашей бизнес задачи использование бизнес правил не подходит.

Вот пример кода для скрытия детали [Средства связи] на карточке редактирования [Контрагента].

Создаете замещающий модуль AccountPagev2, в секции diff добавляете следующий код:

{
    "operation": "merge",
    "name": "Communications",
    "values": {
        "visible" : {
            "bindTo": "communicationsVisibility"
        }
    }
}

Объявляете метод отвечающий за видимость детали в секции methods:

communicationsVisibility: function(){
    var type = this.get("Type");
    return !!type && type.displayValue === "Наша компания";
}

В результате деталь будет видима только в случае, если “Тип” указан как “Наша компания”. По аналогии можно скрывать любую деталь.

Нравится

Поделиться

0 комментариев
Показать все комментарии