Фильтрация как в Excel

07.09.23

Разработка - Работа с интерфейсом

Расширение, дополняющее интерфейс всех динамических списков командами контекстного меню для установки отборов с помощью предварительно заполненных списков с флажками. Аналогичный функционал многие используют в MS Excel и Google Таблицах.

Скачать исходный код

Наименование Файл Версия Размер
Фильтрация как в Excel для ERP и, возможно, других конфигураций на базе БСП 3.1:
.cfe 41,44Kb
15
.cfe 1.1.0.0 41,44Kb 15 Скачать
Фильтрация как в Excel для УНФ:
.cfe 41,60Kb
1
.cfe 1.1.0.0 41,60Kb 1 Скачать

Описание (что получите после скачивания)

После установки расширения во всех динамических списках появятся три команды:

 

 

  • «Фильтр» - Показывает окно для выбора элементов, по которым планируется установить отбор в динамическом списке
  • «Отменить фильтр для колонки» - Удаляет ранее установленный отбор в текущей колонке.
  • «Отменить всю фильтрацию» - Удаляет все ранее установленные отбор в динамическом списке.

Узнайте о возможностях расширения за 8 минут:

 

 

Порядок работы

После выбора команды «Фильтр» появится такое окно:

 

 

Изначально список заполнен всеми уникальными значениями текущей колонки динамического списка.

Пользователь может выбрать одно или несколько значений и нажать «ОК». При этом окно исчезнет и произойдёт отбор динамического списка. За кадром программа сходит в настройки списка и добавит туда дополнительный отбор с видом сравнения «В списке» указанных значений:

 

 

Если на другой колонке нажать правую клавишу мыши и выбрать команду «Фильтр», то в списке отразятся только те уникальные значения, которые находятся в строках динамического списка, получившиеся в результате предыдущего отбора:

 

 

Кнопки «Установить флажки» и «Снять флажки» работают только для строк, которые в данный момент удовлетворяют поиску в поле ввода «Поиск», аналогично команде «(Выделить все результаты поиска)» в фильтре Excel.

 

 

Кнопка «Вставить из буфера» расставляет флажки у элементов, скопированных в буфер обмена:

 

 

Особенности

Так как вставка из буфера реализована через COM-объект, то на клиентах не Windows и на Веб-клиенте откроется окно с текстовым полем, куда пользователь вставит содержимое буфера сочетанием Ctrl+V и после нажатия кнопки «Вставить» выполнится алгоритм установки флажков.

Кнопки «Подбор» и «Добавить» здесь отсутствуют так как список уже предварительно заполнен всеми возможными значениями.

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

Если на колонке имеется другая картинка, то при включённой фильтрации она не заменяется.

 

Учет большого количества данных

Список фильтрации реализован аналогично динамическому списку: пользователю на форму выводится только первые 1000 значений.

Если пользователь активирует одну из последних 50 строк, то в список добавятся ещё 1000 строк и так далее...

При использовании кнопок «Установить флажки» и «Снять флажки» отметки расставятся даже на те строки, которые не выведены на форму, но с учётом совпадения с текстовым полем «Поиск»

 

О поиске

Поиск введённого фрагмента текста в поле «Поиск», как и при вставке искомых строк из буфера обмена, происходит по совпадению подряд идущих символов в представлении значения.
В запросе прописано условие:

ТаблицаЭлементов.Представление ПОДОБНО "%" + &ТекстПоиска + "%"

Если в датах нет времени, то представление без времени: Формат(Стр.Значение, "ДФ=dd.MM.yyyy");
В числах убираются символы разделителя групп: Формат(Стр.Значение, "ЧГ=0");
В строках отсекаются крайние незначительные символы:  СокрЛП(Стр.Значение)

 

Требования и рекомендации

Расширение будет работать в любой конфигурации с БСП не ниже 3.1.

Разработка тестировалась на платформе 1С:Предприятие 8.3 (8.3.23.1865) и конфигурации 1С:ERP Управление предприятием 2 (2.5.11.96).

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

Фильтрация Excel ДинамическийСписок Отбор Интерфейс

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    62157    43    59    

81

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

2400 руб.

29.06.2020    16954    22    4    

36

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    11281    767    elcoan    45    

106

Конструктор HTML, CSS и javascript

Инструментарий разработчика Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

10.04.2023    9969    153    acces969    31    

119

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3985    kalyaka    4    

29

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12340    1    5    

10

Условное оформление элементов форм в пользовательском режиме 1С (управление видимостью и доступностью элементов форм)

Работа с интерфейсом Платформа 1С v8.3 Платные (руб)

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

6000 руб.

18.01.2022    8978    1    2    

6

Программный интерфейс для доработки форм

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Реализовал простой способ программного создания новых элементов, команд и реквизитов на форме.

25.11.2021    9705    AtamanovYS    19    

139
Вознаграждение за ответ
Показать полностью
Отзывы
12. EvgeTrofi 127 03.09.23 05:27 Сейчас в теме
Есть ещё одна "особенность" в УНФ.
Не всегда удаётся команды фильтрации разместить сверху контекстного меню.
Если будут продуктивные предложения по решению этой проблемы - отблагодарю.
Прикрепленные файлы:
22. EvgeTrofi 127 07.09.23 05:49 Сейчас в теме
(21) Спасибо за подсказку! Перевёл тебе 3 СМ.
Невозможно выпустить универсальное решение для всех релизов и всех конфигураций, так как сами разработчики конфигураций вносят изменения в БСП.
В версии расширения 1.1.0.0 добавил упрощённую адаптацию к подчёркиваниям.
Теперь в расширении для УНФ в общем модуле ПодключаемыеКоманды добавлена адаптация:

&Вместо("ОпределитьИмяКоманды")
Функция ФКЕ_ОпределитьИмяКоманды(Форма, ИмяГруппы, ИдентификаторКоманды, СчетчикКомандСАвтогенерируемымИменем, ПрефиксКоманд)
	Результат = ПродолжитьВызов(Форма, ИмяГруппы, ИдентификаторКоманды, СчетчикКомандСАвтогенерируемымИменем, ПрефиксКоманд);
	Результат = СтрЗаменить(Результат, "ГруппаФильтрацияОбычное__", "ГруппаФильтрацияОбычное_");
	Возврат Результат;
КонецФункции


Так что, если у вас не свежий релиз УНФ и при выполнении команды конфигуратора [Действия] - [Конфигурация] - [Проверка возможности применения] укажет на эту процедуру, то просто удалите её.
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. bprogs 204 28.08.23 09:45 Сейчас в теме
было бы хорошо, если бы кнопка была для табличного документа
корум; Pira; +2 1 Ответить
2. kser87 2441 28.08.23 11:24 Сейчас в теме
Идея на миллион
Krasnyj; Nikola23; Pira; EvgeTrofi; maksa2005; SergVolga_34; +6 Ответить
3. bprogs 204 28.08.23 12:17 Сейчас в теме
4. wizard.ilmir02 123 28.08.23 14:45 Сейчас в теме
Багованная очень сильно, еще 7 см, пожалел то что скачал.
5. EvgeTrofi 127 28.08.23 18:19 Сейчас в теме
(4) добрый день, коллега.
Хотелось бы увидеть более подробное описание ошибки или, если очень сильно багованная, то список ошибок в студию.
PowerBoy; cleaner_it; +2 Ответить
6. markw 29.08.23 14:20 Сейчас в теме
Насколько я понимаю, работает только для колонок списка, которые добавлены в конфигураторе и не работает для колонок, которые добавили пользователи в режиме приложения из реквизитов через ссылку?
13. EvgeTrofi 127 03.09.23 06:31 Сейчас в теме
7. user646537_99253 29.08.23 15:11 Сейчас в теме +3 $m
Управление нашей фирмой, редакция 3.0 (3.0.5.114)
БСП 3.1.8.375
1С:Предприятие 8.3 (8.3.22.1923)
Не запустилась, вылезло куча багов. Толи в УНФ свой:)) подход к подключаемым командам, толи в БСП 3.1.8.375

1.Ошибка при установке значения атрибута контекста (Отображение)
{ОбщийМодуль.ПодключаемыеКоманды.Модуль(1159)}:Подменю.Отображение = ШаблонНового.Отображение;
пришлось исправлять
Процедура ПриОпределенииВидовПодключаемыхКоманд(ВидыПодключаемыхКоманд) Экспорт
	
	Вид = ВидыПодключаемыхКоманд.Добавить();
	Вид.Имя         = "ФильтрацияКакВExcel";
	Вид.ИмяПодменю  = "ГруппаФильтрация";
	Вид.Заголовок   = НСтр("ru = 'Фильтрация';|en = 'Filter'");
	Вид.Порядок     = 1;
   Вид.ВидГруппыФормы = ВидГруппыФормы.ГруппаКнопок;
   //Вид.Отображение = ОтображениеКнопки.Текст;// вместо 
   Вид.Отображение = ОтображениеГруппыКнопок.Авто;// делаем так
	
КонецПроцедуры
Показать


2. Ошибка
Добавляем нижнее подчеркивание ГруппаФильтрацияОбычное_ делаем так ГруппаФильтрацияОбычное__
Процедура ФКЕ_ВывестиКоманды(Форма, Команды, ПараметрыРазмещения)
	
	СлужебныеЭлементы = Новый Массив;
	СлужебныеЭлементы.Добавить("ГруппаФильтрацияОбычное__ПолучитьЭлементыТекущейВыборки");
	СлужебныеЭлементы.Добавить("ГруппаФильтрацияОбычное__ВыполнитьКомандуФильтрацииВКонтекс­тномМеню");
	СлужебныеЭлементы.Добавить("ГруппаФильтрацияОбычное__РасставитьОтметкиОтфильтрованныхКо­лонок");

3. Ошибка
Добавляем нижнее подчеркивание ГруппаФильтрацияОбычное_ делаем так ГруппаФильтрацияОбычное__
Процедура РасставитьОтметкиОтфильтрованныхКолонок(Форма, Источник) Экспорт

	ПараметрКоманды = Новый Структура;
	
	Контекст = Новый Структура();
	Контекст.Вставить("ИмяКомандыВФорме", "ГруппаФильтрацияОбычное__" + ФКЕ_ФильтрацияКлиентСервер.ИмяКомандыРасставитьОтметкиОтфильтрованныхКолонок());

и в этой процедуре добавляем нижнее подчеркивание ""ГруппаФильтрацияОбычное_ делаем так ГруппаФильтрацияОбычное__"
Процедура ПослеВыбораФильтра(Результат, ПараметрыВыполнения) Экспорт
	
	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Если ПараметрыВыполнения.Свойство("ИмяРеквизитаФормы") Тогда
		ПараметрыВыполнения.Форма.ЭтотОбъект[ПараметрыВыполнения.ИмяРеквизитаФормы].ЗагрузитьЗначения(Результат);
	Иначе //это фильтр контекстного меню
		
		Контекст = Новый Структура();
		Контекст.Вставить("ИмяКомандыВФорме", "ГруппаФильтрацияОбычное__ВыполнитьКомандуФильтрацииВКонтекс­тномМеню");
Показать

После заработало, но всё-же 7 см:))
8. EvgeTrofi 127 01.09.23 04:41 Сейчас в теме
(7) Я говорю, спасибо тебе, user646537_99253!
За проделанную тобой работу я перевёл тебе 3 см.
Чуть позже постараюсь выпустить релиз, адаптированный под УНФ, чтобы пользователям не приходилось редактировать расширение самостоятельно.
support; user646537_99253; +2 Ответить
10. user646537_99253 01.09.23 10:21 Сейчас в теме
(8) Есть ешё проблема в УНФ. Не правильно отрабатывает эта Процедура, не определяет
она правильно переменную "ЭтоФормаОбъекта", надо как-то по другому делать.
&После("ОбновитьКоманды")
Процедура ФКЕ_ОбновитьКоманды(Форма, Знач Источник)
	#Если Клиент Тогда
   ЭтоФормаОбъекта = ТипЗнч(Источник) = Тип("ДанныеФормыСтруктура");
   Если НЕ ЭтоФормаОбъекта Тогда
      ФКЕ_ФильтрацияКлиент.РасставитьОтметкиОтфильтрованныхКолонок(Форма, Источник);
   КонецЕсли;
	#КонецЕсли
КонецПроцедуры
Показать
11. EvgeTrofi 127 03.09.23 05:23 Сейчас в теме
(10) На какой форме наблюдаются проблемы с этим кодом?
14. user646537_99253 03.09.23 13:23 Сейчас в теме +3 $m
(11) Проблемы при открытие формы списка Номенклатуры. На первый взгляд я погрешил на этот код:)) Но проблема оказалась глубже.
В данной форме процедура
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)

не "Экспорт"-ная вызвать её в
Процедура РасставитьОтметкиОтфильтрованныхКолонок(Форма, Источник) Экспорт

так
Форма.Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат);
не получиться
16. EvgeTrofi 127 03.09.23 21:34 Сейчас в теме
(14) Это отклонение от стандартов БСП.

В БСП до 3.1 должно было быть так:
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
    ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
Показать


Либо так:
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
    ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
    ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
Показать


В статье об этом я упомянул и в видео тоже есть об этом несколько секунд. На остальное я не подписывался :)
Можно адаптировать самостоятельно костыльно конкретно под эту форму, добавив в расширение экспортную процедуру. Но это уже выходит за рамки данного проекта.

Да и чего там фильтровать то в списке номенклатуры? Там всего один столбец с наименованием.
Думаю, корректнее всего здесь вообще заглушку поставить, чтобы перед вызовом экспортной процедуры делать проверку на существование этой процедуры в модуле формы. Это исключит сообщение об ошибке, чтобы не раздражать пользователей.
В следующем релизе будет.

	Если Форма.ПараметрыПодключаемыхКоманд.Свойство("ВызовСервераЧерезОбработкуОповещения") Тогда
		
		Если ЕстьЭкспортныйМетод(Форма, "Подключаемый_ПродолжитьВыполнениеКомандыНаСервере") Тогда
			ОписаниеОповещения = Новый ОписаниеОповещения("Подключаемый_ПродолжитьВыполнениеКомандыНаСервере", Форма);
			ВыполнитьОбработкуОповещения(ОписаниеОповещения, Контекст);
			Результат = Контекст.Результат;
		ИначеЕсли ЕстьЭкспортныйМетод(Форма, "Подключаемый_ВыполнитьКомандуНаСервере") Тогда
			Форма.Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат);
		КонецЕсли;
		
	ИначеЕсли ЕстьЭкспортныйМетод(Форма, "Подключаемый_ВыполнитьКомандуНаСервере") Тогда
		Форма.Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат);
	КонецЕсли;
Показать
user646537_99253; +1 Ответить
23. EvgeTrofi 127 07.09.23 06:35 Сейчас в теме
(14) За подсказку о том, что на форме списка экспортных процедур БСП может и не оказаться перевёл тебе ещё 3 СМ.
user646537_99253; +1 Ответить
15. support 4449 03.09.23 14:29 Сейчас в теме
(8) Это была бы хорошая традиция, возвращать стартмани за найденные баги.
Dem1urg; EvgeTrofi; +2 Ответить
18. krumenko 32 06.09.23 16:38 Сейчас в теме
(15)Тем более если стартмани куплены за деньги)
17. krumenko 32 06.09.23 16:37 Сейчас в теме
(8)А релиз уже залит?
Ошибки все равно "сыпятся"
Пришлось купить подписку - и все равно ошибки
19. krumenko 32 06.09.23 16:40 Сейчас в теме
(17)Сведения о команде "ГруппаФильтрацияОбычное__ПолучитьЭлементыТекущейВыборки" не существуют.
20. EvgeTrofi 127 06.09.23 20:00 Сейчас в теме
(19)
Уточните пожалуйста, в какой конфигурации, на какой форме и при каком действии возникает ошибка?
21. krumenko 32 06.09.23 20:48 Сейчас в теме +3 $m
(20)Релиз не очень свежий 1.6.27.200. Удалил второе "подчеркивание": то есть сделал по всей видимости как было. И все "зашуршало")
EvgeTrofi; +1 Ответить
22. EvgeTrofi 127 07.09.23 05:49 Сейчас в теме
(21) Спасибо за подсказку! Перевёл тебе 3 СМ.
Невозможно выпустить универсальное решение для всех релизов и всех конфигураций, так как сами разработчики конфигураций вносят изменения в БСП.
В версии расширения 1.1.0.0 добавил упрощённую адаптацию к подчёркиваниям.
Теперь в расширении для УНФ в общем модуле ПодключаемыеКоманды добавлена адаптация:

&Вместо("ОпределитьИмяКоманды")
Функция ФКЕ_ОпределитьИмяКоманды(Форма, ИмяГруппы, ИдентификаторКоманды, СчетчикКомандСАвтогенерируемымИменем, ПрефиксКоманд)
	Результат = ПродолжитьВызов(Форма, ИмяГруппы, ИдентификаторКоманды, СчетчикКомандСАвтогенерируемымИменем, ПрефиксКоманд);
	Результат = СтрЗаменить(Результат, "ГруппаФильтрацияОбычное__", "ГруппаФильтрацияОбычное_");
	Возврат Результат;
КонецФункции


Так что, если у вас не свежий релиз УНФ и при выполнении команды конфигуратора [Действия] - [Конфигурация] - [Проверка возможности применения] укажет на эту процедуру, то просто удалите её.
9. muskul 01.09.23 09:04 Сейчас в теме
ну не правда, что бы было как в эксель нужно уменьшить шрифт раз в 10, что бы нельзя было разобрать что выбирать
awk; корум; +2 Ответить
12. EvgeTrofi 127 03.09.23 05:27 Сейчас в теме
Есть ещё одна "особенность" в УНФ.
Не всегда удаётся команды фильтрации разместить сверху контекстного меню.
Если будут продуктивные предложения по решению этой проблемы - отблагодарю.
Прикрепленные файлы:
24. krumenko 32 26.01.24 18:16 Сейчас в теме
Приветствую. Чуть доработал по пустой ссылке чтобы можно было. С примитивными ссылками все ок в частности по дате. А вот с ссылками проблема. Это ограничение платформы? В данном отборе ничего не выводит - пусто.
Прикрепленные файлы:
Оставьте свое сообщение