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

Средний

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

Создать схему замещающей модели представления раздела 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Замещающая модель представления (Add —> Replacing view model).

  3. Заполните свойства схемы.

    • Код (Code) — "ContractSectionV2".
    • Заголовок (Title) — "Схема страницы раздела "Договоры"" ("Page schema - "Contracts" section").
    • Родительский объект (Parent object) — выберите "ContractSectionV2".
  4. Добавьте локализуемые строки с названиями фильтров.

    1. Добавьте локализуемую строку, которая содержит название фильтра по ответственному сотруднику.

      1. В контекстном меню узла Локализуемые строки (Localizable strings) нажмите кнопку scr_add_button.png.
      2. Заполните свойства локализуемой строки.

        • Код (Code) — "OwnerFilterCaption".
        • Значение (Value) — "Ответственный" ("Owner").
      3. Для добавления локализуемой строки нажмите Добавить (Add).
    2. Добавьте локализуемую строку, которая содержит название фильтра по периоду.

      1. В контекстном меню узла Локализуемые строки (Localizable strings) нажмите кнопку scr_add_button.png.
      2. Заполните свойства локализуемой строки.

        • Код (Code) — "PeriodFilterCaption".
        • Значение (Value) — "Период" ("Period").
      3. Для добавления локализуемой строки нажмите Добавить (Add).
  5. Реализуйте логику работы фильтрации. Для этого в свойстве methods реализуйте метод initFixedFiltersConfig(). В методе создайте конфигурационный объект с массивом фильтров PeriodFilter и OwnerFilter, присвойте ссылку на объект атрибуту fixedFiltersConfig модели представления.

    Исходный код схемы замещающей модели представления раздела представлен ниже.

    ContractSectionV2
    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);
                }
            }
        };
    });
    
  6. На панели инструментов дизайнера нажмите Сохранить (Save).

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

Чтобы посмотреть результат выполнения примера, обновите страницу раздела Договоры (Contracts).

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