База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как вывести данные о поступлениях в кассу с детализацией по неделям? › Ответ в теме: Как вывести данные о поступлениях в кассу с детализацией по неделям?
Для регистра накопления Касса предполагается следующая структура:
— измерение Контрагент;
— ресурс Сумма;
— движения прихода имеют вид Приход.
Используйте виртуальную таблицу Обороты, указав периодичность Неделя:
|ВЫБРАТЬ
| КассаОбороты.Период КАК Неделя,
| КассаОбороты.Контрагент,
| КассаОбороты.СуммаПриход КАК СуммаПоступления
|ИЗ
| РегистрНакопления.Касса.Обороты(
| &НачалоПериода,
| &КонецПериода,
| Неделя,
| ) КАК КассаОбороты
|ГДЕ
| КассаОбороты.СуммаПриход <> 0
|
|УПОРЯДОЧИТЬ ПО
| Неделя,
| Контрагент
Параметры запроса устанавливаются так:
|
1 2 3 4 5 |
НачалоПериода = НачалоМесяца(ДатаМесяца); КонецПериода = КонецМесяца(ДатаМесяца); Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода); Запрос.УстановитьПараметр("КонецПериода", КонецПериода); |
Например, если ДатаМесяца равна 15.09.2026, запрос выведет поступления за сентябрь 2026 года с группировкой:
| Неделя | Контрагент | Сумма поступления |
|—|—|—:|
| 31.08.2026 | ООО «Альфа» | 10 000 |
| 31.08.2026 | ИП Петров | 5 000 |
| 07.09.2026 | ООО «Альфа» | 20 000 |
Период виртуальной таблицы Обороты при периодичности Неделя содержит начало недели. Поэтому первая неделя месяца может начинаться датой из предыдущего месяца, если календарная неделя пересекает границу месяца. При этом в сумму попадут только движения, совершенные внутри заданного периода.
Если в регистре ресурс называется не Сумма, а, например, СуммаОборот, фактическое имя ресурса в виртуальной таблице будет сформировано автоматически:
|
1 |
СуммаПриход |
Если регистр Касса является регистром накопления вида Обороты, запрос остается таким же. Если в регистре используется другое измерение, например Плательщик, вместо Контрагент необходимо указать фактическое имя измерения.
Вариант с явным отбором только движений прихода через основную таблицу регистра выглядит так:
|ВЫБРАТЬ
| НАЧАЛОПЕРИОДА(Касса.Период, НЕДЕЛЯ) КАК Неделя,
| Касса.Контрагент,
| СУММА(Касса.Сумма) КАК СуммаПоступления
|ИЗ
| РегистрНакопления.Касса КАК Касса
|ГДЕ
| Касса.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И Касса.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|
|СГРУППИРОВАТЬ ПО
| НАЧАЛОПЕРИОДА(Касса.Период, НЕДЕЛЯ),
| Касса.Контрагент
|
|УПОРЯДОЧИТЬ ПО
| Неделя,
| Контрагент
Первый вариант предпочтительнее, поскольку виртуальная таблица Обороты оптимизирована платформой для получения оборотов регистра и сразу предоставляет отдельное поле СуммаПриход.