ДанныеФормыДерево вставить строки

1. fugu 23 14.02.22 17:34 Сейчас в теме
Добрый день.

Управляемые формы.
Есть документ в табличную часть выгружено "дерево".
Тип данных табличной части - Данные формы дерево.
Для ускорения работы выгружен только 1 уровень дерева.
Необходимо при нажатии на "плюс", чтобы подгружались следующие уровни дерева.
Всего 3 уровня.
я выбрал данные, хочу их вставить нижнем уровнем текущей строки по событию - ПередРазворачиванием
Выгрузить по новой все дерево до 2 уровня или 3 уровня - не вариант.
Нужно выгружать именно только значения текущей строки.
Подскажите, как реализовать?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
7. Sashares 35 14.02.22 17:51 Сейчас в теме +1 $m
(6)Можно проверять количество подчиненных строк, как в (3) предложено.

ТекДанные = Элементы.МоеДерево.ТекущиеДанные;
СписокЭлементов = ТекДанные.ПолучитьЭлементы();
Если СписокЭлементов.Количество()= 0 Тогда
//значит подчиненных строк нет, надо добавить
НоваяСтрока = СписокЭлементов.Добавить();

КонецЕсли;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 14.02.22 17:41 Сейчас в теме
(1) А в чем именно сложность?
Находите в полном дереве строку нужного уровня, которая соответствует текущей строке дерева формы, добавляете подчиненные строки.
3. soft_wind 14.02.22 17:42 Сейчас в теме
что бы в строке дерева был плюсик, в нее надо поместить фиктивную подстроку, тогда сработает событие Перед разворачиванием,
а там примерно так


&НаКлиенте
Процедура ДеревоМетаданныхПередРазворачиванием(Элемент, Строка, Отказ)

ЗаполнитьСтрокуДереваНаСервере(Строка);

КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСтрокуДереваНаСервере(Строка)

лкСтрока = ДеревоМетаданных.НайтиПоИдентификатору(Строка);
лкСтроки = лкСтрока.ПолучитьЭлементы();
Если лкСтроки.Количество() = 1 Тогда
лкСтроки.Очистить();
ЗаполнитьДеревоМетаданных(лкСтрока,0 ,Метаданные[лкСтрока.ПараметрИмя],0 ,лкСтрока.Картинка ,1 );
КонецЕсли;

КонецПроцедуры

Показать
4. fugu 23 14.02.22 17:42 Сейчас в теме
(2) строку нашёл. А вот как вставить подчиненную строку не пойму.
5. Sashares 35 14.02.22 17:45 Сейчас в теме
(4)Примерно так:

ТекДанные = Элементы.МоеДерево.ТекущиеДанные;
НоваяСтрока = ТекДанные.ПолучитьЭлементы().Добавить();
6. fugu 23 14.02.22 17:49 Сейчас в теме
(5) А как понять они уже загружены или нет, чтобы не задублировать?
7. Sashares 35 14.02.22 17:51 Сейчас в теме +1 $m
(6)Можно проверять количество подчиненных строк, как в (3) предложено.

ТекДанные = Элементы.МоеДерево.ТекущиеДанные;
СписокЭлементов = ТекДанные.ПолучитьЭлементы();
Если СписокЭлементов.Количество()= 0 Тогда
//значит подчиненных строк нет, надо добавить
НоваяСтрока = СписокЭлементов.Добавить();

КонецЕсли;
8. soft_wind 14.02.22 17:53 Сейчас в теме
(6) я проверяю по количеству подчиненных если =1 значит еще не грузили,
так как подчиненных явно больше
9. fugu 23 14.02.22 18:06 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот