Вход | Регистрация


1С:Предприятие ::

Метки: 

Итоги по иерархии в отчете без СКД

Я
   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
                   |АВТОУПОРЯДОЧИВАНИЕ";

В итоге выводится табличный документ по макету, где строчки берутся из справочника, шапка прибита. Надо, чтобы в отчет выводились итоги по иерархии, при этом количество уровней иерархии может быть разное. Почему-то либо не вывовит итоги, либо строчки с иерархией дублируются и с итогами, и без.
 
  Рекламное место пустует
   aleks_default
 
1 - 30.07.18 - 15:38
косяк
Гем_СтруктураЗатрат - нет такой таблицы
есть доп_СтруктураЗатрат
   K1RSAN
 
2 - 30.07.18 - 15:41
(1) да это не косяк, это случайно. на самом деле это одна таблица. данные есть. запрос обрабатывается, просто вывести его с итогами по иерархии не могу
   Kondarat
 
3 - 30.07.18 - 15:47
(2)                |    СУММА(П20)
                   |ПО
                   |    Субконто1 ИЕРАРХИЯ
                   |АВТОУПОРЯДОЧИВАНИЕ";
Оно?
   K1RSAN
 
4 - 30.07.18 - 15:50
(3) ну итоги должны какөто рассчитываться по этому полю. Не могу вывести в табличный документ. Уже даже рекурсивно пытался обойти выборку - фигня какая-то выходит.
   Kondarat
 
5 - 30.07.18 - 15:52
(4) Итоги по иерархии будут расчитаны если запросу указать на это: Субконто1 ИЕРАРХИЯ.
   K1RSAN
 
6 - 30.07.18 - 15:53
(5) таким способом?
Результат = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Субконто1");
   K1RSAN
 
7 - 30.07.18 - 15:54
точнее там должно быть 
Результат = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией,"Субконто1");
   Kondarat
 
8 - 30.07.18 - 15:55
Да, Субконто1 можно не указывать
   K1RSAN
 
9 - 30.07.18 - 15:56
я уже столько разных пунктов пробовал, в основном итоги "ТОЛЬКО иерархия" использовал
   K1RSAN
 
10 - 30.07.18 - 15:57
(8) а дальше как?
Пока Результат.Следующий() Цикл
            
        ОбластьСтрока.Параметры.Заполнить(Результат);
        ИмяНоменклатуры = Результат.Субконто1.Наименование;
        ОбластьСтрока.Параметры.Номер = Лев(ИмяНоменклатуры, Найти(ИмяНоменклатуры, " "));
        ОбластьСтрока.Параметры.Субконто1 = Прав(ИмяНоменклатуры, СтрДлина(ИмяНоменклатуры) - Найти(ИмяНоменклатуры, " "));
        Если ЗначениеЗаполнено(Результат.Субконто1.Родитель) Тогда
            ОбластьСтрока.Параметры.Субконто1 = "  " + Прав(ИмяНоменклатуры, СтрДлина(ИмяНоменклатуры) - Найти(ИмяНоменклатуры, " "));
            ОбластьСтрока.Область().Шрифт = мШрифт_Обычный;
        Иначе
            ОбластьСтрока.Область().Шрифт = мШрифт_Жирный;    
        КонецЕсли;
        
        //Если ЗначениеЗаполнено(Результат.ИтогСтрока) Тогда

            ОбластьСтрока.Параметры.Расшифровка = Результат.Субконто1;
            ТабДок.Вывести(ОбластьСтрока);
            
        
    КонецЦикла;
 
 
   aleks_default
 
11 - 30.07.18 - 15:57
(10)Выгружай в дерево и его обходи
   K1RSAN
 
12 - 30.07.18 - 15:58
(11) Так значит надо не Выбрать() использовать, а выгрузить()?
   aleks_default
 
13 - 30.07.18 - 16:13
И выбрать и выгрузить
   K1RSAN
 
14 - 30.07.18 - 16:21
(13) Как бы он не дает так сделать. либо одно либо другое
   Kondarat
 
15 - 30.07.18 - 16:25
(14) Ну так используй либо Выбрать(), либо Выгрузить().
   aleks_default
 
16 - 30.07.18 - 16:26
(14) да прям
Дерево = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам).Выгрузить();
   K1RSAN
 
17 - 30.07.18 - 16:28
(16)
 Метод объекта не обнаружен (Выгрузить)
    Результат = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией).Выгрузить();
   hhhh
 
18 - 30.07.18 - 16:29
(17)   может так? контрольный выстрел

Результат = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией).Выгрузить().Выгрузить().Выгрузить().Выгрузить().Выгрузить().Выгрузить();
   aleks_default
 
19 - 30.07.18 - 16:30
т.е. сорян, не так,а вот так

Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
   aleks_default
 
20 - 30.07.18 - 16:31
справку я за вас чтоле читать должен?
   K1RSAN
 
21 - 30.07.18 - 16:31
(18) Ну мне же так и предложили. Умник. Нет бы подсказать, так надо обязательно сарказмировать. У меня и без вас голова болит, домой из-за этого тупого момента не могу уйти.
   K1RSAN
 
22 - 30.07.18 - 16:32
(20) Вы сказали мне этот вариант, когда я сказал, что так нельзя - вы настояли на этом, а теперь я еще виноват? ) логика...
   Kondarat
 
23 - 30.07.18 - 16:33
(22) Держи для понимания. Кинь реквизит на форму с типом СправочникСсылка.Номенклатура.
    Запрос = Новый Запрос("ВЫБРАТЬ
                          |    Номенклатура.Ссылка КАК Номенклатура,
                          |    СУММА(1) КАК Сумма
                          |ИЗ
                          |    Справочник.Номенклатура КАК Номенклатура
                          |ГДЕ
                          |    Номенклатура.Ссылка В ИЕРАРХИИ(&Номенклатура)
                          |
                          |СГРУППИРОВАТЬ ПО
                          |    Номенклатура.Ссылка
                          |
                          |УПОРЯДОЧИТЬ ПО
                          |    Номенклатура.Наименование
                          |ИТОГИ
                          |    СУММА(Сумма)
                          |ПО
                          |    Номенклатура ИЕРАРХИЯ");
    
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    
    Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Уровень = "------------------------------";
    Пока Выборка.Следующий() Цикл
        
        Если Выборка.ТипЗаписи()=ТипЗаписиЗапроса.ИтогПоГруппировке И Выборка.Номенклатура.ЭтоГруппа Тогда
            Продолжить;
        КонецЕсли;    
        
        СтрокаСообщения = "" + Выборка.Номенклатура + " - " + Выборка.Сумма;
        
        УровеньНоменклатуры = ВЫборка.Номенклатура.Уровень();
        Если УровеньНоменклатуры>0 Тогда
            
            СтрокаУровня = ЛЕВ(Уровень,УровеньНоменклатуры) + "> ";
            
            СтрокаСообщения = СтрокаУровня + СтрокаСообщения;
            
        КонецЕсли;    
            
        Сообщить(СтрокаСообщения + "  " + Выборка.ТипЗаписи());
        
    КонецЦикла;
   aleks_default
 
24 - 30.07.18 - 16:35
логика в том что так можно
   aleks_default
 
25 - 30.07.18 - 16:35
а ты виноват в том что не читаещь справку по методам выполнить() и выгрузить()
   K1RSAN
 
26 - 30.07.18 - 16:36
(24) тебе указал на ошибку, что так нельзя )
   K1RSAN
 
27 - 30.07.18 - 16:36
(25)
< да прям
Дерево = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам).Выгрузить();

не ваше?
   K1RSAN
 
28 - 30.07.18 - 16:37
(23) Блин, столько сложностей из-за этого вырастает... и единственный вариант в моем случае - опять таки делать рекурсию.
   aleks_default
 
29 - 30.07.18 - 16:38
Ладно, нельзя так нельзя, пилите Шура дальше.
   K1RSAN
 
30 - 30.07.18 - 16:40
(29) ну так покажите, КАК МОЖНО? Я для этого и спрашиваю на форуме, а не для того, чтобы всякие умники сарказмировали. Неужто это настолько редкая ситуация, что никто не знает?
   Kondarat
 
31 - 30.07.18 - 16:41
(30) То сложного в (23)?
   Kondarat
 
32 - 30.07.18 - 16:42
(31) Что...
   aleks_default
 
33 - 30.07.18 - 16:42
(30) ты мои посты внимательно перечитай еще раз
 
 
   K1RSAN
 
34 - 30.07.18 - 16:47
(32) И обошел он мне только верхний уровень иерархии, не зайдя внутрь. Я так уже делал
   Kondarat
 
35 - 30.07.18 - 16:48
(34) Да, ладно.

 Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Сюда внимательно глянь. Сделай тестовый пример и посмотри.
   aleks_default
 
36 - 30.07.18 - 16:50
(35)Он прав.
   K1RSAN
 
37 - 30.07.18 - 16:52
(35) Точно. У меня стоял обход по группировкой с иерархией. Спасибо, то, что надо



Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует