Вопрос

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

Добрый день, Коллеги!
На нескольких проектах столкнулись со следующей ситуацией.
Описания кейса:

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;
}

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

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

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

Войдите или зарегистрируйтесь, чтобы комментировать