Умеет:
- Отмечать строки в переданном дереве флажками (флажок выводится в первой колонке, имя колонки флажка передаётся, если колонки нет - добавляется);
- Возвращать результат отметки в виде:
- Дерева значений
- Таблицы значений
- Списка значений
- Только "концевые" строки или все; только отмеченные или все - в любых комбинациях.
Для вызова: Отмеченное=ПолучитьОбщуюФорму("ФормаОтметкиДерева").ОтметитьСтрокиДерева(ТвоеДерево,"КолонкаПометки"[,Новый Структура("флТолькоОтмеченные,флТолькоКонцевые,ЧтоВозвращать,флПоказВозвращаемогоЗначения,КолонкаПредставления,ЗаголовокФормы,Таймаут",Истина,Истина,"Дерево,Список,Таблица",Истина,ТвоеДерево.Колонки[1].Имя,"Поставьте флажки, где успеете:",10)])[.Дерево/Список/Таблица];
Результат вызова - структура; можно обращаться сразу к результатному дереву/списку/таблице, по ключу структуры (Дерево,Таблица,Список). Если от выбора отказались или не успели - возвращает Неопределено.
Форма для тестирования открывается уже максимально настроенной.
Форму отметки можно сразу перетаскивать в общие, дополнительной настройки не требует.
Зачем: кроме того, что обработка содержит примеры разнообразных трансформаций дерева путём рекурсивных обходов (и только их!), в ней же - обработка установки "серого" флага на родителей, отметки дочерних строк, пример полной инкапсуляции обработки (вызов одной строкой). И простейший таймер :)
Ну и не всегда можно обойтись отметкой варианта/вариантов из списка, бывают и сложные ситуации :)