Добавление поля карточки контрагента в фильтр сделок

Рассмотрим добавление поля карточки контрагента в фильтр сделок на примере свойства Сегмент рынка объекта Контрагент.

Данное свойство имеет тип Выпадающий список с четырьмя элементами списка: SOHO, Средний бизнес, Бизоны, Enterprise.

В Дизайнере для объекта Сделка добавляем свойство Сегмент рынка типа Выпадающий список. Элементы списка идентичны элементам аналогичного свойства объекта Контрагент. На вкладке Дополнительно устанавливаем флажок Участвует в поиске (фильтре).

 

Рис. 1. Настройка свойства. Вклакда "Общие"

После этого сохраняем справочник и публикуем его.

Переходим на вкладку Сценарии карточки объекта Сделка.

Если нет сценариев, то необходимо создать новый модуль.

После чего, добавляем следующий код:

        protected override void OnSetupFilter(ICriteria criteria, IEntityFilter filter)
        {
            var saleFilter = filter as ISaleConfigExtFilter;
            if (saleFilter != null)
            {
                if (saleFilter.SegmentRynka != null)
                {
                    var contractorAlias = "cc";
                    criteria.GetOrCreateAlias("Contractor", JoinType.InnerJoin, ref contractorAlias);
                    criteria.Add(Restrictions.Eq(contractorAlias + ".SegmentRynka", saleFilter.SegmentRynka));
                }
            }
        }

После этого публикуем сценарий и перезапускаем сервер.

В веб-интерфейсе в разделе Сделки в верхнем меню нажимаем на кнопку Изменить фильтр.

Рис. 2. Кнопка "Изменить фильтр"

На вкладке Поля фильтра в блоке Доступные элементы необходимо найти созданное нами новое свойство Сегмент рынка.

Рис. 3. Настройка полей фильтра

Двойным нажатием мыши переносим Сегмент рынка в блок Выбранные элементы, таким образом добавляя его в расширенный поиск по сделкам.

Результат проделанной работы представлен ниже на рисунке. 

Рис. 4. Поле "Сегмент рынка" для расширенного поиска сделок