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

Публикация № 1051106

Программирование - Работа с интерфейсом

Отчет СКД Отборы Фильтры Параметры расширенный

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

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

Предыстория

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

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

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

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

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

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

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

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

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

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

 

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

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

8

Скачать файлы

Наименование Файл Версия Размер
Расширенные фильтры на форме отчета СКД:
.erf 12,26Kb
13.05.19
4
.erf 1 12,26Kb 4 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. noprogrammer 132 07.05.19 15:32 Сейчас в теме
Свою функцию отбор выполнит, но с видом сравнения "Равно"


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

Можно, и я об этом сказал (3-ий скриншот)
3. noprogrammer 132 07.05.19 15:42 Сейчас в теме
(2) Третий скриншот этот https://infostart.ru/upload/iblock/629/6293719cd5ce9620cd007ee5027767ca.jpg ?
Я просто не совсем понял, для чего самому формировать отборы если они формируются автоматически
4. Isonic 114 07.05.19 15:46 Сейчас в теме
(3)
Я просто не совсем понял, для чего самому формировать отборы если они формируются автоматически

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

Дочитайте пожалуйста до конца!
5. noprogrammer 132 07.05.19 15:50 Сейчас в теме
(4) Разумеется я все прочитал. Стандартными средствами отборы рисуются точно так же как Вы нарисовали программно.
т.е. вот так https://infostart.ru/upload/iblock/021/021dddfd26cbe92da04ce2ef2acf4f9d.jpg
7. Isonic 114 07.05.19 15:54 Сейчас в теме
(5) Не совсем так, выбор вида сравнения появляется только когда оно не равно стандартному значению вида сравнения
6. noprogrammer 132 07.05.19 15:52 Сейчас в теме
Все, я понял, что Вас не устроило в стандартном формирование (то, что при равенстве оно не отображается на форме, на форме отображаются только другие виды сравнения)
8. Isonic 114 07.05.19 15:56 Сейчас в теме
(6) Именно. Также плюс программного формирования - это контроль того что выбирает пользователь. На практике это бывает очень важным
9. script 200 08.05.19 23:05 Сейчас в теме
Код не работает в конфигурациях в режиме совместимости ниже 8.3.10
10. Isonic 114 13.05.19 08:39 Сейчас в теме
(9) Прошу прощения. Добавил в описание информацию о режиме совместимости.

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