Скопировать строку дерева значений 1с

Дерево значений 1с

Дерево значений 1с относится к универсальным коллекциям значений. Отличие от Таблицы значений в том, что строки Дерева Значений могут быть подчинены друг другу.

ДеревоЗначений — это программный объект встроенного языка, позволяющий строить произвольные иерархические наборы данных в памяти компьютера, отображать их в табличном и\или древовидном виде, а также программно и интерактивно манипулировать ими (добавлять, редактировать, удалять и сортировать строки).

Как и таблица значений, дерево состоит из строк и колонок. Строки располагаются вниз по вертикали, а колонки — вправо по горизонтали. Однако, в отличие от таблицы значений, строки дерева значений могут иметь подчиненные строки любой глубины вложенности.

Строки и колонки имеют индексы, по которым к ним можно обращаться напрямую (начинаются с 0). Кроме этого, к колонкам можно обращаться по идентификатору.

Свойства Дерева Значений 1с

Свойство Колонки Дерева значений

Содержит коллекцию колонок дерева значений.

Свойство Строки Дерева значений

Содержит коллекцию корневых строк дерева значений.

Методы Дерева Значений 1с

метод Скопировать() Дерева значений

Создает новый объект копированием текущего (копируются все колонки и строки).

метод ВыбратьСтроку() Дерева значений

Открывает диалог для интерактивного выбора строки дерева значений.

Дерево значений серверный тип данных, поэтому доступ к нему получаем на стороне сервера.

&НаКлиенте Процедура Дерево(Команда) ДеревоНаСервере(); Конецпроцедуры &НаСервере Процедура ДеревоНаСервере() ДеревоЗнач=Новый ДеревоЗначений; ДеревоЗнач.Колонки.Добавить("Склад"); ДеревоЗнач.Колонки.Добавить("Ячейка"); ДеревоЗнач.Колонки.Добавить("Количество"); Строка=ДеревоЗнач.Строки.Добавить(); Строка.Склад="Оптовый"; Строка.Ячейка="10"; Строка.Количество=150; КонецПроцедуры

Добавим несколько вложенных значений:

СтрокаН=Строка.Строки.Добавить(); СтрокаН.Ячейка="15"; СтрокаН=Строка.Строки.Добавить(); СтрокаН.Ячейка="25";

Создаем реквизит Дерево тип ДеревоЗначений. Для Реквизита указываются колонки:

Читайте также:  Кофейное дерево янтарная кислота

Дерево значений 1с

  • Склад;
  • Ячейка;
  • Количество.

Далее перетаскиваем Реквизит на форму.

В Завершении в модуль процедуры на Сервере добавляем код. Этот код выполняется аналогично выгрузке Таблицей Значений:

ЗначениеВДанныеФормы(ДеревоЗнач,объект.Дерево);

В результате получим следующее Дерево значений:

Дерево значений 1с

Полный код работы с Деревом значений 1с:

Дерево значений 1с

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

Обработка дерева значений в 1с производиться при помощи рекурсивной процедуры, т.е. процедуры вызывающей саму себя. Процесс обработки дерева значений может состоять из трех шагов:

Во-первых команда на клиенте:

Во-вторых процедура на Сервере получающая Дерево значений:

&НаСервере Процедура Команда2НаСервере() ДеревоЗнач=новый ДеревоЗначений; ДеревоЗнач=ДанныеФормыВЗначение(объект.Дерево,Тип("ДеревоЗначений")); Строки=ДеревоЗнач.строки; ОбработатьДерево(Строки); КонецПроцедуры

В третьих рекурсивная процедура обрабатывающая строки Дерева Значений:

&НаСервере Процедура ОбработатьДерево(Строки) Для каждого Строка из Строки цикл Сообщить(Строка(Строка.Склад)+":"+Строка(Строка.Ячейка)+":" +Строка(Строка.Количество)); ОбработатьДерево(Строка.Строки); конеццикла; конецпроцедуры 

Полный код обработки Дерева значений:

Источник

Как в дереве значений строку перекинуть в другой родитель?

Распечатать

Распечатать

1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » — конкретный продукт, который выпускает компания 1С . Что такое Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = » Иванов Иван Иванович» ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = » » ; Excel файл как Внешний источник данных 16
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа » Внешние источники данных» и назовем его просто » Excel» . https://helpf.pro/uploads/img V82.COMConnector.1: Не найдена лицензия COM-соединением 1
При подключении из одной базы к другой через COM внезапно стала появляться следующая ошибка: «V82.COMConnector.1: Не найдена лицензия COM-соединением», хотя никаких изменений на серверах не делалось. Релиз платформы был 8.2.13. Обновил до 14-го – не База 1С при запуске уходит в дамп и вылетает 1
В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное ускорение видеокарты В Window Посмотреть все результаты поиска похожих

Читайте также:  Лазурь для дерева pinotex extreme

Еще в этой же категории

Примеры работы с Деревом значений в УП 11
Так как работа с ДеревомЗначений и ТаблицейЗначений в данном контексте практически не отличается, в примере будет использоваться ДеревоЗначений, все тоже самое за исключением иерархии применимо и к ТаблицеЗначений. Как известно, в платформе 1С 8.1 н Дерево значений в таблицу значений или в табличную часть и обратно 9
Для одной организации надо было реализовать документы, где вместо табличной части надо использовать дерево и все это на управляемых формах. Но дерево нельзя сохранить в базе в текущем виде. Пришлось использовать табличную часть документа для хранени Преобразование дерева значений в таблицу значений и обратно 6
Хочу поделиться с посетителями сайта своим подходом к преобразованию таблицы значений в дерево значений и обратно. Вообще, при разработке отраслевой задачи, была необходимость почти во всех документах, выводить информацию в виде дерева и хранить ее Как Свернуть, Развернуть узлы Дерева значений на форме? 4
Как программно свернуть/развернуть дерево значений на управляемой форме? Желательно НаКлиенте. КоллекцияЭлементовДерева=ДеревоНоменклатуры.ПолучитьЭлементы(); //Свернуть дерево Для Каждого Строка Из КоллекцияЭлементовДерева Цикл ИдентификаторСт ДеревоЗначений в ТекстовыйДокумент 3
// Выводит данные ДереваЗначений в ТекстовыйДокумент, пригодный к рассмотрению в отладчике, окне сообщений и показу. // // Параметры: // рВетка — дерево значений, подлежащее выводу. Может иметь почти любую глубину иерархии, количество и тип ко Посмотреть все в категории Работа с Деревом Значений

Источник

Копирование части дерева значений

Здравствуйте, коллеги! Есть управляемая форма с двумя реквизитами типа «ДеревоЗначений».
Дерево1 изначально заполнено, Дерево2 пустое.
Как сделать так, чтобы при активации строки в Дереве1 автоматически заполнялось Дерево2? В Дерево2 должна встать ветка Дерева1, которая подчинена выделенной строке Дерева1.

Читайте также:  Кухня дерево графит мрамор

Например: Дерево1
Элемент1
Элемент2
Элемент3
Элемент4

При активации строки Элемент2 Дерево2 принимает следующий вид:
Элемент2
Элемент3
Элемент4

&НаКлиенте Процедура Дерево1ПриАктивизацииСтроки(Элемент) Если Элементы.Дерево1.ТекущиеДанные <> Неопределено Тогда Дерево2.ПолучитьЭлементы().Очистить(); ДобавленнаяСтрока = ДобавитьСтрокуВДверево2(Неопределено, Элементы.Дерево1.ТекущиеДанные); ЗаполнитьДерево2(ДобавленнаяСтрока, Элементы.Дерево1.ТекущиеДанные.ПолучитьЭлементы()); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ЗаполнитьДерево2(Родитель, Строкы) Для Каждого ТекСтрока Из Строкы Цикл ДобавленнаяСтрока = ДобавитьСтрокуВДверево2(Родитель, ТекСтрока); ЗаполнитьДерево2(ДобавленнаяСтрока, ТекСтрока.ПолучитьЭлементы()); КонецЦикла; КонецПроцедуры &НаКлиенте Функция ДобавитьСтрокуВДверево2(Родитель, СтрокаДляЗаполнения) Если Родитель = Неопределено Тогда НоваяСтрока = Дерево2.ПолучитьЭлементы().Добавить(); Иначе НоваяСтрока = Родитель.ПолучитьЭлементы().Добавить(); КонецЕсли; // НоваяСтрока.Колонка1 = СтрокаДляЗаполнения.Колонка1; // НоваяСтрока.Колонка2 = СтрокаДляЗаполнения.Колонка2; // . Возврат НоваяСтрока; КонецФункции

Дерево2 заполняется полностью при открытии формы, если не нужно или очисти Дерево2 (

Дерево2.ПолучитьЭлементы().Очистить()

) при откритии или имей переменная типа булево и заполняй Дерево2 когда переменная истина (переменная будет истина при откритии)

Источник

Оцените статью