Уведомления
Очистить все
1С:Предприятие 8.x
1
Записи
1
Пользователи
0
Likes
339
Просмотры
Создатель темы 03/01/2021 1:28 пп
Как заполнить дерево значений (на сервере)?
&НаСервере Процедура ЗаполнитьДеревоНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Родитель КАК Родитель, | Номенклатура.Ссылка КАК Номенклатура |ИЗ | Справочник.Номенклатура КАК Номенклатура |ИТОГИ ПО | Родитель"; ПромДерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); ЗначениеВРеквизитФормы(ПромДерево, "Дерево"); КонецПроцедуры
Как добавить строку (на клиенте)?
&НаКлиенте Процедура ДобавитьСтрокуНаКлиенте(Команда) ИдентификаторСтроки = Элементы.Дерево.ТекущаяСтрока; ТекущаяСтрока = Дерево.НайтиПоИдентификатору(ИдентификаторСтроки); НоваяСтрокаДерева = ТекущаяСтрока.ПолучитьЭлементы().Добавить(); КонецПроцедуры
Как удалить текущую строку (на клиенте)?
&НаКлиенте Процедура УдалитьТекущуюСтрокуНаКлиенте(Команда) ИдентификаторСтроки = Элементы.Дерево.ТекущаяСтрока; ТекущаяСтрока = Дерево.НайтиПоИдентификатору(ИдентификаторСтроки); СтрокаРодитель = ТекущаяСтрока.ПолучитьРодителя(); Если СтрокаРодитель = Неопределено Тогда Дерево.ПолучитьЭлементы().Удалить(ТекущаяСтрока); Иначе СтрокаРодитель.ПолучитьЭлементы().Удалить(ТекущаяСтрока); КонецЕсли; КонецПроцедуры
Как очистить дерево значений (на клиенте)?
&НаКлиенте Процедура ОчиститьДерево(Команда) Дерево.ПолучитьЭлементы().Очистить(); КонецПроцедуры
Как очистить дерево значений (на сервере)?
&НаСервере Процедура ОчиститьДерево(Команда) ДЗ = РеквизитФормыВЗначение("Дерево"); ДЗ.Строки.Очистить(); ЗначениеВРеквизитФормы(ДЗ, "Дерево"); КонецПроцедуры
Как перебрать дерево рекурсивно (на клиенте)?
&НаКлиенте Процедура ОбойтиДеревоРекурсивно(Команда) ОбойтиРекурсивноСтрокиДереваНаКлиенте(Дерево.ПолучитьЭлементы()); КонецПроцедуры &НаКлиенте Процедура ОбойтиРекурсивноСтрокиДереваНаКлиенте(Строки) Для Каждого СтрокаДерева Из Строки Цикл Сообщить(СтрокаДерева.Номенклатура); ПодчиненныеСтроки = СтрокаДерева.ПолучитьЭлементы(); Если ПодчиненныеСтроки.Количество() > 0 Тогда ОбойтиРекурсивноСтрокиДереваНаКлиенте(ПодчиненныеСтроки); КонецЕсли; КонецЦикла; КонецПроцедуры
Как перебрать дерево рекурсивно (на сервере)?
&НаСервере Процедура ОбойтиДеревоРекурсивноНаСервере() ДеревоЗначений = РеквизитФормыВЗначение("Дерево"); ОбойтиДеревоРекурсивноСтрокиДереваНаСервере(ДеревоЗначений); КонецПроцедуры &НаСервере Процедура ОбойтиДеревоРекурсивноСтрокиДереваНаСервере(ДеревоЗначений) Для Каждого СтрокаДерева Из ДеревоЗначений.Строки Цикл Сообщить(СтрокаДерева.Номенклатура); Если СтрокаДерева.Строки.Количество() > 0 Тогда ОбойтиДеревоРекурсивноСтрокиДереваНаСервере(СтрокаДерева); КонецЕсли; КонецЦикла; КонецПроцедуры