|
Итоги по иерархии в отчете без СКД | ☑ | ||
---|---|---|---|---|
0
K1RSAN
30.07.18
✎
15:30
|
Понимаю, что вопрос достаточно глупый, но у меня уже тупо не хватает терпения искать инфу про это, гугл первые 2 страницы дают не то.
В общем, отчет без СКД, 8.2 Отчет основывается на иерархическом справочнике, с левым соединением к регистру сведений и от него к регистру бухгалтерии. Последний уровень запроса |ВЫБРАТЬ | доп_СтруктураЗатрат.Ссылка КАК Субконто1, | СУММА(ВТ_Типовой.П5 + ВТ_Типовой.П19 + ВТ_Типовой.П6 + ВТ_Типовой.П7 + ВТ_Типовой.П8 + ВТ_Типовой.П9 + ВТ_Типовой.П10 + ВТ_Типовой.П12 + ВТ_Типовой.П13 + ВТ_Типовой.П14 + ВТ_Типовой.П15 + ВТ_Типовой.П16 + ВТ_Типовой.П17 + ВТ_Типовой.П19 + ВТ_Типовой.П20) КАК П1, | СУММА(ВТ_Типовой.П5 + ВТ_Типовой.П19) КАК П2, | СУММА(ВТ_Типовой.П6 + ВТ_Типовой.П7 + ВТ_Типовой.П8 + ВТ_Типовой.П9 + ВТ_Типовой.П10 + ВТ_Типовой.П12 + ВТ_Типовой.П13 + ВТ_Типовой.П14 + ВТ_Типовой.П15 + ВТ_Типовой.П16 + ВТ_Типовой.П17 + ВТ_Типовой.П19 + ВТ_Типовой.П20) КАК П3, | СУММА(ВТ_Типовой.П5 + ВТ_Типовой.П6) КАК П4, | СУММА(ВТ_Типовой.П5) КАК П5, | СУММА(ВТ_Типовой.П6) КАК П6, | СУММА(ВТ_Типовой.П7) КАК П7, | СУММА(ВТ_Типовой.П8) КАК П8, | СУММА(ВТ_Типовой.П9) КАК П9, | СУММА(ВТ_Типовой.П10) КАК П10, | СУММА(ВТ_Типовой.П12 + ВТ_Типовой.П13 + ВТ_Типовой.П14) КАК П11, | СУММА(ВТ_Типовой.П12) КАК П12, | СУММА(ВТ_Типовой.П13) КАК П13, | СУММА(ВТ_Типовой.П14) КАК П14, | СУММА(ВТ_Типовой.П15) КАК П15, | СУММА(ВТ_Типовой.П16) КАК П16, | СУММА(ВТ_Типовой.П17) КАК П17, | СУММА(ВТ_Типовой.П19 + ВТ_Типовой.П20) КАК П18, | СУММА(ВТ_Типовой.П19) КАК П19, | СУММА(ВТ_Типовой.П20) КАК П20 |ИЗ | Справочник.доп_СтруктураЗатрат КАК доп_СтруктураЗатрат | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.доп_СоответствиеСтатейЗатрат.СрезПоследних(&КонецПериода, ) КАК доп_СоответствиеСтатейЗатратСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Типовой КАК ВТ_Типовой | ПО доп_СоответствиеСтатейЗатратСрезПоследних.СтатьяСубконто = ВТ_Типовой.Субконто1 | ПО Гем_СтруктураЗатрат.Ссылка = доп_СоответствиеСтатейЗатратСрезПоследних.СтруктураЗатрат | |СГРУППИРОВАТЬ ПО | Гем_СтруктураЗатрат.Ссылка | |УПОРЯДОЧИТЬ ПО | Гем_СтруктураЗатрат.Ссылка.Код |ИТОГИ | СУММА(П1), | СУММА(П2), | СУММА(П3), | СУММА(П4), | СУММА(П5), | СУММА(П6), | СУММА(П7), | СУММА(П8), | СУММА(П9), | СУММА(П10), | СУММА(П11), | СУММА(П12), | СУММА(П13), | СУММА(П14), | СУММА(П15), | СУММА(П16), | СУММА(П17), | СУММА(П18), | СУММА(П19), | СУММА(П20) |ПО | Субконто1 |АВТОУПОРЯДОЧИВАНИЕ"; В итоге выводится табличный документ по макету, где строчки берутся из справочника, шапка прибита. Надо, чтобы в отчет выводились итоги по иерархии, при этом количество уровней иерархии может быть разное. Почему-то либо не вывовит итоги, либо строчки с иерархией дублируются и с итогами, и без. |
|||
1
aleks_default
30.07.18
✎
15:38
|
косяк
Гем_СтруктураЗатрат - нет такой таблицы есть доп_СтруктураЗатрат |
|||
2
K1RSAN
30.07.18
✎
15:41
|
(1) да это не косяк, это случайно. на самом деле это одна таблица. данные есть. запрос обрабатывается, просто вывести его с итогами по иерархии не могу
|
|||
3
Kondarat
30.07.18
✎
15:47
|
(2) | СУММА(П20)
|ПО | Субконто1 ИЕРАРХИЯ |АВТОУПОРЯДОЧИВАНИЕ"; Оно? |
|||
4
K1RSAN
30.07.18
✎
15:50
|
(3) ну итоги должны какөто рассчитываться по этому полю. Не могу вывести в табличный документ. Уже даже рекурсивно пытался обойти выборку - фигня какая-то выходит.
|
|||
5
Kondarat
30.07.18
✎
15:52
|
(4) Итоги по иерархии будут расчитаны если запросу указать на это: Субконто1 ИЕРАРХИЯ.
|
|||
6
K1RSAN
30.07.18
✎
15:53
|
(5) таким способом?
Результат = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Субконто1"); |
|||
7
K1RSAN
30.07.18
✎
15:54
|
точнее там должно быть
Результат = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией,"Субконто1"); |
|||
8
Kondarat
30.07.18
✎
15:55
|
Да, Субконто1 можно не указывать
|
|||
9
K1RSAN
30.07.18
✎
15:56
|
я уже столько разных пунктов пробовал, в основном итоги "ТОЛЬКО иерархия" использовал
|
|||
10
K1RSAN
30.07.18
✎
15:57
|
(8) а дальше как?
Пока Результат.Следующий() Цикл ОбластьСтрока.Параметры.Заполнить(Результат); ИмяНоменклатуры = Результат.Субконто1.Наименование; ОбластьСтрока.Параметры.Номер = Лев(ИмяНоменклатуры, Найти(ИмяНоменклатуры, " ")); ОбластьСтрока.Параметры.Субконто1 = Прав(ИмяНоменклатуры, СтрДлина(ИмяНоменклатуры) - Найти(ИмяНоменклатуры, " ")); Если ЗначениеЗаполнено(Результат.Субконто1.Родитель) Тогда ОбластьСтрока.Параметры.Субконто1 = " " + Прав(ИмяНоменклатуры, СтрДлина(ИмяНоменклатуры) - Найти(ИмяНоменклатуры, " ")); ОбластьСтрока.Область().Шрифт = мШрифт_Обычный; Иначе ОбластьСтрока.Область().Шрифт = мШрифт_Жирный; КонецЕсли; //Если ЗначениеЗаполнено(Результат.ИтогСтрока) Тогда ОбластьСтрока.Параметры.Расшифровка = Результат.Субконто1; ТабДок.Вывести(ОбластьСтрока); КонецЦикла; |
|||
11
aleks_default
30.07.18
✎
15:57
|
(10)Выгружай в дерево и его обходи
|
|||
12
K1RSAN
30.07.18
✎
15:58
|
(11) Так значит надо не Выбрать() использовать, а выгрузить()?
|
|||
13
aleks_default
30.07.18
✎
16:13
|
И выбрать и выгрузить
|
|||
14
K1RSAN
30.07.18
✎
16:21
|
(13) Как бы он не дает так сделать. либо одно либо другое
|
|||
15
Kondarat
30.07.18
✎
16:25
|
(14) Ну так используй либо Выбрать(), либо Выгрузить().
|
|||
16
aleks_default
30.07.18
✎
16:26
|
(14) да прям
Дерево = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам).Выгрузить(); |
|||
17
K1RSAN
30.07.18
✎
16:28
|
(16)
Метод объекта не обнаружен (Выгрузить) Результат = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией).Выгрузить(); |
|||
18
hhhh
30.07.18
✎
16:29
|
(17) может так? контрольный выстрел
Результат = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией).Выгрузить().Выгрузить().Выгрузить().Выгрузить().Выгрузить().Выгрузить(); |
|||
19
aleks_default
30.07.18
✎
16:30
|
т.е. сорян, не так,а вот так
Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам); |
|||
20
aleks_default
30.07.18
✎
16:31
|
справку я за вас чтоле читать должен?
|
|||
21
K1RSAN
30.07.18
✎
16:31
|
(18) Ну мне же так и предложили. Умник. Нет бы подсказать, так надо обязательно сарказмировать. У меня и без вас голова болит, домой из-за этого тупого момента не могу уйти.
|
|||
22
K1RSAN
30.07.18
✎
16:32
|
(20) Вы сказали мне этот вариант, когда я сказал, что так нельзя - вы настояли на этом, а теперь я еще виноват? ) логика...
|
|||
23
Kondarat
30.07.18
✎
16:33
|
(22) Держи для понимания. Кинь реквизит на форму с типом СправочникСсылка.Номенклатура.
Запрос = Новый Запрос("ВЫБРАТЬ | Номенклатура.Ссылка КАК Номенклатура, | СУММА(1) КАК Сумма |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&Номенклатура) | |СГРУППИРОВАТЬ ПО | Номенклатура.Ссылка | |УПОРЯДОЧИТЬ ПО | Номенклатура.Наименование |ИТОГИ | СУММА(Сумма) |ПО | Номенклатура ИЕРАРХИЯ"); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Уровень = "------------------------------"; Пока Выборка.Следующий() Цикл Если Выборка.ТипЗаписи()=ТипЗаписиЗапроса.ИтогПоГруппировке И Выборка.Номенклатура.ЭтоГруппа Тогда Продолжить; КонецЕсли; СтрокаСообщения = "" + Выборка.Номенклатура + " - " + Выборка.Сумма; УровеньНоменклатуры = ВЫборка.Номенклатура.Уровень(); Если УровеньНоменклатуры>0 Тогда СтрокаУровня = ЛЕВ(Уровень,УровеньНоменклатуры) + "> "; СтрокаСообщения = СтрокаУровня + СтрокаСообщения; КонецЕсли; Сообщить(СтрокаСообщения + " " + Выборка.ТипЗаписи()); КонецЦикла; |
|||
24
aleks_default
30.07.18
✎
16:35
|
логика в том что так можно
|
|||
25
aleks_default
30.07.18
✎
16:35
|
а ты виноват в том что не читаещь справку по методам выполнить() и выгрузить()
|
|||
26
K1RSAN
30.07.18
✎
16:36
|
(24) тебе указал на ошибку, что так нельзя )
|
|||
27
K1RSAN
30.07.18
✎
16:36
|
(25)
< да прям Дерево = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам).Выгрузить(); не ваше? |
|||
28
K1RSAN
30.07.18
✎
16:37
|
(23) Блин, столько сложностей из-за этого вырастает... и единственный вариант в моем случае - опять таки делать рекурсию.
|
|||
29
aleks_default
30.07.18
✎
16:38
|
Ладно, нельзя так нельзя, пилите Шура дальше.
|
|||
30
K1RSAN
30.07.18
✎
16:40
|
(29) ну так покажите, КАК МОЖНО? Я для этого и спрашиваю на форуме, а не для того, чтобы всякие умники сарказмировали. Неужто это настолько редкая ситуация, что никто не знает?
|
|||
31
Kondarat
30.07.18
✎
16:41
|
(30) То сложного в (23)?
|
|||
32
Kondarat
30.07.18
✎
16:42
|
(31) Что...
|
|||
33
aleks_default
30.07.18
✎
16:42
|
(30) ты мои посты внимательно перечитай еще раз
|
|||
34
K1RSAN
30.07.18
✎
16:47
|
(32) И обошел он мне только верхний уровень иерархии, не зайдя внутрь. Я так уже делал
|
|||
35
Kondarat
30.07.18
✎
16:48
|
(34) Да, ладно.
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Сюда внимательно глянь. Сделай тестовый пример и посмотри. |
|||
36
aleks_default
30.07.18
✎
16:50
|
(35)Он прав.
|
|||
37
K1RSAN
30.07.18
✎
16:52
|
(35) Точно. У меня стоял обход по группировкой с иерархией. Спасибо, то, что надо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |