1. ness 13.02.14 12:49 Сейчас в теме

Свернуть / Развернуть дерево значений

Долго бегал в поисковик мучался искал как свернуть / развернуть дерево значений программно, безрезультатно. В итоге в который раз убедился, что Отладчик + Синтаксис-помощник рулят. Результаты моих поисков:

//Свернуть все выделенные строки дерева
Для каждого Строка Из ЭлеменетыФормы.ТабличноеПоле.ВыделенныеСтроки Цикл
ЭлементыФормы.ДеревоЗначений.Развернуть(Строка);
КонецЦикла;

//Развернуть все строки дерева
Для каждого Строка Из ЭлеменетыФормы.ДеревоЗначений.Значение.Строки Цикл
ЭлементыФормы.ДеревоЗначений.Свернуть(Строка);
КонецЦикла;
imbalance; MsDjuice; Lapitskiy; Merkalov; user645544_Snimchenko.Aa; d4rkmesa; sapervodichka; Pe3HuK_AJIeKc; mailrum2004; wokituk; matveev.andrey.v; FeliceYa; monkbest; marku; rokhin; +15 Ответить
Ответы
Избранное Подписка Сортировка: Древо
2. Rothschild 13.02.14 16:04 Сейчас в теме
(1) ness, ну молодец!!!
а вопрос то в чем, где это в мануале лежит ???
3. Rothschild 13.02.14 16:08 Сейчас в теме
(2)
пути в синтакс помошнике:

для 8.1: Интерфейсные объекты \ Элементы управления \ Табличное поле \ ТабличноеПоле \ Методы
для 8.2: Интерфейс (обычный) \ Элементы управления \ Табличное поле \ ТабличноеПоле \ Методы


ТабличноеПоле (TableBox)
Развернуть (Expand)
Синтаксис:
Развернуть(<Строка>, <С подчиненными>)

Параметры:
<Строка> (обязательный)
Строка табличного поля. Тип значения строки табличного поля приведен в описаниях расширений табличного поля у соответствующих объектов.
<С подчиненными> (необязательный)
Тип: Булево. Определяет необходимость раскрытия подчиненных узлов. Истина - раскрывать подчиненные узлы, Ложь - не раскрывать подчиненные узлы.
Значение по умолчанию: Ложь
Описание:
Разворачивает узел в указанной строке дерева.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Используется в случае, если с табличным полем связано дерево значений или список справочника в виде дерева.
Показать


ТабличноеПоле (TableBox)
Свернуть (Collapse)
Синтаксис:
Свернуть(<Строка>)

Параметры:
<Строка> (обязательный)
Строка табличного поля. Тип значения строки табличного поля приведен в описаниях расширений табличного поля у соответствующих объектов.
Описание:
Сворачивает узел в указанной строке дерева.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Используется в случае, если с табличным полем связано дерево значений или список справочника в виде дерева.
Показать
4. Rothschild 13.02.14 16:16 Сейчас в теме
(3)
ну еще есть аналогичный путь для управляемых форм:
для 8.2: Интерфейс (управляемый) \ Таблица формы \ ТаблицаФормы \ Методы

ЗЫ:
еще один полезный метод из той же серии:

ТаблицаФормы (FormTable)
Развернут (Expanded)

Синтаксис:

Развернут(<Строка>)
Параметры:

<Строка> (обязательный)

Тип: Произвольный.
Идентификатор строки таблицы.
Возвращаемое значение:

Тип: Булево.

Описание:

Определяет, развернут ли узел дерева в указанной строке.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
Показать
6. nporrep 47 29.12.14 11:33 Сейчас в теме
(1) ness, не Элеменеты, а Элементы, нуб
17. romankoav 24.10.18 13:06 Сейчас в теме
комментарии то поменяйте местами
5. ness 13.02.14 18:34 Сейчас в теме
А это не вопрос, это чтобы поисковик проиндексировал и какой нибудь нуб если столкнется с той же проблемой, мог без проблем ее решить.

З.Ы. Спасибо что дополнил пост.
Daynestro07; Olenevod; pm74; Sanz; +4 Ответить
7. hexus 3 29.12.14 12:01 Сейчас в теме
Вообще-то у элеменат формы с деревом есть свойство как его отображать.
Не проще ли было написать
ЭлементыФормы.Дерево.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;
Merkalov; elga666; JohnConnor; Светлый ум; German_Tagil; config; EMelihoff; ya.Avoronov; psa247; pbahushevich; kivals; UniversaLL; colci; rokhin; +14 Ответить
12. pbahushevich 30.04.16 22:47 Сейчас в теме
(7) hexus, О спасибо тебе мудрый человек!!!!
13. German_Tagil 7 21.12.16 13:49 Сейчас в теме
(7) hexus, Работает на обычных формах
8. renmy 86 09.02.15 16:59 Сейчас в теме
НачальноеОтображениеДерева не сработало.

Я сделал так:

&НаКлиенте
Процедура РазвернутьДерево(Команда)
	
	ЭлементыДерева = ДеревоТоваров.ПолучитьЭлементы();
	Для каждого ЭлементДерева Из ЭлементыДерева Цикл
		Элементы.ДеревоТоваров.Развернуть(ЭлементДерева.ПолучитьИдентификатор());
	КонецЦикла;
		
КонецПроцедуры

&НаКлиенте
Процедура СвернутьДерево(Команда)
	
	ЭлементыДерева = ДеревоТоваров.ПолучитьЭлементы();
	Для каждого ЭлементДерева Из ЭлементыДерева Цикл
		Элементы.ДеревоТоваров.Свернуть(ЭлементДерева.ПолучитьИдентификатор());
	КонецЦикла;
	
КонецПроцедуры
Показать
skyvixen; egorcheg1; Kesak; pyrkin_vanya; steelmorgan; Daynestro07; johny1987; Andreyyy; Uncore; BalalaykaJazz; Anchoret; pm74; director04; colci; AntonS; +15 Ответить
9. Nuuq 71 24.07.15 15:58 Сейчас в теме
УФ дерево Развернуть

&НаКлиенте
Процедура КомандаТаблицаДанныхРазвернутьВсе(Команда)
	
	РазвернутьВсеДерево(ТаблицаДанных.ПолучитьЭлементы());	
	
КонецПроцедуры

&НаКлиенте
Процедура РазвернутьВсеДерево(КоллекцияЭлементов) 
	
	Для каждого ЭлементКоллекции Из КоллекцияЭлементов Цикл
		Элементы.ТаблицаДанных.Развернуть(ЭлементКоллекции.ПолучитьИдентификатор());
		
		ВложенныеЭлементыКоллекции = ЭлементКоллекции.ПолучитьЭлементы();
		Если (ВложенныеЭлементыКоллекции.Количество() > 0) Тогда
			РазвернутьВсеДерево(ВложенныеЭлементыКоллекции);
		Иначе
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры
Показать


УФ дерево Свернуть

&НаКлиенте
Процедура КомандаТаблицаДанныхСвернутьВсе(Команда)
	
	СвернутьВсеДерево(ТаблицаДанных.ПолучитьЭлементы());	
	
КонецПроцедуры

&НаКлиенте
Процедура СвернутьВсеДерево(КоллекцияЭлементов) 
	
	Для каждого ЭлементКоллекции Из КоллекцияЭлементов Цикл
		ВложенныеЭлементыКоллекции = ЭлементКоллекции.ПолучитьЭлементы();
		Если (ВложенныеЭлементыКоллекции.Количество() > 0) Тогда
			СвернутьВсеДерево(ВложенныеЭлементыКоллекции);
		Иначе
			Прервать;
		КонецЕсли;
		
		Элементы.ТаблицаДанных.Свернуть(ЭлементКоллекции.ПолучитьИдентификатор());
	КонецЦикла;
	
КонецПроцедуры
Показать


Предлагаю как-то развивать тему еще XD
Daynestro07; e.a.afanasyev; myoker; IDija; +4 Ответить
10. monkbest 104 03.11.15 09:10 Сейчас в теме
Неть, рекурсия не нужнА. У метода развернуть второй параметр делаем = ИСТИНА, что означает развернуть с подчиненными.
Spacer; murenysh; kuzyara; IDija; +4 Ответить
19. Diversus 2061 07.06.19 10:15 Сейчас в теме
(10) У методе Развернуть этот параметр есть, а вот у метода Свернуть этого параметра нет.
11. dtripleh 15.01.16 08:32 Сейчас в теме
В новой платформе можно развернуть все уровни дерева, указав в свойстве таблицы НачальноеОтображениеДерева - раскрыть все уровни
kuzyara; suggestive; pbahushevich; +3 Ответить
14. Fil15 02.10.17 15:30 Сейчас в теме
А дня обычных форм есть как свернуть/развернуть дерево по заданному уровню?
15. user868076 23.11.17 15:41 Сейчас в теме
При входе на сервер с рабочего стола исчезает значок "свернуть". Как настроить?
16. vasilievil 121 12.05.18 22:42 Сейчас в теме
&НаКлиенте
Процедура РазвернутьВсеДерево(Команда)
   Элементы.Дерево.Развернуть(0,Истина);    
КонецПроцедуры
Annette-326523; +1 Ответить
18. tireal 70 28.02.19 14:55 Сейчас в теме
(16) код не рабочий
(11) это работает только при открытии, при заполнении дерева в форме то данное свойство не на что не влияет.
20. Diversus 2061 07.06.19 10:17 Сейчас в теме
&НаКлиенте
Процедура СвернутьВсеЗадачи(Команда)
	
	СвернутьРазвернутьДерево(Дерево.ПолучитьЭлементы(), Ложь); 
	
КонецПроцедуры

&НаКлиенте
Процедура РазвернутьВсеЗадачи(Команда)
	
	СвернутьРазвернутьДерево(Дерево.ПолучитьЭлементы(), Истина); 
	
КонецПроцедуры

// Сворачивает или разворачивает дерево на форме (включая все дочерние элементы).
//
// Параметры:
//	Дерево - ДеревоЗначений - исходное дерево на форме.
//	Развернуть - Булево - развернуть (истина) или свернуть (ложь).
//
&НаКлиенте
Процедура СвернутьРазвернутьДерево(Дерево, Знач Развернуть) Экспорт 
	
    Для Каждого ЭлементКоллекции Из Дерево Цикл
        ВложенныеЭлементыКоллекции = ЭлементКоллекции.ПолучитьЭлементы();
        Если ВложенныеЭлементыКоллекции.Количество() > 0 Тогда
            СвернутьРазвернутьДерево(ВложенныеЭлементыКоллекции, Развернуть);

			Если Развернуть = Истина Тогда
	        	Элементы.Дерево.Развернуть(ЭлементКоллекции.ПолучитьИдентификатор());
			Иначе
				Элементы.Дерево.Свернуть(ЭлементКоллекции.ПолучитьИдентификатор());
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры
Показать
tmh_mazin_p; +1 Ответить
21. kassbar 118 19.06.19 10:58 Сейчас в теме
СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева()
Jungle Murzik; skyvixen; vitolt; DianaS; softgarant; albert.goncharov; +6 Ответить
22. user1231816 25.10.19 14:30 Сейчас в теме
(21) А свернуть типовым методом возможно? Глобальный поиск "СвернутьУзлыДерева" не дал результатов
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Бизнес-аналитик 1С
Москва
зарплата от 150 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата до 130 000 руб.
Полный день

КОНСУЛЬТАНТ 1С ПО ОПЕРАТИВНОМУ УЧЕТУ
Москва
зарплата от 120 000 руб.
Полный день