Публикация

Как создать деталь с фильтрацией по нескольким полям

Допустим, у нас в BPMonline 5.X есть документ с полями Contact1, Contact2, Contact3 (справочники, ссылаются на раздел контактов). Нужно на детали «Документы» раздела контактов отображать записи по совпадению любого из этих полей.

Если нужно отображать деталь с фильтрацией по нескольким полям, это можно сделать так:

Создаём новую страницу «Страница реестра документов контакта», унаследованную от «Страница реестра документов». Она приобретает все возможности обычной страницы реестра документов, нам нужно изменить только фильтрацию записей.

Переопределяем в бизнес-процессе событие «ScriptTaskBasePrepareFilters»:

блок БП

Код скрипта:

//Отключаем старые фильтры
var detailFilter = Page.DataSource.CurrentStructure.Filters.FindByName("DetailFilter");
if (detailFilter != null) {
        Page.DataSource.CurrentStructure.Filters.Remove(detailFilter);
}
var viewFilter = Page.DataSource.CurrentStructure.Filters.FindByName("ViewFilters");
if (viewFilter != null) {
        Page.DataSource.CurrentStructure.Filters.Remove(viewFilter);
}
//Новая группа фильтров с условием «или»
var filterGroup = Page.DataSource.CurrentStructure.CreateFiltersGroup("ViewFilters", LogicalOperationStrict.Or);
//Фильтры в группе
var filter1 = Page.DataSource.CreateFilterWithParameters(
                        FilterComparisonType.Equal,
                        "Contact1", SelectedNodePrimaryColumnValue);

var filter2 = Page.DataSource.CreateFilterWithParameters(
                        FilterComparisonType.Equal,
                        "Contact2", SelectedNodePrimaryColumnValue);
var filter3 = Page.DataSource.CreateFilterWithParameters(
                        FilterComparisonType.Equal,
                        "Contact3", SelectedNodePrimaryColumnValue);

//Добавляем фильтры в группу
filterGroup.Add(filter1);
filterGroup.Add(filter2);
filterGroup.Add(filter3);

//А группу фильтров — в источник данных
Page.DataSource.CurrentStructure.Filters.Add(filterGroup);
return true;

Готово. Осталось в настройках рабочих мест указать нужную страницу реестра детали, остальные настройки можно не менять.

свойства детали

Нравится

Поделиться

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