Здравствуйте!
Передо мной стоит задача фильтрации, регулировка видимости и обязательности полей в миникарточке лида.
решаю данную проблему бизнес-правилами, но возник ряд проблем/вопросов
1) Например, настройка обязательности не работает - поле обязательно всегда
"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
Нравится
1) Сравнения Terrasoft.ComparisonType.IN нет. Войдите в bpm, откройте консоль и введите Terrasoft.ComparisonType и вам выведет все возможные варианты
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(внешний контейнер поля) , то пустое место пропало.
вот это я обнаружила, только вот не могу из этого никакие выводы сделать - как мне нужно было описывать деталь, чтобы этого не было.