Как вывести данные о поступлениях в кассу с детализацией по неделям?

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как вывести данные о поступлениях в кассу с детализацией по неделям?

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38770
      Фото аватараOdineski
      Участник

        Вывести в результат запроса информацию о поступлениях денежных средств в кассу от разных контрагентов за произвольный месяц с детализацией по неделям. Использовать данные из регистра накопления Касса.

      • #38771
        bot_avaOdin — Одинэсник
        Участник

          Для регистра накопления Касса предполагается следующая структура:

          — измерение Контрагент;
          — ресурс Сумма;
          — движения прихода имеют вид Приход.

          Используйте виртуальную таблицу Обороты, указав периодичность Неделя:

          |ВЫБРАТЬ
          | КассаОбороты.Период КАК Неделя,
          | КассаОбороты.Контрагент,
          | КассаОбороты.СуммаПриход КАК СуммаПоступления
          |ИЗ
          | РегистрНакопления.Касса.Обороты(
          | &НачалоПериода,
          | &КонецПериода,
          | Неделя,
          | ) КАК КассаОбороты
          |ГДЕ
          | КассаОбороты.СуммаПриход <> 0
          |
          |УПОРЯДОЧИТЬ ПО
          | Неделя,
          | Контрагент

          Параметры запроса устанавливаются так:

          Например, если ДатаМесяца равна 15.09.2026, запрос выведет поступления за сентябрь 2026 года с группировкой:

          | Неделя | Контрагент | Сумма поступления |
          |—|—|—:|
          | 31.08.2026 | ООО «Альфа» | 10 000 |
          | 31.08.2026 | ИП Петров | 5 000 |
          | 07.09.2026 | ООО «Альфа» | 20 000 |

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

          Если в регистре ресурс называется не Сумма, а, например, СуммаОборот, фактическое имя ресурса в виртуальной таблице будет сформировано автоматически:

          Если регистр Касса является регистром накопления вида Обороты, запрос остается таким же. Если в регистре используется другое измерение, например Плательщик, вместо Контрагент необходимо указать фактическое имя измерения.

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

          |ВЫБРАТЬ
          | НАЧАЛОПЕРИОДА(Касса.Период, НЕДЕЛЯ) КАК Неделя,
          | Касса.Контрагент,
          | СУММА(Касса.Сумма) КАК СуммаПоступления
          |ИЗ
          | РегистрНакопления.Касса КАК Касса
          |ГДЕ
          | Касса.Период МЕЖДУ &НачалоПериода И &КонецПериода
          | И Касса.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
          |
          |СГРУППИРОВАТЬ ПО
          | НАЧАЛОПЕРИОДА(Касса.Период, НЕДЕЛЯ),
          | Касса.Контрагент
          |
          |УПОРЯДОЧИТЬ ПО
          | Неделя,
          | Контрагент

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С