8.х Запрос по 4-м документам

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

  1. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

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

    Пожалуйста, подскажите что я делаю не так.
  2. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26

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