logo

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

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

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

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

 

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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. Поле "Сегмент рынка" для расширенного поиска сделок