Расширенные фильтры на форме отчета СКД






Данная публикация показывает интересную реализацию фильтров на форме отчета, построенного с помощью СКД, которые позволяют выбирать вид сравнения с возможность выбора значений «В списке», «Не в списке», «Заполнено» и тд.

Представляю Вашему вниманию расширенные фильтры (отборы) на форме отчета, построенного на СКД.

Предыстория

Ни для кого не секрет, что СКД позволяет размещать свои отборы на форме, установив одну лишь галочку в настройках

После чего на форме отчета получить следующее

Свою функцию отбор выполнит, но с видом сравнения "Равно". СКД позволяет настроить поле отбора:

В этом окне можно указать любой доступный вид сравнения.

Но все это выглядит не очень красиво, особенно если этих отборов больше 6. А пользователю нравится когда удобно, все под рукой и фильтры не занимают пол экрана.

Предлагаю Вашему внимаю программное формирования группы отборов на форме, со всеми возможностями СКД.

Выглядеть это будет так:

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

В пруфах исходный код

Модуль менеджера

 

 

Форма отчета

 

 

 

Пример использования программных отборов отчета на СКД тестировался на платформе 8.3.13.1644.

Режим совместимости 8.3.10

10 Comments

  1. noprogrammer
    Свою функцию отбор выполнит, но с видом сравнения «Равно»

    Возможно (скорее всего) я чего не понял, но откуда такая информация, что в СКД форму можно вывести сравнение только на равенство? Вообще-то на форму можно точно так же вывести любое сравнение.

    Reply ↓
  2. Isonic

    (1)

    Вообще-то на форму можно точно так же вывести любое сравнение

    Можно, и я об этом сказал (3-ий скриншот)

    Reply ↓
  3. noprogrammer

    (2) Третий скриншот этот https://infostart.ru/upload/iblock/629/6293719cd5ce9620cd007ee5027767ca.jpg ?

    Я просто не совсем понял, для чего самому формировать отборы если они формируются автоматически

    Reply ↓
  4. Isonic

    (3)

    Я просто не совсем понял, для чего самому формировать отборы если они формируются автоматически

    Наберусь терпения и скопирую строчку под скриншотом

    «Но все это выглядит не очень красиво, особенно если этих отборов больше 6. А пользователю нравится когда удобно, все под рукой и фильтры не занимают пол экрана.»

    Дочитайте пожалуйста до конца!

    Reply ↓
  5. noprogrammer

    (4) Разумеется я все прочитал. Стандартными средствами отборы рисуются точно так же как Вы нарисовали программно.

    т.е. вот так https://infostart.ru/upload/iblock/021/021dddfd26cbe92da04ce2ef2acf4f9d.jpg

    Reply ↓
  6. noprogrammer

    Все, я понял, что Вас не устроило в стандартном формирование (то, что при равенстве оно не отображается на форме, на форме отображаются только другие виды сравнения)

    Reply ↓
  7. Isonic

    (5) Не совсем так, выбор вида сравнения появляется только когда оно не равно стандартному значению вида сравнения

    Reply ↓
  8. Isonic

    (6) Именно. Также плюс программного формирования — это контроль того что выбирает пользователь. На практике это бывает очень важным

    Reply ↓
  9. script

    Код не работает в конфигурациях в режиме совместимости ниже 8.3.10

    Reply ↓
  10. Isonic

    (9) Прошу прощения. Добавил в описание информацию о режиме совместимости.

    В общем можно опустить до 8.2.13 например, но тогда потребуются дополнительные манипуляции с элементами форм (нужно будет добавить кнопку выбора с картинкой, добавить настройку группы элементов по размерам,некоторые события не так работают и тд и тп.).

    Я исходил из того, что сейчас уже большинство разработчиков перешло на платформу 8.3.10 и более

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *