Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Взаиморасчеты с покупателем: отчет по периодам в столбцах (остатки и обороты)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Система компоновки данных
Constantus
Приветствую, форумчане!
1с8.3.6, УФ, самописная.

Пытаюсь вывести отчет по взаиморасчетам с покупателем из регистра накопления с остатками и оборотами. Нашел в инете шаблон похожего отчета (правда по остаткам), попытался сделать с двумя наборами данных (даты, чтобы выводились периоды по которым нет движения, собственно сам запрос):

НаборДанных1:

ВЫБРАТЬ
    0 КАК Цифра
ПОМЕСТИТЬ Цифры

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    5

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    6

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    7

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    8

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    9
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Сотни.Цифра * 100 + Десятки.Цифра * 10 + Единицы.Цифра КАК Период
ПОМЕСТИТЬ Числа
ИЗ
    Цифры КАК Сотни,
    Цифры КАК Десятки,
    Цифры КАК Единицы
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, Числа.Период), МЕСЯЦ) КАК Даточка
ИЗ
    Числа КАК Числа
ГДЕ
    КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, Числа.Период), МЕСЯЦ) <= &КонецПериода
    И КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, Числа.Период), МЕСЯЦ) > &НачалоПериода

УПОРЯДОЧИТЬ ПО
    Даточка


НаборДанных2

ВЫБРАТЬ
    &Период КАК Месяц,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Заказ КАК Заказ,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Заказ.Подразделение КАК ЗаказПодразделение,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Заказ.ПолнаяСтоимостьСоСкидкой КАК Стоимость,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.СуммаНачальныйОстаток,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.СуммаКонечныйОстаток,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.СуммаПриход,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.СуммаРасход
ИЗ
    РегистрНакопления.ВзаиморасчетыСПокупателями.ОстаткиИОбороты(, &Период, Авто, , ) КАК ВзаиморасчетыСПокупателямиОстаткиИОбороты


Перепробовал разные варианты, но в итоге за период по всем месяцам дает одинаковые данные (судя по всему итоговые за весь период)

Подскажите, что нужно изменить в коде, чтобы выдавались динамические данные по периоду?
Vidocq05
Constantus @ Вчера, 10:46 необходимо зарегистрироваться для просмотра ссылки ,
Когдато на УТП делал запрос по получению остатков за период на каждый день с использованием производственного календаря:

ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ) КАК Период
ПОМЕСТИТЬ ПериодПоДням
ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНач И &ДатаКон
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПериодПоДням.Период КАК Период,
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток,
    ТоварыНаСкладахОстатки.Склад
ПОМЕСТИТЬ НачальныйОстатокПоДням
ИЗ
    ПериодПоДням КАК ПериодПоДням,
    РегистрНакопления.ТоварыНаСкладах.Остатки(
            &ДатаНач,
            Номенклатура.НоменклатурнаяГруппа В ИЕРАРХИИ (&ТорговыеМарки)
                И Склад В (&Склады)) КАК ТоварыНаСкладахОстатки

СГРУППИРОВАТЬ ПО
    ПериодПоДням.Период,
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.Склад

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ПериодПоДням.Период,
    ТоварыНаСкладахОбороты.Номенклатура,
    СУММА(0),
    ТоварыНаСкладахОбороты.Склад
ИЗ
    ПериодПоДням КАК ПериодПоДням,
    РегистрНакопления.ТоварыНаСкладах.Обороты(
            &ДатаНач,
            &ДатаКон,
            ,
            Номенклатура.НоменклатурнаяГруппа В ИЕРАРХИИ (&ТорговыеМарки)
                И Склад В (&Склады)) КАК ТоварыНаСкладахОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
                &ДатаНач,
                Номенклатура.НоменклатурнаяГруппа В ИЕРАРХИИ (&ТорговыеМарки)
                    И Склад В (&Склады)) КАК ТоварыНаСкладахОстатки
        ПО ТоварыНаСкладахОбороты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
            И ТоварыНаСкладахОбороты.Склад = ТоварыНаСкладахОстатки.Склад
ГДЕ
    ТоварыНаСкладахОстатки.Номенклатура ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
    ПериодПоДням.Период,
    ТоварыНаСкладахОбороты.Номенклатура,
    ТоварыНаСкладахОбороты.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыНаСкладахОбороты.Период,
    ТоварыНаСкладахОбороты.Номенклатура,
    СУММА(ТоварыНаСкладахОбороты.КоличествоОборот) КАК КоличествоОборот,
    ТоварыНаСкладахОбороты.Склад
ПОМЕСТИТЬ ОборотыЗаПериод
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Обороты(
            &ДатаНач,
            &ДатаКон,
            День,
            Номенклатура.НоменклатурнаяГруппа В ИЕРАРХИИ (&ТорговыеМарки)
                И Склад В (&Склады)) КАК ТоварыНаСкладахОбороты

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОбороты.Номенклатура,
    ТоварыНаСкладахОбороты.Период,
    ТоварыНаСкладахОбороты.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НачальныйОстатокПоДням.Период КАК Период,
    НачальныйОстатокПоДням.Номенклатура КАК Номенклатура,
    МАКСИМУМ(НачальныйОстатокПоДням.КоличествоОстаток) КАК КоличествоОстаток,
    СУММА(ОборотыЗаПериод.КоличествоОборот) КАК КоличествоОборот,
    НачальныйОстатокПоДням.Склад
ПОМЕСТИТЬ ОстаткиИОбороты
ИЗ
    НачальныйОстатокПоДням КАК НачальныйОстатокПоДням
        ЛЕВОЕ СОЕДИНЕНИЕ ОборотыЗаПериод КАК ОборотыЗаПериод
        ПО НачальныйОстатокПоДням.Номенклатура = ОборотыЗаПериод.Номенклатура
            И (ОборотыЗаПериод.Период МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(НачальныйОстатокПоДням.Период, ДЕНЬ))
            И НачальныйОстатокПоДням.Склад = ОборотыЗаПериод.Склад

СГРУППИРОВАТЬ ПО
    НачальныйОстатокПоДням.Период,
    НачальныйОстатокПоДням.Номенклатура,
    НачальныйОстатокПоДням.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОстаткиИОбороты.Период КАК Период,
    ОстаткиИОбороты.Номенклатура КАК Номенклатура,
    СУММА(ОстаткиИОбороты.КоличествоОстаток + ЕСТЬNULL(ОстаткиИОбороты.КоличествоОборот, 0)) КАК Остаток
ИЗ
    ОстаткиИОбороты КАК ОстаткиИОбороты

СГРУППИРОВАТЬ ПО
    ОстаткиИОбороты.Номенклатура,
    ОстаткиИОбороты.Период
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.