Имя: Пароль:
1C
1С v8
Итоги по иерархии в отчете без СКД
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) Точно. У меня стоял обход по группировкой с иерархией. Спасибо, то, что надо