бизнес правила в миникарточке

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

Передо мной стоит задача фильтрации, регулировка видимости и обязательности полей в миникарточке лида.
решаю данную проблему бизнес-правилами, но возник ряд проблем/вопросов
1) Например, настройка обязательности не работает - поле обязательно всегда

                                "ICLSegment": {
                                        "ICLSegmentReq": {
                                                "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                                                "property": BusinessRuleModule.enums.Property.REQUIRED,
                                                "conditions": [{
                                                        "leftExpression": {
                                                                "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                                                "attribute": "LeadType"
                                                        },
                                                        "comparisonType": Terrasoft.ComparisonType.IN,
                                                        "rightExpressions": [
                                                                {
                                                                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                                                        "attribute": "flexibleEuroId"
                                                                },
                                                                {
                                                                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                                                        "attribute": "flexibleSNGId"
                                                                }
                                                        ]
                                                }]
                                        }
}

вероятно, неправильно использую IN фильтр, к сожалению нигде не нашла примеров его использования.
А когда делаю два правила с "comparisonType": Terrasoft.ComparisonType.EQUAL с разными названиями и со сравнением с разными атрибутами(flexibleEuroId/ flexibleSNGId) отрабатывает только второе( последнее добавленное получается)

2) При настройке видимости поля они не сдвигаются автоматически, то есть при скрытии поля остальные
поля, что были ниже, не подтягиваются и там остается пустое место. есть какие-либо методы это
исправить?
3) как задать обязательность поля в миникарточке, чтобы она была обязательна всегда, независимо от
бизнес правил?

Версия 7.10.0.1742

Нравится

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

1) Сравнения Terrasoft.ComparisonType.IN нет. Войдите в bpm, откройте консоль и введите Terrasoft.ComparisonType и вам выведет все возможные варианты
pic
2) У них указан layout. Скорее всего если подтереть у всех полей layout-ы и упорядочить их через index, что-то может получиться. Но не факт.
3) IsRequired: true в values поля. Либо в аттрибуте. Либо через бизнес-правило.

"Варфоломеев Данила" написал:Сравнения Terrasoft.ComparisonType.IN нет

а как тогда задавать условия для обязательности такого типа:
если значение поля LeadType равно type1 или type2 или type3, то поле обязательное для заполнения. может как-то через несколько conditions, соединенных с OR, но я такого тоже что-то не нашла

"Zaitova Liubov" написал:через несколько conditions, соединенных с OR

Именно.

logical: Terrasoft.LogicalOperatorType.OR,
conditions: [{cond.1}, {cond.2},....]

"Zaitova Liubov" написал:тоже что-то не нашла

Потому что sdk террасофта по правилам почему-то не дописано. Настоятельно советую эту запись в блоге

Рекомендую ознакомиться с постом по ссылке: http://www.community.terrasoft.ru/forum/topic/12633#comment-68765

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

"Варфоломеев Данила" написал: У них указан layout. Скорее всего если подтереть у всех полей layout-ы и упорядочить их через index, что-то может получиться. Но не факт.

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

	{
	"operation": "insert",
	"name": "AdditionFieldsContainer",
	"parentName": "MiniPage",
	"propertyName": "items",
	"values": {
		"itemType": this.Terrasoft.ViewItemType.CONTAINER,
		"layout": {"column": 0, "row": 12, "colSpan": 24},
		"items":
			[
				{
					"name": "ICLSegment",
					"values": {
							"isMiniPageModelItem": true,
							"visible": {"bindTo": "isNotViewMode"}
						},
						"index": 0
					},
					{
						"name": "ICLPodSegment",
						"values": {
							"isMiniPageModelItem": true,
							"visible": {"bindTo": "isNotViewMode"}
								},
						"index": 1
						} ,
						{
						      "name": "ICLAddSegment1",
							"values": {
								"isMiniPageModelItem": true,
								"visible": {"bindTo": "isNotViewMode"}
							},
							"index": 2
						}
                                    ]
                           }
}

"Zaitova Liubov" написал:но, к сожалению, ничего не изменилось. все так же остается пустое место

Невозможно, обычный контейнер не может оставлять пустых мест. Скорее всего вы либо не почистили кеш, либо пробелы остались в вашем другом грид-лайауте. Проинспектите в f12 эти пустые места и поймите к чему они имеют отношение.

"Максим Шевченко" написал:Невозможно, обычный контейнер не может оставлять пустых мест. Скорее всего вы либо не почистили кеш, либо пробелы остались в вашем другом грид-лайауте. Проинспектите в f12 эти пустые места и поймите к чему они имеют отношение.

кэш чистила. просмотрела через f12. пустые места выделяются под контейнер поля. во вложении скан. красным выделен мой конейнер, в котором 8 мои полей. под каждое поле выделяется свой контейнер. внутри контейнера 2 подконтейнера - для заголовка и для контрола. видимость для двух внутренних прописывается при работе бизнес-правила, а для внешнего нет. когда я в режиме отладки добавила display:none для LeadMiniPageICLPodSegmentContainer(внешний контейнер поля) , то пустое место пропало.
вот это я обнаружила, только вот не могу из этого никакие выводы сделать - как мне нужно было описывать деталь, чтобы этого не было.

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