Здравствуйте!
Есть проблема со свойством 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: {}
	};
});

Александр, неправильно делаете. Нужно это свойство задавать атрибуту, к которому привязан контрол, а не контролу. Вот так:

attributes: {
//...
	"SxAffiliateTransp": {
		"isRequired": {"bindTo":"IsSxAffiliateTransVisible"}	
	}
}

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

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

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