Книга: Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных
Назад: Пример 10
Дальше: Функциональные опции

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

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

Листинг 2.23. Текст запроса набора данных «Остатки»

ВЫБРАТЬ

ОстаткиНоменклатурыОстаткиИОбороты.Период КАК НачалоПериода,

КОНЕЦПЕРИОДА(ОстаткиНоменклатурыОстаткиИОбороты.Период, МЕСЯЦ)

КАК КонецПериода,

ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура,

ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток КАК

НачальныйОстаток

ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток КАК

КонечныйОстаток

ИЗ

РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты(, , Месяц, , )

КАК ОстаткиНоменклатурыОстаткиИОбороты

Листинг 2.24. Текст запроса набора данных «Продажи»

ВЫБРАТЬ

&НачалоПериодаПродаж КАК НачалоПериода,

&КонецПериодаПродаж КАК КонецПериода,

ПродажиОбороты.Номенклатура,

ПродажиОбороты.КоличествоОборот КАК Количество

{ВЫБРАТЬ

НачалоПериода,

КонецПериода,

Номенклатура.*,

Количество}    

ИЗ

РегистрНакопления.Продажи.Обороты(&НачалоПериодаПродаж, &КонецПериодаПродаж, ,

{(Контрагент).*, (Номенклатура).*}) КАК ПродажиОбороты

В наборе данных Продажи снимем признак Автозаполнение (), так как список полей мы формируем в запросе в секции {ВЫБРАТЬ…} (рис. 2.134).

Рис. 2.134. Описание набора данных «Продажи»

Теперь нам нужно обеспечить связь наборов данных Остатки и Продажи по номенклатуре и полям периодов. На закладке Связи наборов данных добавим новую строку. В поле Источник связи, то есть в качестве родительского набора данных, укажем Остатки, в поле Приемник связи, то есть в качестве зависимого набора данных, укажем Продажи.

Для указания связи по номенклатуре в полях Выражение источник и Выражение приемник выберем поле Номенклатура.

Продублируем строку еще два раза. Для указания связи по полям-периодам в полях Выражение источник и Выражение приемник выберем поле НачалоПериода/КонецПериода. В поле Параметр выберем из списка параметров параметр НачалоПериодаПродаж/КонецПериодаПродаж зависимого набора данных, в котором будет храниться значение связи (рис. 2.135).

Рис. 2.135. Создание связи наборов данных

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

Перейдем на закладку Ресурсы и определим доступные поля ресурсов отчета ().

Рис. 2.136. Определение ресурсов отчета

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

Зададим настройки параметров, как и в предыдущих примерах. Для параметров НачалоПериода и КонецПериода в колонке Тип нажмем кнопку выбора и в нижней части окна редактирования типа данных установим Состав даты в значение Дата. Для параметра КонецПериода зададим значение колонки Выражение, чтобы данные за последний день отчета были включены в расчет (листинг 2.25).

Листинг 2.25. Выражение для расчета параметра «КонецПериода»

КонецПериода(&КонецПериода,"День")

В результате параметры компоновки данных примут вид (рис. 2.137).

Рис. 2.137. Параметры компоновки данных

Определим структуру отчета. На закладке Настройки выделим корневой элемент Отчет и добавим в него группировку по полю Номенклатура. Затем добавим вложенную в нее группировку по полю НачалоПериода. На закладке Выбранные поля перенесем из списка доступных полей поля (рис. 2.138):

Рис. 2.138. Определение полей и группировок отчета

Усовершенствуем внешний вид отчета. Для поля Количество установим заголовок Продано. Для этого нужно вызвать контекстное меню выбранного поля и выполнить команду Установить заголовок (см. рис. 2.138).

На закладке Наборы данных выделим набор данных Остатки и в колонке Оформление зададим формат поля НачалоПериода. Вызовем диалог Формат поля и в строку Формат введем выражение (листинг 2.26). Для этого также можно воспользоваться конструктором.

Листинг 2.26. Формат поля «НачалоПериода»

ДФ=MMMM.yyyy

И обязательно нужно указать роли полей () НачальныйОстаток и КонечныйОстаток, чтобы остатки по номенклатуре считались правильно. В данном случае, так как свойство Автозаполнение включено (), платформа установила эти роли автоматически. Вызовем диалог роли этих полей и удостоверимся, что для полей НачальныйОстаток и КонечныйОстаток указано, что эти поля является полями остатка (рис. 2.139).

Рис. 2.139. Роли полей остатка

На закладке Параметры включим параметры НачалоПериода и КонецПериода в состав быстрых пользовательских настроек.

Запустим «1С:Предприятие» и сформируем отчет за период 01.12.2011–31.01.2012 (рис. 2.140).

Рис. 2.140. Результат отчета

Назад: Пример 10
Дальше: Функциональные опции