Имя: Пароль:
1C
1С v8
Заполнение полей таблицы отчета.
0 prilforreal
 
23.04.18
15:49
Доброго дня! В отчет нужно добавить группировку по транспорту(Авто-ЭлементСпр), Уже мучаюсь весь день, то ячейки в макете пустые, то вообще кавардак какой-то вываливается, подскажите что не так делаю и как сделать так?

http://vfl.ru/fotos/578bdbc421480208.html
http://vfl.ru/fotos/6993aa0a21480271.html

Процедура ОсновныеДействияФормыПоКатегориям(Кнопка)
    ТабДок=Новый ТабличныйДокумент;  
    ТабДок.ИмяПараметровПечати="ОстаткиВКассах_ПоКатегориям";
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Макет = ЭтотОбъект.ПолучитьМакет("ПоКатегориям");
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ВложенныйЗапрос.Ссылка КАК РасходСредств,
        |    ВложенныйЗапрос.НомерСтроки,
        |    ВложенныйЗапрос.Направление КАК Направление,
        |    ВложенныйЗапрос.Дата,
        |    ВложенныйЗапрос.Касса,
        |    ВложенныйЗапрос.СтатьяРасхода КАК СтатьяРасхода,
        |    ВложенныйЗапрос.Комментарий КАК Комментарий,
        |    ВложенныйЗапрос.Автор КАК Автор,
        |    СУММА(ВложенныйЗапрос.Сумма) КАК Сумма,
        |    ВложенныйЗапрос.Транспорт
        |ИЗ
        |    (ВЫБРАТЬ
        |        РасходСредствТабличнаяЧасть1.Ссылка КАК Ссылка,
        |        РасходСредствТабличнаяЧасть1.НомерСтроки КАК НомерСтроки,
        |        РасходСредствТабличнаяЧасть1.Ссылка.Направление КАК Направление,
        |        РасходСредствТабличнаяЧасть1.Ссылка.Дата КАК Дата,
        |        РасходСредствТабличнаяЧасть1.Ссылка.Касса КАК Касса,
        |        РасходСредствТабличнаяЧасть1.СтатьяРасхода КАК СтатьяРасхода,
        |        РасходСредствТабличнаяЧасть1.Комментарий КАК Комментарий,
        |        РасходСредствТабличнаяЧасть1.Ссылка.Автор КАК Автор,
        |        РасходСредствТабличнаяЧасть1.Сумма КАК Сумма,
        |        NULL КАК Транспорт
        |    ИЗ
        |        Документ.РасходСредств.ТабличнаяЧасть1 КАК РасходСредствТабличнаяЧасть1
        |    ГДЕ
        |        РасходСредствТабличнаяЧасть1.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
        |        И (РасходСредствТабличнаяЧасть1.Ссылка.Направление В (&ВыбНаправление)
        |                ИЛИ &ВыбНаправление = ЗНАЧЕНИЕ(Перечисление.Направление.ПустаяСсылка))
        |        И (РасходСредствТабличнаяЧасть1.Ссылка.Касса В (&ВыбКасса)
        |                ИЛИ &ВыбКасса = ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка))
        |        И (РасходСредствТабличнаяЧасть1.СтатьяРасхода В ИЕРАРХИИ (&ВыбСтРасх)
        |                ИЛИ &ВыбСтРасх = ЗНАЧЕНИЕ(Справочник.СтатьиРасхода.ПустаяСсылка))
        |        И НЕ РасходСредствТабличнаяЧасть1.Ссылка.ПометкаУдаления
        |    
        |    ОБЪЕДИНИТЬ ВСЕ
        |    
        |    ВЫБРАТЬ
        |        ТранспортТабличнаяЧасть1.Ссылка,
        |        ТранспортТабличнаяЧасть1.НомерСтроки,
        |        ТранспортТабличнаяЧасть1.Ссылка.Направление,
        |        ТранспортТабличнаяЧасть1.Ссылка.Дата,
        |        ТранспортТабличнаяЧасть1.Ссылка.Касса,
        |        ТранспортТабличнаяЧасть1.СтатьяРасхода,
        |        ТранспортТабличнаяЧасть1.Комментарий,
        |        ТранспортТабличнаяЧасть1.Ссылка.Автор,
        |        ТранспортТабличнаяЧасть1.Сумма,
        |        ТранспортТабличнаяЧасть1.Транспорт
        |    ИЗ
        |        Документ.Транспорт.ТабличнаяЧасть1 КАК ТранспортТабличнаяЧасть1
        |    ГДЕ
        |        ТранспортТабличнаяЧасть1.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
        |        И (ТранспортТабличнаяЧасть1.Ссылка.Направление В (&ВыбНаправление)
        |                ИЛИ &ВыбНаправление = ЗНАЧЕНИЕ(Перечисление.Направление.ПустаяСсылка))
        |        И (ТранспортТабличнаяЧасть1.Ссылка.Касса В (&ВыбКасса)
        |                ИЛИ &ВыбКасса = ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка))
        |        И (ТранспортТабличнаяЧасть1.СтатьяРасхода В ИЕРАРХИИ (&ВыбСтРасх)
        |                ИЛИ &ВыбСтРасх = ЗНАЧЕНИЕ(Справочник.СтатьиРасхода.ПустаяСсылка))
        |        И НЕ ТранспортТабличнаяЧасть1.Ссылка.ПометкаУдаления) КАК ВложенныйЗапрос
        |
        |СГРУППИРОВАТЬ ПО
        |    ВложенныйЗапрос.Ссылка,
        |    ВложенныйЗапрос.НомерСтроки,
        |    ВложенныйЗапрос.Направление,
        |    ВложенныйЗапрос.Дата,
        |    ВложенныйЗапрос.Касса,
        |    ВложенныйЗапрос.СтатьяРасхода,
        |    ВложенныйЗапрос.Комментарий,
        |    ВложенныйЗапрос.Автор,
        |    ВложенныйЗапрос.Транспорт
        |ИТОГИ
        |    СУММА(Сумма)
        |ПО
        |    ОБЩИЕ,
        |    Направление,
        |    Автор,
        |    СтатьяРасхода ИЕРАРХИЯ,
        |    Комментарий,
        |    РасходСредств
        |    Транспорт";
    
    Запрос.УстановитьПараметр("КонПериода", КонПериода);
    Запрос.УстановитьПараметр("НачПериода", НачПериода);
    Запрос.УстановитьПараметр("ВыбКасса", ВыбКасса);
    Запрос.УстановитьПараметр("ВыбСтРасх", ВыбСтРасх);
    Запрос.УстановитьПараметр("ВыбНаправление", ВыбНаправление);
    РезультатЗапроса = Запрос.Выполнить();
    
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщиеИтоги");
    ОбластьНаправление = Макет.ПолучитьОбласть("Направление");
    ОбластьАвтор = Макет.ПолучитьОбласть("Автор");
    ОбластьСтатьяРасходаИерархия = Макет.ПолучитьОбласть("СтатьяРасходаИерархия");
    ОбластьСтатьяРасхода = Макет.ПолучитьОбласть("СтатьяРасхода");
    ОбластьТранспорт = Макет.ПолучитьОбласть("Транспорт");
    ОбластьКомментарий = Макет.ПолучитьОбласть("Комментарий");
    ОбластьРасходСредств = Макет.ПолучитьОбласть("РасходСредств");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    
    ТабДок.Очистить();
    ОбластьЗаголовок.Параметры.ВыбНачПериода=НачПериода;
    ОбластьЗаголовок.Параметры.ВыбКонПериода=КонПериода;
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ВыборкаОбщийИтог = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    ВыборкаОбщийИтог.Следующий();        // Общий итог
    ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог);
    
    ВыборкаНаправление = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаНаправление.Следующий() Цикл
        ОбластьНаправление.Параметры.Заполнить(ВыборкаНаправление);
        ТабДок.Вывести(ОбластьНаправление, ВыборкаНаправление.Уровень());
    
        ВыборкаАвтор = ВыборкаНаправление.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
        Пока ВыборкаАвтор.Следующий() Цикл
            ОбластьАвтор.Параметры.Заполнить(ВыборкаАвтор);
            ТабДок.Вывести(ОбластьАвтор, ВыборкаАвтор.Уровень());
    
            ВыборкаСтатьяРасхода = ВыборкаАвтор.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
            Пока ВыборкаСтатьяРасхода.Следующий() Цикл
                Если ВыборкаСтатьяРасхода.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда
                    Область = ОбластьСтатьяРасходаИерархия;
                Иначе
                    Область = ОбластьСтатьяРасхода;
                КонецЕсли;
    
                Область.Параметры.Заполнить(ВыборкаСтатьяРасхода);
                ТабДок.Вывести(Область, ВыборкаСтатьяРасхода.Уровень());
                
                ВыборкаТранспорт = ВыборкаСтатьяРасхода.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
                Пока ВыборкаТранспорт.Следующий() Цикл
                    ОбластьТранспорт.Параметры.Заполнить(ВыборкаТранспорт);
                    ТабДок.Вывести(ОбластьТранспорт, ВыборкаТранспорт.Уровень());

    
                ВыборкаКомментарий = ВыборкаСтатьяРасхода.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
                Пока ВыборкаКомментарий.Следующий() Цикл
                    ОбластьКомментарий.Параметры.Заполнить(ВыборкаКомментарий);
                    ТабДок.Вывести(ОбластьКомментарий, ВыборкаКомментарий.Уровень());
    
                    ВыборкаРасходСредств = ВыборкаКомментарий.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
                    Пока ВыборкаРасходСредств.Следующий() Цикл
                        ОбластьРасходСредств.Параметры.Заполнить(ВыборкаРасходСредств);
                        ТабДок.Вывести(ОбластьРасходСредств, ВыборкаРасходСредств.Уровень());
    
                        ВыборкаДетальныеЗаписи = ВыборкаРасходСредств.Выбрать();
    
                        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                            ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
                            //ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
                            КонецЦикла;
                        КонецЦикла;
                    КонецЦикла;
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
    
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьОбщийИтог, ВыборкаОбщийИтог.Уровень());
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

    ТабДок.ТолькоПросмотр=Истина;
    ТабДок.Показать("По категориям");
КонецПроцедуры


Насколько я понимаю может помочь условие:
Если документ расход средств, тогда группировка по комментарию, ИначеЕсли транспорт, тогда по Транспорту.