На примере этого отчета мы рассмотрим особенности расчета итогов по полям остатка и возникающие при этом проблемы. В качестве исходного образца разработаем простой отчет, отражающий движение и остатки номенклатуры на складах (рис. 2.222).
Рис. 2.222. Требуемый вид отчета
В принципе это модификация отчета ОстаткиНоменклатуры, но для демонстрации проблем при расчете остатков мы разработаем другой отчет с детализацией данных по периодам. Создадим новый объект конфигурации Отчет и назовем его ОстаткиНоменклатурыПоПериодам.
Откроем конструктор схемы компоновки данных и добавим новый набор данных – запрос. Источником данных для запроса будет служить виртуальная таблица регистра накопления ОстаткиНоменклатуры.ОстаткиИОбороты. Не будем пользоваться конструктором запроса, а сразу внесем в поле Запрос следующий текст (листинг 2.33).
Листинг 2.33. Текст запроса
ВЫБРАТЬ
ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура,
ОстаткиНоменклатурыОстаткиИОбороты.Склад,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток КАК
НачальныйОстаток,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток КАК
КонечныйОстаток,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоПриход КАК Приход,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоРасход КАК Расход
ИЗ
РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты КАК
ОстаткиНоменклатурыОстаткиИОбороты
Перейдем на закладку Ресурсы и определим доступные поля ресурсов отчета ().
Рис. 2.223. Определение ресурсов отчета
На закладке зададим настройки параметров, как и в предыдущих примерах. Для параметров НачалоПериода и КонецПериода в колонке Тип нажмем кнопку выбора и в нижней части окна редактирования типа данных установим Состав даты в значение Дата. Для параметра КонецПериода зададим значение колонки Выражение, чтобы данные за последний день отчета были включены в расчет (листинг 2.34).
Листинг 2.34. Выражение для расчета параметра «КонецПериода»
КонецПериода(&КонецПериода,"День")
Определим структуру отчета. На закладке Настройки выделим корневой элемент Отчет и добавим в него группировку по полю Склад. Затем добавим вложенную в нее группировку по полю Номенклатура. На закладке Выбранные поля перенесем из списка доступных полей поля (рис. 2.224):
Рис. 2.224. Определение полей и группировок отчета
На закладке Другие настройки установим макет оформления () отчета – Зеленый. Запустим и сформируем отчет в режиме 1С:Предприятие (рис. 2.225).
Рис. 2.225. Результат отчета
Теперь детализируем отчет по периодам. Например, требуется отобразить движение и остатки номенклатуры с детализацией по регистратору за указанный отчетный период.
Изменим текст запроса для получения отчета (листинг 2.35).
Листинг 2.35. Текст запроса
ВЫБРАТЬ
ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура,
ОстаткиНоменклатурыОстаткиИОбороты.Склад,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток КАК
НачальныйОстаток,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток КАК
КонечныйОстаток,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоПриход КАК Приход,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоРасход КАК Расход,
ОстаткиНоменклатурыОстаткиИОбороты.Регистратор
ИЗ
РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты(, , Авто, , ) КАК
ОстаткиНоменклатурыОстаткиИОбороты
Изменим структуру отчета. В группировку Номенклатура вложим группировку Детальные записи, в поля отчета добавим поле Регистратор (рис. 2.226).
Рис. 2.226. Требуемый вид отчета
На закладке Параметры включим параметры НачалоПериода и КонецПериода в состав быстрых пользовательских настроек. Сформируем отчет в режиме 1С:Предприятие (рис. 2.227).
Рис. 2.227. Результат отчета
Мы видим, что итоги по полю НачальныйОстаток посчитаны неправильно.