Как вывести конкретные даты в отчете по оборотам регистра накопления в 1С?

Программист 1С v8.3 (Управляемые формы) Управленческий учет
← На главную

Часто при разработке отчетов по ГСМ или другим ресурсам на базе регистров накопления программисты сталкиваются с тем, что отчет выводит общие суммы за период, не детализируя их по конкретным дням или документам. Это происходит из-за особенностей работы виртуальных таблиц в 1С. В данной статье мы разберем, как заставить систему компоновки данных (СКД) показывать детальные даты операций.

Понимание работы виртуальной таблицы «Обороты»

Прежде всего, проанализируем ситуацию: когда мы обращаемся к таблице РегистрНакопления.ГСМ.Обороты, система по умолчанию пытается максимально «свернуть» данные. Если в параметрах запроса не указана периодичность, результатом будет одна строка с общим итогом за весь выбранный интервал. Для того чтобы получить разбивку по датам, нам необходимо изменить подход к формированию запроса и настройке СКД.

Рассмотрим по шагам, какие механизмы позволяют решить эту задачу.

Способ 1. Настройка параметра «Периодичность» в запросе

Самый правильный технический путь — это использование второго параметра виртуальной таблицы оборотов. Разберем, как это работает в конструкторе запроса:

  1. Откроем схему компоновки данных и перейдем на закладку «Наборы данных».
  2. В тексте запроса найдем обращение к виртуальной таблице. Обычно оно выглядит так: РегистрНакопления.ВашРегистр.Обороты(&НачалоПериода, &КонецПериода, , ).
  3. Обратим внимание на третий параметр — Периодичность. Именно он отвечает за детализацию.

Нам доступны следующие значения для этого параметра:

Пример изменения текста запроса для получения детальных дат:


ВЫБРАТЬ
    ГСМОбороты.Период КАК ДатаОперации,
    ГСМОбороты.ТранспортноеСредство,
    ГСМОбороты.КоличествоОборот
ИЗ
    РегистрНакопления.ГСМ.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК ГСМОбороты

Способ 2. Использование периодичности «Авто» и полей СКД

Проанализируем ситуацию, когда нам нужно предоставить пользователю возможность самому выбирать уровень детализации. В этом случае в параметрах виртуальной таблицы лучше указать Авто.

После этого на вкладке «Наборы данных» появятся стандартные поля периодов. Для того чтобы дата корректно отображалась в отчете, выполним следующие действия:

  1. Найдем поле ПериодДень (или Период).
  2. В колонке Роль проверим настройки. Для поля периода должна стоять отметка «Период» и указан его тип. Это критически важно для корректной работы иерархии группировок.
  3. В колонке Оформление зададим формат даты. Чтобы скрыть время и оставить только дату, используем строку: ДФ=dd.MM.yyyy.

Способ 3. Детализация через Регистратор

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

В параметрах виртуальной таблицы указываем периодичность Регистратор. В список выбранных полей запроса добавляем поле Регистратор. Теперь в настройках отчета (вкладка «Настройки») мы можем добавить группировку по полю Регистратор или просто вывести его в детальных записях.

Важный нюанс: если мы используем регистратор, мы всегда можем вытащить его дату:


ВЫБРАТЬ
    ГСМОбороты.Регистратор,
    ГСМОбороты.Регистратор.Дата КАК ТочнаяДата,
    ГСМОбороты.РасходОборот
ИЗ
    РегистрНакопления.ГСМ.Обороты(,, Регистратор, ) КАК ГСМОбороты

Настройка структуры отчета в СКД

Даже если мы добавили поля в запрос, их нужно правильно вывести. Рассмотрим, как настроить структуру:

  1. Переходим на вкладку Настройки в СКД.
  2. В дереве настроек выбираем наш отчет или группировку.
  3. Если нам нужны просто строчки с датами, используем Детальные записи. В выбранные поля добавляем наше поле периода (например, ПериодДень).
  4. Если мы хотим видеть итоги по дням, создаем группировку по полю ПериодДень, а внутри нее уже размещаем детальные записи или ресурсы.

Дополнение периодов (если нет движений)

Рассмотрим ситуацию: пользователю нужно видеть все даты месяца, даже те, в которые заправок не было. Обычная таблица Обороты не вернет пустые дни. Чтобы решить эту проблему, в настройках поля периода в СКД (вкладка «Наборы данных») необходимо настроить Дополнение периодов.

Укажите тип дополнения (например, «День»), а также параметры начала и окончания периода (обычно это те же параметры &НачалоПериода и &КонецПериода). Это позволит отчету выводить строки за каждый день календаря, проставляя нулевые значения в ресурсах.

Особенности использования таблицы «Остатки и обороты»

В некоторых случаях для отчетов по ГСМ удобнее использовать виртуальную таблицу ОстаткиИОбороты. Она работает аналогично в плане настройки периодичности, но дает дополнительное преимущество: вы сможете видеть КонечныйОстаток на каждую конкретную дату, что часто требуется в путевых листах и отчетах по топливу.

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

← На главную