Проблема с добавлением значения в справочник при указании метода фильтрации колонки
Добрый день, Коллеги!
На нескольких проектах столкнулись со следующей ситуацией.
Описания кейса:
1) Рассмотрим раздел обращения, Колонки "Контакт" и "Контрагент".
Пробуем добавить новый контакт через "Всплывающее действие" при вводе не существующего ФИО в системе.
https://yadi.sk/i/OQCOmeQw3TedkE
В результате при клике на "действие создания" далее откроется миникарточка контакта для заполнения.
Штатный функционал работает корректно.
Потребность:
Необходимо добавить сложный фильтр для lookup "Контакта".
Логика фильтра: Если "Контрагент" заполнен, то отображать к выбору только те контакты, у которых на детали "Карьера контакта" (деталь в разделе контакт) есть записи по связанному контрагенту, Который выбран в обращении.
Был выбран способ реализации путём задания фильтра через атрибуты.
"Contact": { lookupListConfig: { filters: [ function() { var accountId = this.get("Account"); var filterGroup = Ext.create("Terrasoft.FilterGroup"); if (accountId){ var filterById = Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "[ContactCareer:Contact].Account", accountId.value); filterGroup.add("filterById", filterById); return filterGroup; } ] } }
Фильтрация работает корректно.
2) Однако возникла следующая проблема, которой нет при создании фильтров через бизнес-правила:
При указании такого фильтра, пытаемся выполнить шаги пункта (1) по добавлению не существующего в системе контакта и действием вызвать миникарточку.
В результате после добавления подобного фильтра, действие по добавлению нового значения просто не появляется при указанном Контрагенте.
https://yadi.sk/i/4baUZyPr3Tee7E
Есть только возможность выбора из отфильтрованных значений.
https://yadi.sk/i/a-qH6I0R3TefZq
https://www.screencast.com/t/6Mu2hFnkt
Если, согласно условию if, Контрагент не заполнен, то действие для создания появляется.
https://yadi.sk/i/HaQF5U1L3Teg7r
Коллеги, просим подсказать как можно обойти подобное поведение?
Возможно есть простой способ реализации подобного фильтра через бизнес-правила? У нас попросту не получилось организовать подобный фильтр другим способом.
Заранее спасибо!
Нравится
Чисто в теории в LookupQuickAddMixin отсекается возможность быстрого создания, если функция checkIsComplicatedFiltersExists вернёт true. Можно прям на странице переопределить эту функцию
checkIsComplicatedFiltersExists: function() { return false; }
и система предложит создать контакта. Не факт, однако, что что-нибудь не накроется тазом в какой-то момент (не зря же есть функция по проверки сложных фильтров). Лично я быстро накидал, потестил на дефолтной странице договора - все отрабатывает.
Варфоломеев Данила,
Спасибо за подсказку! Закрыли задачу!