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






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

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

Предыстория

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

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

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

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

Но все это выглядит не очень красиво, особенно если этих отборов больше 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 не будет опубликован. Обязательные поля помечены *