СКД. Необходимо чтобы в отчет выводилась информация об оборотах в разрезе дня. Создали группировку ПеридДень и вывели ресурс КоличествоОборот. Стандартно выводятся только те дни где был оборот. Надо сделать так чтобы выводились все дни попадающие в данный период. Как это сделать?
---
использовать в группировке дополнение периода
Немного про это было здесь (правда здесь дополнение периода для остатков а не оборотов) https://youtu.be/PY3icvZXJc8
---
Есть вариант соединять дни календаря левым соединением с таблицей РН.
---
использовать в группировке дополнение периода
Немного про это было здесь (правда здесь дополнение периода для остатков а не оборотов) https://youtu.be/PY3icvZXJc8
---
Одна из готовых функций.
НаКаждыйдень - если необходимо получать остатки, даже если не было движений.
ПоСкладам - если нужно по складам.
Условие отбора - строка вида УсловиеОтбора = "Номенклатура.Марка В (&ГруппаТоваров)";

```1c
    &НаСервере
    Функция ТекстЗапросаОстатковНаКаждыйДень(УсловиеОтбора, НаКаждыйдень, ПоСкладам)

    Если ПоСкладам = Истина Тогда

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

    Иначе

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

    КонецЕсли;

    Если НаКаждыйдень = Истина Тогда
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Условие1", " ВТ_ОстаткиИОбороты.КоличествоКонечныйОстаток <> 0 ");
    Иначе
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Условие1", "Истина");
    КонецЕсли;

    Возврат ТекстЗапроса;

    КонецФункции
```
---
... а с параметрами ГруппаТоваров, СписокИсключаемойНоменклатуры, НачалоПериода, ОкончаниеПериода разберешься.