У меня есть 2 условия:

					{
						"leftExpression": {
							"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
							"attribute": "Stage"
						},
						"comparisonType": Terrasoft.ComparisonType.NOT_EQUAL,
						"rightExpression": {
							"type": BusinessRuleModule.enums.ValueType.CONSTANT,
							"value": ConfigurationConstants.OpportunityStage.Qualification
						}
					},
					{
						"leftExpression": {
							"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
							"attribute": "Stage"
						},
						"comparisonType": Terrasoft.ComparisonType.NOT_EQUAL,
						"rightExpression": {
							"type": BusinessRuleModule.enums.ValueType.CONSTANT,
							"value": ConfigurationConstants.OpportunityStage.CloseLost
						}
					}

 

 

Могу ли объеденить их в одно при помощи CONTAIN

Нравится

2 комментария
Лучший ответ

Нет, contain используется для строк, а Stage guid. И не вижу смысла, это нормально что у вас будет множество сравнений по отдельности, если вы в секции rules описывает бизнес-правила .

Если стадий будет больше 5-10, то тогда надо сравнивать с массивом из стадий и делать это в описании фильтра в секции attributes для атрибута Stage. Секция rules для такого случая плохо подходит, будет десяток правил.

Нет, contain используется для строк, а Stage guid. И не вижу смысла, это нормально что у вас будет множество сравнений по отдельности, если вы в секции rules описывает бизнес-правила .

Если стадий будет больше 5-10, то тогда надо сравнивать с массивом из стадий и делать это в описании фильтра в секции attributes для атрибута Stage. Секция rules для такого случая плохо подходит, будет десяток правил.

Спасибо.

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

Можно ли через правило BINDPARAMETER задать invalidMessage, при установке обязательности поля?

Нравится

3 комментария
Лучший ответ

В бизнес правилах invalidMessage нет. Нужно использовать функцию валидации https://academy.terrasoft.ru/documents/technic-sdk/7-15/dobavlenie-vali…

В бизнес правилах invalidMessage нет. Нужно использовать функцию валидации https://academy.terrasoft.ru/documents/technic-sdk/7-15/dobavlenie-vali…

Полозюков Евгений Петрович,

Да, согласен, но при валидации не отображается (*) около обязательного поля. 

Вы можете задавать обязательность поля кодом, задав биндинг к функции.

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

Добрый вечер!

Вопрос по бизнес-правилам.

Подскажите, как можно в правиле задать условие для действия фильтра значений в поле?

 

Имеется единый справочник тематик, из которого сотрудники выбирают необходимую по окончании общения в чатах и звонках.

Для чатов и звонков созданы отдельные разделы. В каждом разделе есть карточки чатов и звонков. В каждой карточке создана деталь с тематиками, что ссылается на справочник в виде выпадающего списка тематик.

Цель: сделать так, чтобы для чатов выпадал один список, а для звонков другой, используя один и тот же вышеуказанный справочник.

Прикрепленные файлы

Нравится

6 комментариев
Лучший ответ

Николай Ходаковский,

вы для чата указываете значение по умолчанию Чат. для звонка - звонок. Еще раз - на страницы для объектов чат и звонок вы добавляете справочное поле Тип(тот же самый справочник, что вы создали в справочнике Тематики) и для каждого раздела там устанавливаете свое значение по умолчанию. Значение по умолчанию вам нужно будет установить через конфигуратор в свойствах соответствующих объектов (чат и звонок). Понятно объяснил или где-то надо углубится?

Я может быть неправильно вас понял, но по моему ваша задача аналогична фильтру городов по странам. Т.е. в справочнике Тематики создаете поле Тип(Звонок, Чат) и в ваших страницах раздела помещаете этот справочник Тип(можно на страницу редактирования не выводить а просто добавить в объект с соответствующими значениями по умолчанию). Ну и дальше делаете для каждого раздела свое бизнес правило где фильтр справочника строится по значению Тип у раздела.

Сидоров Александр Валерьевич, спасибо за ответ. Значение по умолчанию — это интересная мысль.

Мы используем деталь с тематиками, благодаря чему сотрудник может выбрать несколько тематик в карточке чата. После чего в отдельной таблице собираются все выбранные тематики с указанием id чата/звонка.

Получается следующее, если я добавляю к своему справочнику Тип, то его надо будет всегда выбирать, чтобы подтянуть правильный список со справочника. Как можно сделать, чтобы система сама устанавливала нужный Тип при открытии карточки чата, например? Где задается это умолчание?

Николай Ходаковский,

вы для чата указываете значение по умолчанию Чат. для звонка - звонок. Еще раз - на страницы для объектов чат и звонок вы добавляете справочное поле Тип(тот же самый справочник, что вы создали в справочнике Тематики) и для каждого раздела там устанавливаете свое значение по умолчанию. Значение по умолчанию вам нужно будет установить через конфигуратор в свойствах соответствующих объектов (чат и звонок). Понятно объяснил или где-то надо углубится?

Сидоров Александр Валерьевич, уловил вашу мысль.

Все получилось, спасибо большое!

 

Решил вместо типа всё-таки использовать чекбоксы.

По вашему совету в объектах чатов и звонков создал чекбоксы, где выставил установил по умолчанию "true". Такие же логические чекбоксы сделал для справочника тематик (отдельно для чатов и звонков), где также по для нужных записей выставил 'true'.

Далее к детали тематик привязал правило по этим чекбоксам :)

 

Рад, что смог помочь! Велком)

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

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

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

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

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

Версия 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) возможность пока отсутствует. Мы передали Ваши пожелания аналитикам продукта для рассмотрения и, возможно, доработки в будущих версиях продукта.

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