[ELMA3] Добавление поля карточки контрагента в фильтр сделок
Рассмотрим добавление поля карточки контрагента в фильтр сделок на примере свойства Сегмент рынка объекта Контрагент.
Данное свойство имеет тип Выпадающий список с четырьмя элементами списка: 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 + ".MarketSegment", saleFilter.SegmentRynka));
}
}
}
После этого публикуем сценарий и перезапускаем сервер.
В веб-интерфейсе в разделе Сделки в верхнем меню нажимаем на кнопку Изменить фильтр.
Рис. 2. Кнопка "Изменить фильтр"
На вкладке Поля фильтра в блоке Доступные элементы необходимо найти созданное нами новое свойство Сегмент рынка.
Рис. 3. Настройка полей фильтра
Двойным нажатием мыши переносим Сегмент рынка в блок Выбранные элементы, таким образом добавляя его в расширенный поиск по сделкам.
Результат проделанной работы представлен ниже на рисунке.
Рис. 4. Поле "Сегмент рынка" для расширенного поиска сделок