Настройка логики полей карточки
Настройка происходит в карточке путем изменения конфигурации полей.
Подготовка
Для работы с бизнес правилами нужно добавить в страницу зависимость от модуля бизнес правил:
Настройка
В настройку контрола страницы добавляем блок правил по шаблону:
Пример настройки бизнес правила BINDPARAMETER
type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
name: 'Winner',
columnPath: 'Winner',
dataValueType: Terrasoft.DataValueType.LOOKUP,
visible: true,
rules: [{
//Указываем тип правила
ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
//Подписываемся на параметр "Видимый"
property: BusinessRuleModule.enums.Property.VISIBLE,
//Указываем правило объединения условий в случае если в массиве conditions более одного условия
//по умолчанию Terrasoft.LogicalOperatorType.AND
logical: Terrasoft.LogicalOperatorType.AND,
conditions: [{
leftExpression: {
//Сравниваем значение от атрибута модели "Доход"
type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,
attribute: 'Revenue'
},
//Устанавливаем правило сравнения "Больше"
comparisonType: Terrasoft.core.enums.ComparisonType.GREATER,
rightExpression: {
//С константой '5000'
type: BusinessRuleModule.enums.ValueType.CONSTANT,
value: 5000
}
}]
}]
}
Бизнес правило привязывается к параметру "Видимый" контрола Победитель (Winner).
В пакете условий указывается одно условие: если Доход (Revenue) больше 5000, Победитель становится видимым, иначе Победитель скрывается.
Пример настройки бизнес правила BINDPARAMETER для типа значений CARDSTATE
ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
property: BusinessRuleModule.enums.Property.ENABLED,
conditions: [{
leftExpression: {
type: BusinessRuleModule.enums.ValueType.CARDSTATE
},
comparisonType: Terrasoft.core.enums.ComparisonType.EQUAL,
rightExpression: {
type: BusinessRuleModule.enums.ValueType.CONSTANT,
value: ConfigurationEnums.CardState.Edit
}
}
]
}
Бизнес правило позволяет установить значение видимости или доступности для редактирования контрола в зависимости от текущего состояния страницы.
В данном случае указывается, что поле будет доступно для редактирования только в режиме изменения записи, а в режиме добавления/копирования будет неактивно.
Пример настройки бизнес правила FILTRATION
type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
name: 'Contact',
columnPath: 'Contact',
dataValueType: Terrasoft.DataValueType.ENUM,
visible: true,
rules: [{
//Указываем тип правила
ruleType: BusinessRuleModule.enums.RuleType.FILTRATION,
//Указываем будет ли обратное автозаполнение
autocomplete: true,
//Указываем мета-путь относительно базового обьекта('Contact')
//по которому будем фильтровать
baseAttributePatch: 'Account',
//Указываем тип фильтрации
comparisonType: Terrasoft.ComparisonType.EQUAL,
//Указываем тип значения для фильтрации
type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,
//Указываем атрибут модели для сравнения (если тип значения - атрибут)
attribute: 'Account',
//Указываем мета-путь значения в выбранном атрибуте (если нужно)
attributePath: '',
//Если тип значения не атрибут, указываем значение
//(константа | имя системной настройки | имя системного значения)
value: ''
}]
}
Бизнес правило устанавливает фильтрацию контрола Контакт (Contact) по полю Контрагент (Account) в зависимость от значения атрибута модели Контрагент (Account)
Пример настройки бизнес правила AUTOCOMPLETE (Правило доступно с версии 7.0.1.106)
type: Terrasoft.ViewModelSchemaItem.ATTRIBUTE,
name: 'JobTitle',
columnPath: 'JobTitle',
...
rules: [{
//Указываем тип правила
ruleType: BusinessRuleModule.enums.RuleType.AUTOCOMPLETE,
//Указываем атрибут-источник модели для автозаполнения
attribute: 'Job',
//Указываем тип автозаполнения
autocompleteType: BusinessRuleModule.enums.AutocompleteType.DISPLAYVALUE
}]
}
Бизнес правило производит автозаполнение контрола Полное название должности (JobTitle) из параметра displayValue значения контрола Должность (Job)
Перечисления
Данные перечисления не являются ядровыми и становятся доступны после подключения модуля бизнес правил.
Тип действия бизнес правила
Тип | Описание |
BusinessRuleModule.enums.RuleType.AUTOCOMPLETE | Установка правил автозаполнения контрола Пример: автозаполнение полного названия должности исходя из выбранной должности.. |
BusinessRuleModule.enums.RuleType.BINDPARAMETER | Установка правил на параметр контрола Пример: Включить поле результат при изменении состояния в карточке активности. |
BusinessRuleModule.enums.RuleType.FILTRATION | Установка правил фильтрации контрола Пример: Фильтрация контактов по выбранному контрагенту. |
Тип автозаполнения
Тип | Описание |
BusinessRuleModule.enums.AutocompleteType.ASIS | Автозаполнение значением "как есть" |
BusinessRuleModule.enums.AutocompleteType.VALUE | Автозаполнение параметром value. Актуально для lookup-значений. |
BusinessRuleModule.enums.AutocompleteType.DISPLAYVALUE | Автозаполнение параметром displayValue. Актуально для lookup-значений. |
Параметр контрола
Тип | Описание |
BusinessRuleModule.enums.Property.VISIBLE | Контрол видим |
BusinessRuleModule.enums.Property.ENABLED | Контрол активен |
BusinessRuleModule.enums.Property.REQUIRED | Контрол обязателен к заполнению |
BusinessRuleModule.enums.Property.READONLY | Контрол доступен только на чтение |
Тип значения для сравнения
Тип | Описание |
BusinessRuleModule.enums.ValueType.CONSTANT | Константа Пример: 100, "Иванов", "449d832-a4cc-4b01-b9d5-8a12c42a9f89" |
BusinessRuleModule.enums.ValueType.ATTRIBUTE | Значение другого контрола Пример: "Revenue" (Доход) |
BusinessRuleModule.enums.ValueType.SYSSETTING | Системная настройка Пример: "DefaultTax" (Налог по умолчанию) |
BusinessRuleModule.enums.ValueType.SYSVALUE | Системное свойство. Элемент списка системных свойств Terrasoft.core.enums.SystemValueType Пример: Terrasoft.core.enums.SystemValueType.CURRENT_DATE (Текущая дата) |
BusinessRuleModule.enums.ValueType.CARDSTATE | Значение текущего состояния страницы (добавление/редактирование/копирование и т.п.). Элемент из списка ConfigurationEnums.CardState Пример использования: ConfigurationEnums.CardState.Edit (Страница в режиме редактирования) |
Здравствуйте, Александр.
Есть несколько вопросов по вашему новому посту. Буду признателен за комментарии. Начинающий, не во всем пока разбираюсь.
В настройку контрола страницы добавляем блок правил по шаблону:
Далее этот "контрол" повторяется везде. Не понимаю смысл этого слова.
Здравствуйте, Павел.
Под термином "контрол" в данной статье подразумевается "Поле редактирования"
Пример:
Поле на карточке
В коде структуры карточки выглядит так:
{ type: Terrasoft.ViewModelSchemaItem.ATTRIBUTE, name: 'Number', columnPath: 'Number', dataValueType: Terrasoft.DataValueType.TEXT, visible: true }
Бизнес правила вписываются в этот код задавая требуемое поведение.