7.4
Required
обязательное поле
Технические вопросы
7.x

Свойство isRequired. BPM 7.4

Здравствуйте!
Есть проблема со свойством isRequired.
При установке значения isRequired: true система отображает * возле поля, но позволяет сохранить карточку с пустым значением (свойство обязательности не срабатывает)
При использовании бизнес-правил все работает корректно.

Тестировалось на релизах BPMOnline Sales 7.4
Omnichannel, Версия 7.4.0.2924
Team, Версия 7.4.0.2628

Нравится

8 комментариев

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Здравствуйте, Александр!
Ошибку не удалось воспроизвести.
Пожалуйста, уточните тип поля, для которого устанавливается обязательность, а также приведите фрагмент кода, где это происходит.
Спасибо!

Здравствуйте, Александр!
Ошибку не удалось воспроизвести.
Пожалуйста, уточните тип поля, для которого устанавливается обязательность, а также приведите фрагмент кода, где это происходит.
Спасибо!

Используется справочное поле(обязательно для заполнения по условию) и метод setSxAffiliateTransVisible для установки свойства обязательности
Также пробовал привязать в булевому полю.
Результат одинаковый: Звездочка возле обязательного поля появляется, но карточку можно сохранить не заполнив его.


define('SxServicePage', ['GeneralDetails','terrasoft','Constants','BusinessRuleModule'],
function(GeneralDetails,Terrasoft,Constants,BusinessRuleModule) {
return {
entitySchemaName: 'SxService',
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[
{
"operation": "insert",
"name": "SxType",
"values": {
"layout": {
"column": 12,
"row": 0,
"colSpan": 12,
"rowSpan": 1
},
"contentType": 3
},
"parentName": "Header",
"propertyName": "items"
},
{
"operation": "insert",
"name": "SxAffiliateTransp",
"values": {
"layout": {
"column": 12,
"row": 2,
"colSpan": 12,
"rowSpan": 1
},
"visible": {"bindTo":"IsSxAffiliateTransVisible"},
"isRequired": {"bindTo":"IsSxAffiliateTransVisible"}
//"isRequired": true // тоже не работает
},
"parentName": "Header",
"propertyName": "items"
}
]/**SCHEMA_DIFF*/,
attributes: {
/*
* Зависимость поля Филиал* от поля тип.
* Скрытие по условию. Для тип=Транспортировка
* */
"SxType": {
dependencies: [
{
columns: ["SxType"],
methodName: "setSxAffiliateTransVisible"
}
]
}
},
methods: {
setSxAffiliateTransVisible:function () {
var type= this.get("SxType");
if (type!=undefined && type.value==Constants.ServiceType.Transportation) {
this.set("IsSxAffiliateTransVisible",true);

}
else {
this.set("IsSxAffiliateTransVisible",false);
this.set("SxAffiliateTransp", null);
}
}
onEntityInitialized: function() {
this.callParent(arguments);
this.setSxAffiliateTransVisible();
}
},
rules: {
//C ДАННЫМ ПРАВИЛОМ РАБОТАЕТ КОРРЕКТНО
/*"SxAffiliateTransp":{
"BindParameterRequiredSxAffiliateTranspToSxType": {
ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
property: BusinessRuleModule.enums.Property.REQUIRED,
conditions: [
{
"leftExpression": {
"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
"attribute": "SxType"//,
//"attributePath": "Finish"
},
"comparisonType": Terrasoft.ComparisonType.EQUAL,
"rightExpression": {
"type": BusinessRuleModule.enums.ValueType.CONSTANT,
"value": Constants.ServiceType.Transportation
}
}
]
}
}*/
},
userCode: {}
};
});

Александр, неправильно делаете. Нужно это свойство задавать атрибуту, к которому привязан контрол, а не контролу. Вот так:
[javascript]
attributes: {
//...
"SxAffiliateTransp": {
"isRequired": {"bindTo":"IsSxAffiliateTransVisible"}
}
}
[/javascript]

Действительно работает, спасибо за подсказку!

Попробовал, работает не так (BPM 7.5 off-site) - если поле уже обязательное по условию, и условие меняется так, что функция возвращает false, то пропадает только красненький текст валидации, а само поле продолжает вести себя как обязательное.. т.е. сильно просит заполнить себя....

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