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

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

