Вопрос
Я создал деталь [Документы водителя], схема 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 === "Наша компания";
}
В результате деталь будет видима только в случае, если “Тип” указан как “Наша компания”. По аналогии можно скрывать любую деталь.