Проблема с добавлением значения в справочник при указании метода фильтрации колонки

Добрый день, Коллеги!

На нескольких проектах столкнулись со следующей ситуацией.

Описания кейса:



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



Коллеги, просим подсказать как можно обойти подобное поведение?

Возможно есть простой способ реализации подобного фильтра через бизнес-правила? У нас попросту не получилось организовать подобный фильтр другим способом.

Заранее спасибо!

Нравится

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

Чисто в теории в LookupQuickAddMixin отсекается возможность быстрого создания, если функция checkIsComplicatedFiltersExists вернёт true. Можно прям на странице переопределить эту функцию

checkIsComplicatedFiltersExists: function() {
	return false;
}

и система предложит создать контакта. Не факт, однако, что что-нибудь не накроется тазом в какой-то момент (не зря же есть функция по проверки сложных фильтров). Лично я быстро накидал, потестил на дефолтной странице договора - все отрабатывает.

Варфоломеев Данила,

Спасибо за подсказку! Закрыли задачу!

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