Фильтрация справочного поля на странице продуктового каталога

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

Задача:

На странице продуктового каталога (ProductSelectionSchema) необходимо для справочного поля [Прайс-лист] (PriceList) добавить логику фильтрации значений.

https://www.screencast.com/t/KGWpnt5Ab

 

Что попробовал:

"Классический" вариант, объявленный на замещённой странице ProductSelectionSchema. Попробовал просто скрыть "Базовый" прайс-лист.

https://academy.terrasoft.ru/documents/technic-sdk/7-15/primenenie-filtracii-k-spravochnym-polyam

Не помогло.

 

Подскажите, пожалуйста, как именно можно реализовать дополнительную логику фильтрации?

Возможно свойство filters для атрибута нужно объявить в другой схеме/модуле?

Или подскажите на какие методы обратить внимание?

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

 

Нравится

3 комментария
Лучший ответ

Титаев Александр Николаевич,

Покопался еще в коде. Именно получение запроса на выборку списка прайс-листов осуществляется в методе applyProductPriceItemsEsq (ProductSelectionQueryUtilitiesMixin).
Этот метод глобально вызывается в методе getLookupQuery (модуль

ProductSelectionSchema) по клику по лукапному полю (берется обработчик заполнения списка лукапного поля в методе getLookupColumnHandlers).
Что можно сделать:
1) Реализовать свой метод applyProductPriceItemsEsq с нужной вам фильтрацией в ProductSelectionSchema
2) Указать новый метод в getLookupColumnHandlers
3) Указать новый метод в getGridRecordByItemValues

 

Добрый день!
В указанное вами поле попадают записи с детали "Цены" объекта "Продукт" (вкладка "Цены и остатки").
Логика отбора записей реализована в ProductSelectionQueryUtilitiesMixin (метод getProductInBasePriceListEsq), который скорее всего переопределить не получится (модули переопределять нельзя в системе).
Как вариант, удалять записи "Основной" из детали "Цены" продукта. Но это крайне не рекомендуется делать, даже запрещено на уровне системы.

Спасибо за "Наводку", Александр! Думаю можно поработать с методом initCurrencies в ProductSelectionSchema. Хотя тоже не лучший вариант. Попробую всё же разобраться, как именно можно навесить обработчик с фильтром на справочную колонку, так как отключение логики пересчёта, при наличии пункта меню справочника, как вы отметили, не лучшая идея..

Титаев Александр Николаевич,

Покопался еще в коде. Именно получение запроса на выборку списка прайс-листов осуществляется в методе applyProductPriceItemsEsq (ProductSelectionQueryUtilitiesMixin).
Этот метод глобально вызывается в методе getLookupQuery (модуль

ProductSelectionSchema) по клику по лукапному полю (берется обработчик заполнения списка лукапного поля в методе getLookupColumnHandlers).
Что можно сделать:
1) Реализовать свой метод applyProductPriceItemsEsq с нужной вам фильтрацией в ProductSelectionSchema
2) Указать новый метод в getLookupColumnHandlers
3) Указать новый метод в getGridRecordByItemValues

 

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