Фильтрация справочника в модуле расширенных фильтров

Здравствуйте.
В разделе лидов пока решили не использовать базовый функционал, так как у нас используются другие стадии. Но и базовый функционал бесповоротно ломать не хотим, поэтому решили дополнить справочник своими стадиями, а в карточке показывать только те стадии, которые используем. Этого добились с помощью бизнес-правила и ввода в справочнике Стадия лида логического поля ShowInCard по которому и осуществляем фильтрацию.

                                "QualifyStatus": {
                                        FiltrationQualifyStatus: {
                                                ruleType: BusinessRuleModule.enums.RuleType.FILTRATION,
                                                baseAttributePatch: "ShowInCard",
                                                comparisonType: Terrasoft.ComparisonType.EQUAL,
                                                type: BusinessRuleModule.enums.ValueType.CONSTANT,
                                                value: true
                                        }
                                },

Однако, если мы хотим отфильтровать записи в разделе по полю Cтадия лида с помощью модуля расширенной фильтрации, то открывается справочник со всеми существующими в нем значениями. Подскажите как отфильтровать справочник в модуле рассширенной фильтрации?

Нравится

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

Здравствуйте!

При фильтрации в расширенном режиме отображаются все значения из справочника. Таким образом фильтрация, созданная на странице не влияет на доступные в фильтре записи.

Есть вариант включить администрирование по записям для объекта справочника и раздать права на значения скриптом, однако они все записи будут доступны для пользователей с правами системного администратора.

А может все же существует вариант с переопределением какого-либо метода родительской схемы? Если мы будем использовать механизм прав, то, как я понимаю, чтобы перенести потом нужные настройки с тестового сервера на рабочий с помощью WorkspaceConsole, необходимо во-первых, будет дополнительно переносить пакет Custom, поскольку мы ведем разработку в другом пакете, а при включении администрируемости автоматически создается замещающий объект в пакете Custom, а во-вторых, необходимо будет через вкладку Данные раздела Конфигурация сохранить наполнение объекта SysQualifyStatusRight, верно?. Опять же, сохранять данные также в пакете Custom, а не в нашем основном пакет разработки?

Здравствуйте!

Данные действительно сохраняются в таблице SysQualifyStatusRight. Что касается замещения, то Вы можете сделать его в Вашем пакете и установить свойство "Администрируется по записям". В результате объект начнет администрироваться по записям. Права можно установить только SQL запросом на боевой среде после переноса пакета. К сожалению, на вкладке "Данные" можно осуществить перенос данных таблиц, у которых есть объекты. Для таблиц, которые хранят права, объектов в системе нет.

Андрей, здравствуйте!

Посмотрите на два места:
1. getLookupFilterValue: function(filter) - в клиентском модуле провайдера фильтрации схем объектов (EntitySchemaFilterProviderModule). Метод получает значение для справочной колонки.
2. pushSelectFilters: function(select) - в клиентском модуле представления страницы выбора значения из справочника (LookupPageViewModelGenerator). Добавляет фильтры в select.

С помощью внесения правок в эти два метода можно решить задачу наложения дополнительных фильтров на справочные колонки в блоке расширенной фильтрации.

Пример для случая:
При выборе контактов по полю Ответственный в окне выбора выводить толькло контакты, которые являтся пользователями системы.
Реализовать для двух разделов: Контрагенты и Контакты

Шаги:
1. Создать Замещающий клиентский модуль для EntitySchemaFilterProviderModule (провайдер фильтрации схем объектов).
Переопределить метод getLookupFilterValue и в объект config добавить дополнительное свойство addContactUserFilter, по которому дальше в методе pushSelectFilters клиентского модуля LookupPageViewModelGenerator будет выполняться наложение фильтрации по контактам, которые являются пользователями системы (есть в таблице SysAdminUnit, связка по полю ContactId).

2. Создать замещающий клиентский модуль LookupPageViewModelGenerator и переопределить метод pushSelectFilters, в котором по переданному конфигу (lookupInfo) мы определяем, что нужно наложить фильтр по контактам-пользвоателям системы. Для использования стандартного фильтра OwnerFilter подключить модуль BaseFiltersGenerateModule.

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