1С 8.2 УП : Дерево значений в таблицу значений или в табличную часть и обратно
Для одной организации надо было реализовать документы, где вместо табличной части надо использовать дерево и все это на управляемых формах. Но дерево нельзя сохранить в базе в текущем виде. Пришлось использовать табличную часть документа для хранения данных дерева. И при открытии формы получать данные из ТЧ и выводить их в дерево. Далее все манипуляции производить с деревом и при сохранении документа помещать данные в обратно в ТЧ.
Поиск по интернету не дал нужного варианта, пришлось реализовавыть свой механизм, используя информацию которая была на просторах интернета.
Для реализации такого механизма в ТЧ был добавлен реквизит “КлючСвязи” (обязательный реквизит) с типом число, куда помещался “НомерСтроки” (стандартный реквизит ТЧ) родителя (верхний уровень). А самый верхний элемент дерева имеет “КлючСвязи” равный 0.
На картинке ниже видно структуру дерева и структуру ТЧ
Нагрузка на сервер осуществляется при окрытии и при сохранении документа. А с деревом работают уже на клиенте.
На рабочей базе обрабатывается около 200 строк в одном документе.
Открытие и сохранение документа происходит моментально. С большем количеством строк не тестировалось.
Чтобы алгорит правильно работал, у рекизита фомы с типом дерево значений должны быть все реквизиты табличной части, кроме “КлючСвязи” и “НомерСтроки”. Иначе платформа выдаст ошибку. В дерево можо добавлять свои реквизиты отличные от ТЧ, они будут использоваться только в дереве.
Ниже приведен код преобразования дерева в таблицу и обратно.
Внутреннее устройство PostgreSQL, в помощь администраторам 1С 1 Понимание архитектуры используемой СУБД очень важно для правильной эксплуатации, но местами переоценено: администратору, DevOps-специалисту или разработчику прикладных систем вовсе необязательно знать подробности внутреннего устройства B-дерева или Вывод отчета СКД в коллекцию значений - Дерево Значений 5 В системе компоновки данных существует возможность выводить отчет не только в табличный документ, но и в коллекции значений (таблица значений, дерево значений).
Для вывода отчета в коллекцию предназначен объект ПроцессорВыводаРезультатаКомпоновкиВКВыгрузить результат запроса в Дерево Значений, Дерево Значений на форме 9 // Вывод результата запроса в Табличное Поле - Дерево значений
Запрос=Новый Запрос;
Запрос.Текст=" ВЫБРАТЬ
| ВзаиморасчетыСРаботникамиОрганизацийОстатки.ПериодВзаиморасчетов КАК ЗаМесяц,
| ВзаиморасчетыСРаботникамиОрганизацийОстатки.Физлицо КАК Выгрузка результата запроса в Таблицу и Дерево значений 0 Результат запроса может быть выгружен в таблицу значений или дерево значений с помощью метода Выгрузить. Затем над ними могут быть произведены другие операции: сортировка, свертка, перебор строк и другие действия.
Следующий пример выгружает результГорячие клавиши 1С Разработчику [ Конфигуратор ] 158 Основные команды:
Кодирование:
Ctrl+Пробел - вызов подсказки
Ctrl+Q - вызов шаблона
Ctrl+F1 - поиск в синтакс-помощнике
Ctrl + L - удалить текущую строку
Alt+Shift+F - отформатировать код
Исследование:
F12 - ставим курсор на проПосмотреть все результаты поиска похожих
Примеры работы с Деревом значений в УП 11 Так как работа с ДеревомЗначений и ТаблицейЗначений в данном контексте практически не отличается, в примере будет использоваться ДеревоЗначений, все тоже самое за исключением иерархии применимо и к ТаблицеЗначений. Как известно, в платформе 1С 8.1 нКак в дереве значений строку перекинуть в другой родитель? 6 Процедура ПереместитьСтрокуДерева(Дерево, ПеремещаемаяСтрока, НовыйРодитель, Уровень = 0)
Если Уровень = 0 Тогда
НоваяСтрока = НовыйРодитель.Строки.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ПеремещаемаяСтрока);
ПереместитьСтрокуДерева(ДеКак Свернуть, Развернуть узлы Дерева значений на форме? 4 Как программно свернуть/развернуть дерево значений на управляемой форме? Желательно НаКлиенте.
КоллекцияЭлементовДерева=ДеревоНоменклатуры.ПолучитьЭлементы();
//Свернуть дерево
Для Каждого Строка Из КоллекцияЭлементовДерева Цикл
ИдентификаторСтДеревоЗначений в ТекстовыйДокумент 3 // Выводит данные ДереваЗначений в ТекстовыйДокумент, пригодный к рассмотрению в отладчике, окне сообщений и показу.
//
// Параметры:
// рВетка - дерево значений, подлежащее выводу. Может иметь почти любую глубину иерархии, количество и тип коКак удалить строку или очистить дерево значений 2 Помните, что при при удалении/очистке строки, все подчиненные строки удаляются. Очистить дерево значений: Дерево.Строки.Очистить(); НаСервере
Процедура ОчиститьНаСервере()
тДерево = РеквизитФормыВЗначение("Дерево");
тДерево.Строки.ОПосмотреть все в категории Работа с Деревом Значений