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

Отсутствие в запросе родительских полей-периодов

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

Если набор данных для отчета получается при помощи следующего запроса (листинг 3.14), то будут получены неправильные остатки.

Листинг 3.14. Текст запроса

ВЫБРАТЬ

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

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

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

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

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

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

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

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

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

ИЗ

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

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

Проблема в том, что в запросе при получении поля Регистратор обязательно должно быть получено и его родительское поле-период ПериодСекунда. Это относится ко всем полям-периодам – при получении поля-периода в запросе должно присутствовать его родительское поле-период.

Для устранения проблемы нужно обеспечить, чтобы в запросе присутствовало поле ПериодСекунда (листинг 3.15).

Листинг 3.15. Текст запроса

ВЫБРАТЬ

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

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

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

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

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

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

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

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

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

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

ИЗ

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

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

Если свойство Автозаполнение () в схеме компоновки данных установлено, платформа автоматически заполнит роли () полей-периодов в наборе данных (рис. 3.81).

Рис. 3.81. Роли полей-периодов

Поля-периоды для правильного расчета остатков должны иметь непрерывную нумерацию, начиная с 1. При этом чем меньше номер периода, тем более точным должен быть период. Например, поле НомерСтроки является уточнением поля Регистратор, поэтому номер периода поля НомерСтроки должен быть меньше, чем номер периода поля Регистратор. Аналогично и номер периода поля ПериодДень должен быть меньше, чем номер поля ПериодГод.

В нашем примере поле Регистратор (номер периода – 1) является уточнением поля ПериодСекунда (номер периода – 2). Если по какой-то причине роли полей-периодов не проставлены автоматически, необходимо сделать это вручную.

В результате в отчете будут получены правильные итоги остатков номенклатуры за период с детализацией по регистратору.

Назад: Расчет итогов по полям остатка
Дальше: Отсутствие в запросе парного поля-остатка