Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Получить даже те месяцы, где нет документов запросом. Без СКД.

Получить даже те месяцы, где нет документов запросом. Без СКД.
Я
   Бишбармак
 
30.07.21 - 10:23
Задача. Посчитать и вывести в табличный документ количество документов за период в разрезе месяцев, за заранее указанный период отбора. Запрос сделал, но если в месяце нет документов, то нет и вывода в табличный документ.
Как дополнить всеми месяцами?
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КорректировкаРеализации.Ссылка КАК ЧислоДоков,
        |    НАЧАЛОПЕРИОДА(КорректировкаРеализации.Дата, МЕСЯЦ) КАК МесяцДоков
        |ИЗ
        |    Документ.КорректировкаРеализации КАК КорректировкаРеализации
        |ГДЕ
        |    КорректировкаРеализации.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
        |ИТОГИ
        |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЧислоДоков)
        |ПО
        |    МесяцДоков ПЕРИОДАМИ(МЕСЯЦ, &ДатаНачала, &ДатаОкончания)";
    
    Запрос.УстановитьПараметр("ДатаНачала", Отчет.ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", Отчет.ДатаОкончания);
    
    РезультатЗапроса = Запрос.Выполнить();
        ВыборкаМесяцДоков = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,,"Все");
    
    Пока ВыборкаМесяцДоков.Следующий() Цикл

В СКД знаю как сделать. Хотелось бы именно в запросе. Пока рассматриваю вариант сделать таблицу значений с месяцами и соединение к ней.
   Андроны едут
 
1 - 30.07.21 - 10:34
...вариант сделать таблицу значений с месяцами и соединение к ней.. считаю правильным
   ДенисЧ
 
2 - 30.07.21 - 10:34
Создать таблицу месяцев, к ней слева подсоединить таблицу документов
   Smallrat
 
3 - 30.07.21 - 10:38
Можно легко сделать запросом к регламентированному производственному календарю, если он ведется.
   Said_We
 
4 - 30.07.21 - 10:40
(3) Обычный порождающий запрос и не надо завязываться на данные в каком-то регистре.
   Бишбармак
 
5 - 30.07.21 - 10:41
Туплю... закрывайте тему.
   Бишбармак
 
6 - 30.07.21 - 10:49
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КорректировкаРеализации.Ссылка) КАК Количество,
        |    НАЧАЛОПЕРИОДА(КорректировкаРеализации.Дата, МЕСЯЦ) КАК МесяцДоков
        |ИЗ
        |    Документ.КорректировкаРеализации КАК КорректировкаРеализации
        |ГДЕ
        |    КорректировкаРеализации.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
        |
        |СГРУППИРОВАТЬ ПО
        |    НАЧАЛОПЕРИОДА(КорректировкаРеализации.Дата, МЕСЯЦ)
        |
        |УПОРЯДОЧИТЬ ПО
        |    МесяцДоков
        |ИТОГИ
        |    СУММА(Количество)
        |ПО
        |    МесяцДоков ПЕРИОДАМИ(МЕСЯЦ, &ДатаНачала, &ДатаОкончания)";
    
    Запрос.УстановитьПараметр("ДатаНачала", Отчет.ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", Отчет.ДатаОкончания);
    
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаМесяцДоков = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"МесяцДоков","Все");

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