По теме из базы знаний
- Преобразование массива структур в дерево значений. Представление массива подчиненных друг другу "объектов" в иерархическом виде без использования рекурсии
- Универсальная функция - Сформировать результат СКД
- HTTP Сервисы: Путь к своему сервису. Часть 4
- Преобразование дерева значений в структуру
- Ценовая власть (УТ 11.5) - 2
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Процедура РассчитатьСуммуЦенПодчиненныхСтрок(СтрокаРодитель)
СтрокаРодитель.Цена = СтрокаРодитель.Строки.Итог("Цена", Ложь);
Для Каждого СтрокаДерева Из СтрокаРодитель.Строки Цикл
РассчитатьСуммуЦенПодчиненныхСтрок(СтрокаДерева);
КонецЦикла;
КонецПроцедуры
(7) Что за агрессия не понимаю, какими миллионами ворочаю?
Ну впервые с деревом работаю, раньше как то не приходилось сталкиваться.
Я написал рекурсию:
Процедура ОбходДерева(СтрокиДерево)
Для Каждого стрДерева из СтрокиДерево Цикл
Если стрДерева.Колонки.Количество() <> 0 Тогда
ОбходДерева(стрДерева.Строки);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Запустил, смотрю 1 итерацию, что СтрокиДерево содержит нулевой уровень, а стрДерева.Строки уровень 1, ну вроде все норм.
Дальше рекурсия и мы получаем, что СтрокиДерево содержат 1 уровень, а стрДерева.Строки уже 2 уровень.
Дальше рекурсия: СтрокиДерево содержат уровень 2, стрДерева.Строки = 0, так как последний уровень, на котором произошло изменение. Вот тут я могу сложить цены 2-го уровня. А как на 1 и 0 уровень передать в этот момент чета не догоняю.
Я последние 3 недели работаю по 15-17 часов в день без выходных, может уже просто устал, но это не повод вместо помощи высмеивать.
Тут я так понимаю помощи не ждать, одни насмешки. Сам разберусь.
Ну впервые с деревом работаю, раньше как то не приходилось сталкиваться.
Я написал рекурсию:
Процедура ОбходДерева(СтрокиДерево)
Для Каждого стрДерева из СтрокиДерево Цикл
Если стрДерева.Колонки.Количество() <> 0 Тогда
ОбходДерева(стрДерева.Строки);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Запустил, смотрю 1 итерацию, что СтрокиДерево содержит нулевой уровень, а стрДерева.Строки уровень 1, ну вроде все норм.
Дальше рекурсия и мы получаем, что СтрокиДерево содержат 1 уровень, а стрДерева.Строки уже 2 уровень.
Дальше рекурсия: СтрокиДерево содержат уровень 2, стрДерева.Строки = 0, так как последний уровень, на котором произошло изменение. Вот тут я могу сложить цены 2-го уровня. А как на 1 и 0 уровень передать в этот момент чета не догоняю.
Я последние 3 недели работаю по 15-17 часов в день без выходных, может уже просто устал, но это не повод вместо помощи высмеивать.
Тут я так понимаю помощи не ждать, одни насмешки. Сам разберусь.
(9) Попробуйте как-то так:
Процедура РасчитатьСуммыПоУзламДерева(СтрокиДерева) Экспорт
Для Каждого СтрокаДерева Из СтрокиДерева Цикл
Если СтрокаДерева.Строки.Количество() > 0 Тогда
СтрокаДерева.Сумма = 0;
КонецЕсли;
РасчитатьСуммыПоУзламДерева(СтрокаДерева.Строки);
Если СтрокаДерева.Строки.Количество() > 0 Тогда
Для каждого СтрокаИзСтрок Из СтрокаДерева.Строки Цикл
СтрокаДерева.Сумма = СтрокаДерева.Сумма + СтрокаИзСтрок.Сумма;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
(9) Создайте массив, ну и пусть в массиве каждое новое значение - итог по уровню МассивИтогиПоУровням[Уровень] . Завершение перебора (ИТОГО) по каждому уровню закидываем на предыдущий уровень
МассивИтогиПоУровням[Уровень-1] = МассивИтогиПоУровням[Уровень-1] + МассивИтогиПоУровням[Уровень]
Как хранить массив право за Вами.
МассивИтогиПоУровням[Уровень-1] = МассивИтогиПоУровням[Уровень-1] + МассивИтогиПоУровням[Уровень]
Как хранить массив право за Вами.
Т.е. пример:
Наименование | Цена
Товары | 100
- Эл.компоненты | 60
-- Чип К1023 | 40
-- Чип К1956 | 20
- Прочее | 40
-- Коннектор | 40
меняем на форме у чип К1023 цену на 80 и получаем новое дерево:
Наименование | Цена
Товары | 140
- Эл.компоненты | 100
-- Чип К1023 | 80
-- Чип К1956 | 20
- Прочее | 40
-- Коннектор | 40
Наименование | Цена
Товары | 100
- Эл.компоненты | 60
-- Чип К1023 | 40
-- Чип К1956 | 20
- Прочее | 40
-- Коннектор | 40
меняем на форме у чип К1023 цену на 80 и получаем новое дерево:
Наименование | Цена
Товары | 140
- Эл.компоненты | 100
-- Чип К1023 | 80
-- Чип К1956 | 20
- Прочее | 40
-- Коннектор | 40
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот