8.х УПП Запрос с группировкой для отчета

Тема в разделе ""1С:Управление производственным предприятием УПП"", создана пользователем Pentыch, 10 фев 2014.

  1. TopicStarter Overlay
    Pentыch
    Offline

    Pentыch Опытный в 1С

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, помогите плиз.
    Сделал отчет, который должен выводить заявки по периоду, если в периоде нет заявок, то в отчет должно выдавать строку.
    Сейчас же, у меня отчет строиться правильно, но строка выводиться в каждом периоде, даже если и есть заявки.
    [​IMG]

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

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