Имеется результат запроса. Данный результат запроса грузится в ТЧ типа "Дерево значений" следующим образом:
ПромДерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЗначениеВРеквизитФормы(ПромДерево, "Документы");
Но есть две проблемы.
1. Последние три столбца надо объединить в один, чтобы понизить "воздух"
2. В первом уровне дерева на месте суммы должна стоять общая сумма документа.
ПромДерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЗначениеВРеквизитФормы(ПромДерево, "Документы");
Но есть две проблемы.
1. Последние три столбца надо объединить в один, чтобы понизить "воздух"
2. В первом уровне дерева на месте суммы должна стоять общая сумма документа.
Прикрепленные файлы:

По теме из базы знаний
- Мастер выгрузки ЛЮБЫХ данных (остатков, цен, картинок, иерархии, доп. реквизитов, характеристик, штрихкодов и т.д.) в CSV / XLS / XLSX / MXL / ODS / PDF / DBF для ЛЮБЫХ баз, работающих на платформе 8.3... и выше
- Обмен без правил. От простого к сложному
- Интеграция 1С и CMS WordPress посредством Rest API сайта. Первый шаг
- Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг второй, публикация картинок
- Итоги в одну колонку для дерева значений
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)Хорошо.
В общем случае рекурсия выглядит так:
В общем случае рекурсия выглядит так:
СделатьЧтотоСДеревомРекурсивно(ДеревоЗначений);
Процедура СделатьЧтотоСДеревомРекурсивно(ВеткаДерева);
Для Каждого ТекущаяВеткаДерева Из ВеткаДерева.Строки Цикл
Если ТекущаяВеткаДерева.Строки.Количество() > 0 Тогда
СделатьЧтотоСДеревомРекурсивно(ТекущаяВеткаДерева);
Иначе
//обрабатываем текущую ветку дерева
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
(6)
Получилось в общем такое безобразие.
Получилось в общем такое безобразие.
ПромДерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Для Каждого СтрПервогоУровня из ПромДерево.Строки Цикл
НовСтрока = Документы.ПолучитьЭлементы().Добавить();
НовСтрока.Регистратор = СтрПервогоУровня.Регистратор;
Сумма = 0;
Если ТипЗнч(СтрПервогоУровня.Регистратор) = Тип("ДокументСсылка.ПриходнаяНакладная") ТОГДА
Для Каждого СтрВторогоУровня из СтрПервогоУровня.Строки Цикл
Сумма = Сумма + СтрВторогоУровня.СтоимостьПриход;
НовСтрока2 = НовСтрока.ПолучитьЭлементы().Добавить();
НовСтрока2.Номенклатура = СтрВторогоУровня.Номенклатура;
НовСтрока2.Количество = СтрВторогоУровня.Количество;
НовСтрока2.Цена = СтрВторогоУровня.Цена;
НовСтрока2.Сумма = СтрВторогоУровня.СтоимостьПриход
КонецЦикла;
ИначеЕсли ТипЗнч(СтрПервогоУровня.Регистратор) = Тип("ДокументСсылка.РасходнаяНакладная") ТОГДА
Для Каждого СтрВторогоУровня из СтрПервогоУровня.Строки Цикл
Сумма = Сумма + СтрВторогоУровня.СтоимостьРасход;
НовСтрока2 = НовСтрока.ПолучитьЭлементы().Добавить();
НовСтрока2.Номенклатура = СтрВторогоУровня.Номенклатура;
НовСтрока2.Количество = СтрВторогоУровня.Количество;
НовСтрока2.Цена = СтрВторогоУровня.Цена;
НовСтрока2.Сумма = СтрВторогоУровня.СтоимостьРасход
КонецЦикла;
Иначе
Для Каждого СтрВторогоУровня из СтрПервогоУровня.Строки Цикл
Сумма = СтрВторогоУровня.СуммаДенег;
КонецЦикла;
КонецЕсли;
НовСтрока.Сумма = Сумма;
КонецЦикла;
ПоказатьПрикрепленные файлы:

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот