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

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

Данное свойство имеет тип "Выпадающий список" с 4 элементами списка.

В справочнике Сделка на вкладке Фильтр добавляем свойство Сегмент рынка. Тип: Выпадающий список. Элементы: идентичные свойства в справочнике Контрагент (SOHO, Средний бизнес, Бизоны, Enterprise).

 

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

Переходим на вкладку Сценарии справочника Сделка

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

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

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

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

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

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

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

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