Работа с деревом значений в 1С 8.3
30.05.2017

Работа с деревом значений в 1С 8.3

Автор: Белозерских Евгений

Заполнение дерева на основании запроса

    При таком способе заполнения данные будут полностью замещены результатом запроса (результат запроса должен возвращать данные с типом «Дерево значений»).
    Данная процедура выполняется на стороне сервера
&НаСервере
Процедура КомандаЗаполнитьНаСервере()
	ЗапросДанных	= Новый Запрос("ВЫБРАТЬ
	            	               |	Номенклатура.Ссылка КАК Номенклатура
	            	               |ИЗ
	            	               |	Справочник.Номенклатура КАК Номенклатура
	            	               |ГДЕ
	            	               |	НЕ Номенклатура.ЭтоГруппа
	            	               |ИТОГИ ПО
	            	               |	Номенклатура ТОЛЬКО ИЕРАРХИЯ");
	ЗначениеВРеквизитФормы(
		ЗапросДанных.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией),
	"Дерево");
КонецПроцедуры

Обойти строки рекурсивно на клиенте

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

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

Обойти строки рекурсивно на сервере

&НаСервере
Процедура ОбойтиРекурсивноНаСервереНаСервере()
	ДЗ	= РеквизитФормыВЗначение("Дерево");
	
	ОбойтиРекурсивноСтрокиДереваНаСервере(ДЗ);
КонецПроцедуры

&НаСервере
Процедура ОбойтиРекурсивноСтрокиДереваНаСервере(ДЗ)
	Для Каждого СтрокаДерева Из ДЗ.Строки Цикл 
		Сообщить(СтрокаДерева.Номенклатура);
		
		Если СтрокаДерева.Строки.Количество() > 0 Тогда 
			ОбойтиРекурсивноСтрокиДереваНаСервере(СтрокаДерева);
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

Очистить строки дерева значений

	// На стороне клиента
	Дерево.ПолучитьЭлементы().Очистить();

	// На стороне сервера
	ДЗ	= РеквизитФормыВЗначение("Дерево");
	ДЗ.Строки.Очистить();
	ЗначениеВРеквизитФормы(ДЗ, "Дерево");

Добавить новую строку в текущую ветку (на клиенте)

	ИдентификаторСтроки	= Элементы.Дерево.ТекущаяСтрока;
	ТекущаяСтрока		= Дерево.НайтиПоИдентификатору(ИдентификаторСтроки);
	НоваяСтрокаДерева	= ТекущаяСтрока.ПолучитьЭлементы().Добавить();

Удалить текущую строку (на клиенте)

	ИдентификаторСтроки	= Элементы.Дерево.ТекущаяСтрока;
	ТекущаяСтрока		= Дерево.НайтиПоИдентификатору(ИдентификаторСтроки);
	СтрокаРодитель		= ТекущаяСтрока.ПолучитьРодителя();
	
	Если СтрокаРодитель = Неопределено Тогда 
		Дерево.ПолучитьЭлементы().Удалить(ТекущаяСтрока);
	Иначе
		СтрокаРодитель.ПолучитьЭлементы().Удалить(ТекущаяСтрока);
	КонецЕсли;



Другие статьи

Работа с файлами - Диалог выбора файла

    Простой пример организации выбора файла на управляемой форме «1С»

Список значений 1С

    Практические примеры работы со списком значений в платформе «1С:Предприятие»

Отличие структуры от соответствия в «1С»

    «Соответствие» и «Структура» близкие по сути коллекции в платформе «1С:Предприятие». Обе коллекции представляют собой пару ключ и значение. Однако отличия все-таки есть

Примеры работы со строками в «1С» 8.3

    Примеры наиболее распространенных приемов при работе со строками в «1С»

Программная работа с торговым оборудование 1С 8.2

    В статье приведены примеры программного кода для подключения торгового оборудования, и обработки поступающих данных. Пример подходит для таких конфигураций как: Управление торговлей ред.10.3, Комплексная автоматизация ред.1.1, УПП ред. 1.3

Печать штрих-кода в 1С 8.2 (8.3)

    Практический пример вывода штрих-кода на печатную форму 1С

Определить GUID по "<Объект не найден>..." 1С

     Программный код для определения GUID объекта базы 1С, на который есть ссылка, а самого объекта нет. Т.е. когда вместо объекта, строка вида "<Объект не найден> (52:fe9233554c4425daa3eef4a851abc631)"

Узнать версию платформы и конфигурации 1С программно

     Иногда требуется ограничить выполняемое действие если версия платформы или конфигурации не соответствует необходимой редакции. Рассмотрим как программно можно получить данную информацию.
 

Узнать версию платформы и конфигурации 1С

      Первое что нужно знать при работе в 1С, это используемая конфигурация, ее версия, а так же версия платформы "1С:Предприятие". Выяснить это достаточно просто.
 

Получить макет в управляемых формах 1С 8.3

Рассмотрим как можно получить макет объекта (отчета, обработки), когда методы объекта не доступны на сервере

Про управляемые формы 1С (Начало)

Самое самое самое простое (начальное) что необходимо знать про управляемые формы )

1С внешняя печатная форма

В статье рассматривается процесс создания внешней печатной формы для конфигурации на платформе "1С:Предприятие" работающей в режиме "Толстый клиент" обычное приложение

Проверка файловой базы данных 1С (chdbfl.exe)

Проверка физической целостности базы данных на платформе "1С:Предприятие" утилитой chdbfl.exe

Тестирование и исправление базы

Немного о том, какими способами осуществляется тестирование и исправление базы данных на платформе "1С:Предприятие"

Журнал регистрации 1С

В журнале регистрации 1С, фиксируются действия пользователей (добавление, изменение элементов справочников, документов, начало и завершение сеансов), а так же действия выполняемые фоновыми заданиями (запуск, завершение, а так же действия выполняемые в ходы работы задания)

Что такое платформа "1С:Предприятие"

Перед тем как начать разработку в среде 1С, необходимо определиться что же такое ПЛАТФОРМА, для чего она нужна и чего не будет без нее! Этому вопросу и посвящена данная статья.