"Древесный отбор" или фильтр для дерева значений


Обработка позволяет применить фильтр на данные с типом «ДеревоЗначений». Имеется возможность вызвать из любого документа, обработки и других элементов конфигурации и, передав исходное значение, вернуть данные уже с учётом отбора.

Функционал:

В обработке реализован отбор строк  для данных с типом «ДеревоЗначений» по параметрам, аналогично стандатному отбору строк для данных с типом «ТаблицаЗначений». 

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

Использование:

Загрузить данные можно тремя способами:

  • Открыть из файла, предварительно сохранённого из данной обработки. Расширение файла по умолчанию *.vt1c (Value Tree 1C), но можно выбрать любое.
  • Получить из запроса. Окно работы с запросом открывается по кнопке, представляет из себя нечто похожее на окно консоли запросов. Результат всегда выводится в виде дерева. Для того, чтобы дерево выглядело именно деревом, а не таблицей, в запросе должны быть поля группировки и группировочные поля в итогах.
  • Передать ДеревоЗначений можно параметром в экспортную функцию обработки:
 ОтборДляДереваЗначений(ДеревоЗначений)

Параметр «ДеревоЗначений» — исходное ДеревоЗначений

При нажатии кнопки «ОК», функция возвращает исходное ДеревоЗначений с текущим отбором строк.

Горячие клавиши:

Основное окно

  • Ctrl+O — Открыть файл
  • Ctrl+S — Сохранить файл
  • Ctrl+Q — Открыть окно работы с запросом
  • F5 — Применить установленный отбор

Окно работы с запросом

  • F2 — Параметры
  • F5 — Выполнить запрос
  • Ctrl+Q — Конструктор запроса
  • Ctrl+E — Использовать результат запроса

Особенности и ограничения:

  • Отбор строк происходит на самом последнем уровне вложенности в каждой ветке дерева.
  • Нетипизированные поля недоступны для отбора
  • Отбор по полю с именем «Родитель» не увенчается успехом, т.к. у строки ДереваЗначений есть своё поле «Родитель», коророе хранит строку уровнем выше.

Применение:

Для работы с ранее сохранённым деревом или полученным из запроса достаточно просто запустить обработку (Файл — Открыть). У пользователя должны быть права на открытие внешних обработок.

Обратиться к функции из любого места конфигурации можно:

  • если обработка встроена в конфигурацию
 Обработки.<ИмяОбработкиВКонфигурации>.ОтборДляДереваЗначений(ДеревоЗначений)
  • если обработка установлена во внешние
 ОбработкаДрева = Справочники.ВнешниеОбработки.НайтиПоКоду("<КодОбработки>");
ДвоичныеДанные = ОбработкаДрева.ХранилищеВнешнейОбработки.Получить();
ИмяФайла = ПолучитьИмяВременногоФайла("epf");
ДвоичныеДанные.Записать(ИмяФайла);
ОбработкаДрева = ВнешниеОбработки.Создать(ИмяФайла);
ДеревоЗначенийПослеОтбора = ОбработкаДрева.ОтборДляДереваЗначений(ДеревоЗначений);

Перспективы развития:

  • Возможность отбора на любом уровне
  • Суммирование на верхних уровнях
  • Свои формулы расчёта на разных уровнях
  • Ваши идеи и пожелания

Leave a Comment

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