Документация по разработке bpm’online
PDF

Добавление в раздел блока быстрых фильтров

Glossary Item Box

Общие сведения

Фильтры предназначены для поиска и фильтрации записей в разделах. В bpm'online для этих целей предусмотрены быстрый, стандартный и расширенный фильтры, а также группы. Подробнее о фильтрах можно узнать из статьи "Фильтры".

Для добавления блока быстрых фильтров в раздел необходимо в замещающей схеме раздела переопределить метод initFixedFiltersConfig(), в котором создать конфигурационный объект fixedFilterConfig с такими свойствами:

  • entitySchema — схема объекта,
  • filters — массив добавляемых фильтров.

Затем необходимо присвоить ссылку на созданный конфигурационный объект атрибуту fixedFiltersConfig модели представления:

this.set("FixedFilterConfig", fixedFilterConfig);

Описание примера

В раздел [Договоры] ([Contracts]) добавить блок быстрых фильтров. Фильтрацию осуществлять по дате начала договора и по ответственному.

Исходный код

Пакет с реализацией примера можно скачать по ссылке.

Алгоритм реализации примера

1. В пользовательском пакете создать замещающую схему раздела [Договоры] ([Contracts])

Создайте замещающий клиентский модуль, в свойствах которого укажите (рис. 1):

  • [Родительский объект] ([Parent object]) — "Схема страницы раздела — "Договоры"" ("Page schema — "Contracts" section");
  • [Название] ([Name]) — ContractSectionV2.

Процесс создания замещающей схемы описан в статье "Создание клиентской схемы".

Рис. 1. — Свойства замещающей страницы раздела [Договоры] ([Contracts])

2. В структуру схемы добавить локализуемые строки

Создайте две новые локализуемые строки (рис. 2) со следующими свойствами:

Название (Name) Значение (Value)
OwnerFilterCaption Ответственный (Owner)
PeriodFilterCaption Период (Period)

Рис. 2. — Добавление в схему локализуемой строки

3. В коллекцию методов модели представления раздела добавить реализацию метода initFixedFiltersConfig()

В методе initFixedFiltersConfig() создайте конфигурационный объект с массивом фильтров PeriodFilter и OwnerFilter, присвойте ссылку на данный объект атрибуту fixedFiltersConfig модели представления.

Исходный код замещающей схемы:

define("ContractSectionV2", ["BaseFiltersGenerateModule"], function(BaseFiltersGenerateModule) {
    return {
        // Название схемы раздела
        entitySchemaName: "Contract",
        // Методы модели представления раздела.
        methods: {
            // Инициализирует фиксированные фильтры.
            initFixedFiltersConfig: function() {
                // Создание конфигурационного объекта.
                var fixedFilterConfig = {
                    // В качестве схемы объекта для фиксированных фильтров указывается схема объекта раздела.
                    entitySchema: this.entitySchema,
                    // Массив фильтров.
                    filters: [
                        // Фильтр периода.
                        {
                            // Название фильтра.
                            name: "PeriodFilter",
                            // Заголовок фильтра.
                            caption: this.get("Resources.Strings.PeriodFilterCaption"),
                            // Тип данных — дата.
                            dataValueType: this.Terrasoft.DataValueType.DATE,
                            // Дата начала периода фильтрации.
                            startDate: {
                                // Фильтруются данные из колонки [Date].
                                columnName: "StartDate",
                                // Значение по умолчанию — начало текущей недели.
                                defValue: this.Terrasoft.startOfWeek(new Date())
                            },
                            // Дата завершения периода фильтрации — завершение текущей недели.
                            dueDate: {
                                columnName: "StartDate",
                                defValue: this.Terrasoft.endOfWeek(new Date())
                            }
                        },
                        // Фильтр ответственного.
                        {
                            // Название фильтра.
                            name: "Owner",
                            // Заголовок фильтра.
                            caption: this.get("Resources.Strings.OwnerFilterCaption"),
                            // Фильтрация данных из колонки [Owner].
                            columnName: "Owner",
                            // Значение по умолчанию — контакт текущего пользователя.
                            // Берется из системной настройки.
                            defValue: this.Terrasoft.SysValue.CURRENT_USER_CONTACT,
                            // Тип данных — справочник.
                            dataValueType: this.Terrasoft.DataValueType.LOOKUP,
                            // Фильтр.
                            filter: BaseFiltersGenerateModule.OwnerFilter
                        }
                    ]
                };
                // Атрибуту [FixedFilterConfig] присваивается ссылка на созданный конфигурационный объект.
                this.set("FixedFilterConfig", fixedFilterConfig);
            }
        }
    };
});

После сохранения схемы и перезагрузки системы в разделе [Договоры] ([Contracts]) появится блок фиксированных фильтров, который позволит отбирать договоры как по дате их начала, так и по ответственному сотруднику (рис. 3).

Рис. 3. — Результат выполнения примера

© Terrasoft 2002-2019.

Был ли данный материал полезен?

Как можно улучшить эту статью?