8.х Выборка итогов выбирает только первые итоги

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Itsys, 27 янв 2011.

  1. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Добрый день,

    Есть запрос:
    Код:
    ВЫБРАТЬ
    ЗначенияСвойствОбъектов.Значение КАК ГруппаРентабельности,
    РеализацияТоваровУслугТовары.Ссылка.Контрагент,
    РеализацияТоваровУслугТовары.Ссылка КАК Документ,
    РеализацияТоваровУслугТовары.Номенклатура,
    СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество,
    СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаСНДС,
    СУММА(РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС) КАК СуммаБезНДС
    ПОМЕСТИТЬ ТаблицаРеализации
    ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    ПО РеализацияТоваровУслугТовары.Ссылка.Контрагент = ЗначенияСвойствОбъектов.Объект
    И (ЗначенияСвойствОбъектов.Свойство = &СвойствоГруппыКонтрагентов)
    ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
    И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    
    СГРУППИРОВАТЬ ПО
    ЗначенияСвойствОбъектов.Значение,
    РеализацияТоваровУслугТовары.Ссылка.Контрагент,
    РеализацияТоваровУслугТовары.Ссылка,
    РеализацияТоваровУслугТовары.Номенклатура;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК Себестоимость,
    ХозрасчетныйОбороты.Регистратор КАК Документ,
    ХозрасчетныйОбороты.Субконто1 КАК Номенклатура
    ПОМЕСТИТЬ ТаблицаСебестоимости
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыНаСкладах), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура), , , ) КАК ХозрасчетныйОбороты
    
    СГРУППИРОВАТЬ ПО
    ХозрасчетныйОбороты.Регистратор,
    ХозрасчетныйОбороты.Субконто1;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ТаблицаРеализации.ГруппаРентабельности КАК ГруппаРентабельности,
    "" КАК Алюминий,
    ТаблицаРеализации.Контрагент,
    ТаблицаРеализации.Документ КАК Документ,
    СУММА(ТаблицаРеализации.Количество) КАК Количество,
    СУММА(ТаблицаРеализации.СуммаСНДС) КАК СуммаСНДС,
    СУММА(ТаблицаРеализации.СуммаБезНДС) КАК СуммаБезНДС,
    СУММА(ТаблицаСебестоимости.Себестоимость) КАК Себестоимость,
    СУММА(ТаблицаРеализации.СуммаБезНДС) - СУММА(ТаблицаСебестоимости.Себестоимость) КАК Маржа,
    СУММА(ТаблицаРеализации.СуммаБезНДС - ТаблицаСебестоимости.Себестоимость) / СУММА(ТаблицаРеализации.СуммаБезНДС) * 100 КАК Рентабельность
    ИЗ
    ТаблицаРеализации КАК ТаблицаРеализации
    ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаСебестоимости КАК ТаблицаСебестоимости
    ПО ТаблицаРеализации.Документ = ТаблицаСебестоимости.Документ
    И ТаблицаРеализации.Номенклатура = ТаблицаСебестоимости.Номенклатура
    
    СГРУППИРОВАТЬ ПО
    ТаблицаРеализации.ГруппаРентабельности,
    ТаблицаРеализации.Контрагент,
    ТаблицаРеализации.Документ
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
    ТаблицаРеализации.ГруппаРентабельности,
    "Алюминий",
    ТаблицаРеализации.Контрагент,
    ТаблицаРеализации.Документ,
    СУММА(ТаблицаРеализации.Количество),
    СУММА(ТаблицаРеализации.СуммаСНДС),
    СУММА(ТаблицаРеализации.СуммаБезНДС),
    СУММА(ТаблицаСебестоимости.Себестоимость),
    СУММА(ТаблицаРеализации.СуммаБезНДС) - СУММА(ТаблицаСебестоимости.Себестоимость),
    СУММА(ТаблицаРеализации.СуммаБезНДС - ТаблицаСебестоимости.Себестоимость) / СУММА(ТаблицаРеализации.СуммаБезНДС) * 100
    ИЗ
    ТаблицаРеализации КАК ТаблицаРеализации
    ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаСебестоимости КАК ТаблицаСебестоимости
    ПО ТаблицаРеализации.Документ = ТаблицаСебестоимости.Документ
    И ТаблицаРеализации.Номенклатура = ТаблицаСебестоимости.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    ПО ТаблицаРеализации.Номенклатура = ЗначенияСвойствОбъектов.Объект
    И (ЗначенияСвойствОбъектов.Свойство = &СвойствоАлюминий)
    ГДЕ
    ЗначенияСвойствОбъектов.Значение = ИСТИНА
    
    СГРУППИРОВАТЬ ПО
    ТаблицаРеализации.ГруппаРентабельности,
    ТаблицаРеализации.Контрагент,
    ТаблицаРеализации.Документ
    
    УПОРЯДОЧИТЬ ПО
    ГруппаРентабельности,
    Алюминий,
    Документ
    ИТОГИ
    СУММА(Количество),
    СУММА(СуммаСНДС),
    СУММА(СуммаБезНДС),
    СУММА(Себестоимость),
    СУММА(Маржа)
    ПО
    ГруппаРентабельности,
    Алюминий
    
    При просмотре в консоли запросов, все нормально, несколько итогов первого уровня, у каждого первого есть 2 записи второго уровня. Т.е. показывает как надо, пытаюсь вывести в отчет:
    Код:
    	Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ГруппаРентабельности");
    Пока Выборка.Следующий() Цикл
    ВыборкаАлюминий = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Алюминий");
    Пока ВыборкаАлюминий.Следующий() Цикл
    Шапка.Параметры.Заполнить(ВыборкаАлюминий);
    Шапка.Параметры.Период = ПредставлениеПериода(НачПериода, КонецДня(КонПериода));
    ТабДокумент.Вывести(Шапка);
    Номер = 0;
    ВыборкаСтрок = ВыборкаАлюминий.Выбрать();
    Пока ВыборкаСтрок.Следующий() Цикл
    Строка.Параметры.Заполнить(ВыборкаСтрок);
    Номер = Номер + 1;
    Строка.Параметры.Номер = Номер;
    Строка.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(ВыборкаСтрок.Документ);
    Строка.Параметры.ДатаДокумента = День(ВыборкаСтрок.Документ.Дата);
    ТабДокумент.Вывести(Строка);
    КонецЦикла;
    Подвал.Параметры.Заполнить(ВыборкаАлюминий);
    ТабДокумент.Вывести(Подвал);
    КонецЦикла;
    КонецЦикла;
    
    Выводит только первые итоги, т.е. одну строку из итогов первого уровня и одну из второго. Детальные записи выводятся правильно. Уже всю голову сломал не понимаю, почему так работает.

Поделиться этой страницей