BINDPARAMETER для поля на детали зависит от атрибута родителя

Здравствуйте!

В счете нужно сделать поле Договор обязательным для заполнения, если в качестве клиента выбран Контрагент (а не Контакт).

Поле Договор находится на детали Связи.

Какие варианты?

Версия 7.12.0

Нравится

4 комментария

Пока сделал через проверку в методе Save, но интересно, есть ли всё таки возможность сделать через BINDPARAMETER?

Борис, здравствуйте!

К сожалению, бизнес-правила не работают с полями, которые находятся в контейнере (а "Клиент" - это как раз контейнер).

Обходные решения:

- переопределить метод "Save" (что Вы и сделали)

- вынести поле "Контрагент" на страницу как отдельное поле. Тогда можно будет даже создать бизнес-правило в Мастере, не прописывать кодом.

Одеяненко Юлия,

дело в том, что на странице InvoicePageV2 есть такой код:

"CustomerBillingInfo": {
	"BindParameterEnabledCustomerBillingInfoToAccount": {
		"ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
			"property": BusinessRuleModule.enums.Property.ENABLED,
				"conditions": [
					{
						"leftExpression": {
							"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
							"attribute": "Account"
						},
					"comparisonType": Terrasoft.ComparisonType.IS_NOT_NULL
				}
			]
		}
	}
}

Это именно то, что мне нужно, без выноса на страницу отдельного поля Контрагент.

Но если вместо "CustomerBillingInfo" ставлю "Contract", не работает.

Судя по всему, не работает по причине расположения поля Договор (оно же Contract) на детали Связи. Я еще не совсем понимаю, как можно наладить общение между деталью и страницей, на которой эта деталь располагается, так еще и сама деталь Связи особенная.

Борис Леонов,

так как деталь "Связи" действительно специфическая, настроить бизнес-правило обязательности на ее поля (то есть, реализовать через

BINDPARAMETER) возможность пока отсутствует. Мы передали Ваши пожелания аналитикам продукта для рассмотрения и, возможно, доработки в будущих версиях продукта.

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