gifts2017

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

Опубликовал Сергей Мартин (SvoyakMartin) в раздел Программирование - Инструментарий

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

Функционал:

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

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

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

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

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

Параметр "ДеревоЗначений" - исходное ДеревоЗначений

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

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

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

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

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

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

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

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

Применение:

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

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

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

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

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

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

Наименование Файл Версия Размер Кол. Скачив.
Древесный отбор
.epf 23,62Kb
07.09.16
2
.epf 1.0 23,62Kb 2 Скачать

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа