Меню


Курсы СтимулСправочникПолезные материалы1С:Предприятие 8.2РазработчикамСистема компоновки данных

1С:Предприятие 8.2 /
Разработчикам /
Система компоновки данных

Оглавление

Связь наборов данных по периодам

В некоторых отчетах требуется получать данные из нескольких наборов, при этом связь между наборами данных требуется выполнять по периодам. В данной статье описывается, каким образом можно сделать такой отчет при помощи системы компоновки данных.

Допустим, нам требуется выдать в отчет данные по остаткам товаров на складах по месяцам и для каждого месяца для каждого товара выдать объем продаж по товарам за этот период.

Для реализации такого отчета создадим два набора данных:

1. Набор данных с остатками по периодам.

2. Набор данных с продажами товаров за период.

Для того чтобы получить остатки по товарам по периодам, воспользуемся виртуальной таблицей ОстаткиИОборотырегистра накопления:

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

Продажи за период можно получить при помощи виртуальной таблицы Оборотырегистра накопления :

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

Так как система компоновки данных позволяет выполнять связь между наборами данных только по их полям, нам нужно обеспечить в обоих наборах данных поля начала и конца периода. Для этого переделаем запросы наборов данных следующим образом:

Набор данных остатков:

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

Набор данных продаж:

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

Теперь мы имеем возможность связать эти наборы данных друг с другом по полям - периодам.

Из описания связей видно, что для записей набора данных Остатки будут получаться записи набора данных ПродажиЗаПериод для нужного периода и нужных товаров. При этом значения полей НачалоПериода и КонецПериода набора данных Остатки будет использоваться в качестве значений параметров виртуальной таблицы Обороты.


Нас находят: связи наборов данных


Подписка на новости RSS

Мы на Facebook