Вывод результат запроса как дерево значений на обычную форму #755781


#0 by Wefast
Создал на форме деревозначений. Процедура КнопкаВыполнитьНажатие(Кнопка) Вот что получается: Последний уровень раскрывает сам себя. Мне этого не нужно. Если играться с Итогами в запросе, выставляя либо одну из группировок как Только Иерархия то меняется компоновка, но обязательно задваивается либо последняя группировка, либо конечный элемент. Первая строка кстати тоже не понятно откуда берется, там полный перечень группировок справочников из которых состоят данные. Но она вроде нормально удаляется Дерево.Строки.Удалить; В общем как мне получить правильно дерево значений?
#1 by vicof
Отладчиком по дереву пройтись не предлагать?
#2 by Wefast
Ну и что мне с этим делать. В процедуре рекурсивной идет обход всех строк. Вроде как я могу выловить строку которая последняя: СтрокаДерева.Строки.Количество = 0 Значит эта последний уровень. Я решил сделать так Если СтрокаДерева.Строки.Количество = 0 Тогда Т.е. обратиться на уровень выше и удалить строку, тем самым сделав предыдущий уровень последним. Но он выдает ошибку так как я видимо нарушил цикл и он пытается обойти дальше то чего уже нет. Или я даже не знаю.
#3 by vicof
Синтаксис: Свернуть(<Строка>) Параметры: Тип: Произвольный. Идентификатор строки таблицы. Описание: Сворачивает узел в указанной строке дерева. Доступность: Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
#4 by Wefast
не для КоллекцияСтрокДереваЗначений и не для СтрокаДереваЗначений нет такого метода
#5 by vicof
И чо?
#6 by Wefast
что значит и что? У меня дерево значений. А метод свернуть для таблицы значений
#7 by Wefast
В общем нашел решение. Сделал так:
#8 by Wefast
Но теперь мне нужно данные разбить по месецам. Как в отчете когда делаешь таблицу и выводишь данные разбивая на месяцы. Не представляю как это сделать.
#9 by Михаил Козлов
Месяцы в колонках или в строках? Если в строках, то делайте итоги по месяцам. Если в колонках, то это более трудоемко.
#10 by Eugene_life
Либо в дереве делаешь группировку по периодам, либо в таблицу добавляешь колонку с периодом и группируешь ее, либо любимый запрос в цикле - по месяцам.
#11 by Wefast
колонки нужно. Запрос в цикле это вроде вообще не круто
#12 by Wefast
я добавил в запросе Сгруппировал по нему В итоге они у меня строками стали и добавилась колонца с номером месяца. Мне бы нормальные колонки на случай если будет период выбрать в несколько лет , ну что бы колнка была Январь, 2015
#13 by Eugene_life
Тебе шашечки или ехать? Если у тебя цикл по месяцам (т.е. максимальное количество запросов = 12), то я бы не парился, и сделал запрос в цикле, и закончил задачу. Вот когда речь идет о цикле с количеством шагов > 100 или вообще неопределенным, тогда есть смысл все пихать в запрос.
#14 by Wefast
ладно. Способ мне особо приятен. Но все же. У меня на форму будет указан период. Я вычисляю все "маленькие" периоды, т.е. месяцы. И делаю столько итераций сколько этих месяцев наберется. На выходе запроса у меня какое то не обработанное дерево есть. Как мне потом собрать данные с каждой итерации в одну таблицу? Если бы у меня были данные по каждой позиции дерева на каждый месяц я бы просто копировал бы колонки с каждой итерации и прицеплял бы их к итоговому дереву. Но если в первом месяце дерево будет из пары строк, во втором - из 20 то как мне их присоединить?
#15 by Eugene_life
Тебе придется создать новое дерево (итоговое) и в него собирать свои отдельные деревья. Другого способа я не вижу. Или иди другим путем: сначала строй не деревья, а таблицу, а потом по таблице постой дерево так, как тебе нужно.
#16 by Wefast
В общем сделал так. Определил сколько у меня будет колонок, путем подсчета кол-ва месяцев. Сформировал уникальные строки для добавления в запрос С помощью конкатенации в запрос добавил эти строки. Когда перебираю дерево значений определяю что это последний уровень(период) и соответственно присваиваю значение нужной колонке на уровень выше. На последней итерации этого уровня удаляю все строки последнего уровня. Потом удаляю лишние колонки и вот оно мое дерево.
#17 by Wefast
Остается вопрос как мне теперь просуммировать числовые значения до верхнего уровня. Есть какой то легкий способ
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С