1С:Предприятие 8.2 /
Разработчикам /
Система компоновки данных
Связь наборов данных по периодам
В некоторых отчетах требуется получать данные из нескольких наборов, при этом связь между наборами данных требуется выполнять по периодам. В данной статье описывается, каким образом можно сделать такой отчет при помощи системы компоновки данных.
Допустим, нам требуется выдать в отчет данные по остаткам товаров на складах по месяцам и для каждого месяца для каждого товара выдать объем продаж по товарам за этот период.
Для реализации такого отчета создадим два набора данных:
1. Набор данных с остатками по периодам.
2. Набор данных с продажами товаров за период.
Для того чтобы получить остатки по товарам по периодам, воспользуемся виртуальной таблицей ОстаткиИОборотырегистра накопления:
ВЫБРАТЬ
ТоварныеЗапасыОстаткиИОбороты.Период КАК НачалоПериода,
ТоварныеЗапасыОстаткиИОбороты.Товар,
ТоварныеЗапасыОстаткиИОбороты.КоличествоНачальныйОстаток
ИЗ
РегистрНакопления.ТоварныеЗапасы.ОстаткиИОбороты(, , Месяц, , ) КАК ТоварныеЗапасыОстаткиИОбороты
Продажи за период можно получить при помощи виртуальной таблицы Оборотырегистра накопления :
ВЫБРАТЬ
ПродажиОбороты.Товар,
ПродажиОбороты.КоличествоОборот
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериодаПродаж, &КонецПериодаПродаж, , ) КАК ПродажиОбороты
Так как система компоновки данных позволяет выполнять связь между наборами данных только по их полям, нам нужно обеспечить в обоих наборах данных поля начала и конца периода. Для этого переделаем запросы наборов данных следующим образом:
Набор данных остатков:
ВЫБРАТЬ
ТоварныеЗапасыОстаткиИОбороты.Период КАК НачалоПериода,
КОНЕЦПЕРИОДА(ТоварныеЗапасыОстаткиИОбороты.Период, МЕСЯЦ) КАК КонецПериода,
ТоварныеЗапасыОстаткиИОбороты.Товар,
ТоварныеЗапасыОстаткиИОбороты.КоличествоНачальныйОстаток
ИЗ
РегистрНакопления.ТоварныеЗапасы.ОстаткиИОбороты(, , Месяц, , ) КАК ТоварныеЗапасыОстаткиИОбороты
Набор данных продаж:
ВЫБРАТЬ
&НачалоПериодаПродаж КАК НачалоПериода,
&КонецПериодаПродаж КАК КонецПериода,
ПродажиОбороты.Товар,
ПродажиОбороты.КоличествоОборот
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериодаПродаж, &КонецПериодаПродаж, , ) КАК ПродажиОбороты
Теперь мы имеем возможность связать эти наборы данных друг с другом по полям - периодам.
Из описания связей видно, что для записей набора данных Остатки будут получаться записи набора данных ПродажиЗаПериод для нужного периода и нужных товаров. При этом значения полей НачалоПериода и КонецПериода набора данных Остатки будет использоваться в качестве значений параметров виртуальной таблицы Обороты.
Другие материалы по теме:
query, объем продаж, видно, передел, конецпериода, накопления, обороты, получить, на склад, система, продаж, буфер обмена, копировать, регистр., обмен, товара, продажи, значения, остатки, выбрать, товар, данные, регистр, склад, период, отчет
Материалы из раздела: 1С:Предприятие 8.2 / Разработчикам / Система компоновки данных
Другие материалы по теме:
Источники данных для расчетов бюджетирования
Использование отборов в запросах с виртуальными таблицами
Резервирование и размещение товаров. Основные понятия
Нас находят: связи наборов данных
Мы на Facebook