Расширение содержит два общих модуля:
-УД_УправлениеДеревомСервер (Создание дерева, заполнение данных, сохранение изменений обратно в таблицу)
-УД_УправлениеДеревомКлиент (Настройка видимости стандартных команд командной панели дерева)
Создание дерева
Основная процедура — ПреобразоватьТаблицуФормыВДеревоФормы(Форма, Параметры).
Вызывайте её в обработчиках формы:
- ПриСозданииНаСервере
- ПриЧтенииНаСервере
Что происходит при вызове:
1. Исходная таблица формы скрывается.
2. Создаётся реквизит формы типа `ДеревоЗначений` с именем `ИмяСписка + "Дерево"` и одноимёнными колонками.
3. Создаётся элемент формы «дерево» с группировкой по указанной иерархии.
4. Группировочные строки недоступны для редактирования.
5. Переносятся свойства таблицы и полей, заголовки, кнопки командной панели, а также события таблицы и полей.
Пример вызова процедуры:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СоздатьОбновитьДерево();
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
СоздатьОбновитьДерево();
КонецПроцедуры
&НаСервере
Процедура СоздатьОбновитьДерево()
ПараметрыДерева = Новый Структура;
ПараметрыДерева.Вставить("Иерархия", "Склад, ВидНоменклатуры");
ПараметрыДерева.Вставить("ИмяТаблицы", "Объект.Товары");
УД_УправлениеДеревомСервер.ПреобразоватьТаблицуФормыВДеревоФормы(ЭтотОбъект, ПараметрыДерева);
КонецПроцедуры
Сохранение изменений
После редактирования дерева нужно записать данные обратно в исходную таблицу — процедура СохранитьДанныеДереваВТаблицуФормы(Форма, Параметры). Вызывается в событии ПередЗаписьюНаСервере.
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПараметрыДерева = Новый Структура;
ПараметрыДерева.Вставить("ИмяТаблицы", "Объект.Товары");
УД_УправлениеДеревомСервер.СохранитьДанныеДереваВТаблицуФормы(ЭтотОбъект, ПараметрыДерева);
КонецПроцедуры
Командная панель
Модуль УД_УправлениеДеревомКлиент является вспомогательным. У командной панели таблицы платформа не даёт прочитать признаки «Автозаполнение» и «Состав команд». Поэтому видимость стандартных команд дерева настраивается по состоянию исходной таблицы — процедура УД_УправлениеДеревомКлиент.УстановкаВидимостиКомандДерева. Вызывается в обработчике ПриОткрытии
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ТаблицаИсточник = Элементы.Товары;
ДеревоПриемник = Элементы["ТоварыДерево"];
УД_УправлениеДеревомКлиент.УстановкаВидимостиКомандДерева(ТаблицаИсточник, ДеревоПриемник);
КонецПроцедуры
База с примером
В архиве лежит также dt с тестовым документом.
В списке документа Продажи можно включить/отключить функционал расширения.
Пример отключенного и включенного расширения:

Писалось для самописной конфигурации. Платформа 1С:Предприятие 8.3 (8.3.27.1786).
Вступайте в нашу телеграмм-группу Инфостарт

