Зв'язок наборів даних за періодами
У деяких звітах потрібно отримувати дані з кількох наборів, при цьому зв'язок між наборами даних потрібно виконувати за періодами. У цій статті описується, яким чином можна створити такий звіт за допомогою системи компонування даних.
У деяких звітах потрібно отримувати дані з кількох наборів, при цьому зв'язок між наборами даних потрібно виконувати за періодами. У цій статті описується, яким чином можна створити такий звіт за допомогою системи компонування даних.
Припустімо, нам потрібно вивести у звіт дані щодо залишків товарів на складах за місяцями і для кожного місяця для кожного товару вивести обсяг продажів товарів за цей період.
Для реалізації такого звіту створимо два набори даних:
1. Набір даних із залишками за періодами.
2. Набір даних із продажами товарів за період.
Щоб отримати залишки за товарами за періодами, скористаємося віртуальною таблицею ОстаткиИОбороты регістру накопичення:
ВЫБРАТЬ
ТоварныеЗапасыОстаткиИОбороты.Период КАК НачалоПериода,
ТоварныеЗапасыОстаткиИОбороты.Товар,
ТоварныеЗапасыОстаткиИОбороты.КоличествоНачальныйОстаток
ИЗ
РегистрНакопления.ТоварныеЗапасы.ОстаткиИОбороты(, , Месяц, , ) КАК ТоварныеЗапасыОстаткиИОбороты
Продажі за період можна отримати за допомогою віртуальної таблиці Обороты регістру накопичення:
ВЫБРАТЬ
ПродажиОбороты.Товар,
ПродажиОбороты.КоличествоОборот
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериодаПродаж, &КонецПериодаПродаж, , ) КАК ПродажиОбороты
Оскільки система компонування даних дає змогу виконувати зв'язок між наборами даних лише за їхніми полями, нам потрібно забезпечити в обох наборах даних поля початку й кінця періоду. Для цього переробимо запити наборів даних таким чином:
Набір даних залишків:
ВЫБРАТЬ
ТоварныеЗапасыОстаткиИОбороты.Период КАК НачалоПериода,
КОНЕЦПЕРИОДА(ТоварныеЗапасыОстаткиИОбороты.Период, МЕСЯЦ) КАК КонецПериода,
ТоварныеЗапасыОстаткиИОбороты.Товар,
ТоварныеЗапасыОстаткиИОбороты.КоличествоНачальныйОстаток
ИЗ
РегистрНакопления.ТоварныеЗапасы.ОстаткиИОбороты(, , Месяц, , ) КАК ТоварныеЗапасыОстаткиИОбороты
Набір даних продажів:
ВЫБРАТЬ
&НачалоПериодаПродаж КАК НачалоПериода,
&КонецПериодаПродаж КАК КонецПериода,
ПродажиОбороты.Товар,
ПродажиОбороты.КоличествоОборот
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериодаПродаж, &КонецПериодаПродаж, , ) КАК ПродажиОбороты
Тепер ми маємо можливість зв'язати ці набори даних один з одним за полями — періодами.
З опису зв'язків видно, що для записів набору даних Остатки будуть отримуватися записи набору даних ПродажиЗаПериод для потрібного періоду та потрібних товарів. При цьому значення полів НачалоПериода і КонецПериода набору даних Остатки будуть використовуватися як значення параметрів віртуальної таблиці Обороты.