Как получить все оплаты в 1С:БГУ 2.0 в разрезе договоров и исключить служебные проводки?

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

При работе с конфигурацией 1С:Бухгалтерия государственного учреждения, редакция 2.0 (БГУ 2.0), часто возникает необходимость получить полную и точную информацию обо всех оплатах в разрезе конкретных договоров. Стандартные подходы, такие как запросы к документам ПриходныйКассовыйОрдер, КассовоеПоступлениеРасшифровкаПлатежа, или анализ ручных операций через документ Операция (бухгалтерская), могут оказаться неэффективными или неполными. Особенно это проявляется, когда бухгалтеры вносят ручные проводки, которые не всегда связаны с типовыми документами оплат.

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

Использование регистра бухгалтерии для получения оплат

Для получения всех оплат в разрезе договоров, наиболее надежным и полным источником данных является регистр бухгалтерии. В конфигурации БГУ 2.0 таким регистром является РегистрБухгалтерии.ЕПСБУ. Для анализа движений по субконто нам потребуется виртуальная таблица ДвиженияСубконто этого регистра.

Давайте разберем, почему этот подход предпочтительнее. Регистр бухгалтерии фиксирует все проводки, формируемые как типовыми документами, так и ручными операциями. Это гарантирует, что мы не пропустим никаких финансовых движений, связанных с оплатами. Используя виртуальную таблицу ДвиженияСубконто, мы можем получить детализацию проводок, включая субконто, что критически важно для анализа в разрезе договоров.

Наш запрос будет выглядеть примерно так:


ВЫБРАТЬ
    РегистрБухгалтерииЕПСБУДвиженияСубконто.Период,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.Регистратор,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.НомерСтроки,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.СчетДт,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоДт1,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.СчетКт,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоКт1,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.Сумма
ИЗ
    РегистрБухгалтерии.ЕПСБУ.ДвиженияСубконто КАК РегистрБухгалтерииЕПСБУДвиженияСубконто
ГДЕ
    РегистрБухгалтерииЕПСБУДвиженияСубконто.СчетКт = &СчетРасчетов
    И РегистрБухгалтерииЕПСБУДвиженияСубконто.ВидСубконтоКт1 = &ВидСубконтоДоговоры
    И ТипЗнч(РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоКт1) = ТИП(Справочник.ДоговорыКонтрагентов)

В этом запросе мы используем следующие параметры:

Таким образом, мы получим все проводки, где по кредиту счета 205.31 (или аналогичного счета расчетов) числится договор. Это уже хороший шаг к решению нашей задачи.

Проблема со служебными документами: "Закрытие оборотных КЭК (исполняющий)"

После выполнения такого запроса, вы, скорее всего, столкнетесь с одной распространенной проблемой в БГУ 2.0: в выборку попадут записи, созданные служебными документами, такими как Закрытие оборотных КЭК (исполняющий). Эти документы выполняют регламентные операции по закрытию счетов и переносу остатков в конце месяца или года. Они не относятся к фактическим оплатам и могут исказить картину, если не будут отфильтрованы.

В предыдущих версиях БГУ (например, 1.0) часто применялись эвристические методы фильтрации, такие как исключение записей, сделанных в "последнюю секунду года" (например, 31.12.20ХХ 23:59:59), поскольку именно в это время обычно формировались служебные проводки. Однако в БГУ 2.0 и более новых версиях платформы 1С:Предприятие 8.3 этот подход устарел и не является надежным.

Дело в том, что служебные документы могут формировать движения не только в последние секунды года, но и в начале дня (например, 31.12.2021 0:00:00) или в конце каждого месяца. Пытаться фильтровать их по дате и времени или по строковому представлению регистратора (Регистратор.Наименование) — это "костыли", которые могут привести к ошибкам или потребовать постоянных корректировок.

Решение проблемы: механизм "Уточнение периода"

В 1С:Предприятии 8.3 (начиная с версии 8.3.9) был введен специальный механизм — "уточнение периода". Этот механизм предназначен именно для того, чтобы разделить движения регистра на "обычные" и "служебные", не искажая при этом обороты и остатки.

Давайте подробнее рассмотрим, что такое "уточнение периода" и как оно работает:

  1. Суть механизма: "Уточнение периода" позволяет создавать движения по регистру бухгалтерии, которые влияют только на входящие остатки одного периода, но не влияют на исходящие остатки смежного, более младшего периода. Проще говоря, оно дает возможность проводить "технические" операции, которые должны быть видны для внутреннего учета (например, для закрытия месяца), но не должны искажать основные операционные показатели для внешних отчетов.
  2. Как это достигается: Секунда времени в платформе может быть разбита на множество дополнительных интервалов (до 1 000). Движение, сделанное в любом из этих "уточнений периода", будет учитываться во входящих остатках следующего, смежного периода, но не будет учитываться в исходящих остатках текущего периода. Это позволяет избежать двойного учета или искажения оборотов между периодами.
  3. Свойства платформы:
    • Для объекта конфигурации, описывающего регистр бухгалтерии (например, РегистрБухгалтерии.ЕПСБУ), реализовано свойство Длина уточнения периода. Если его значение равно 0, то механизм уточнения периода для данного регистра отсутствует.
    • Для объектов РегистрБухгалтерииЗапись (отдельная запись регистра) и РегистрБухгалтерииВыборка (выборка данных) реализовано свойство УточнениеПериода. Это свойство доступно в основной таблице регистра бухгалтерии, таблице субконто и виртуальной таблице движений с субконто.
    • Для параметра Периодичность виртуальных таблиц запросов регистра бухгалтерии (например, Обороты, ОборотыДтКт, ОстаткиИОбороты) реализовано значение УточнениеПериода. Это позволяет управлять тем, как запросы будут учитывать движения с уточнением периода.
    • Также существует объект МоментВремениСУточнениемПериода, который объединяет дату, время и уточнение периода в одну точку на временной оси.
  4. Отражение в отчетах: Движения, сделанные в уточнениях периода, будут отражаться в оборотах только в том случае, если период анализа целиком захватывает момент времени, в который выполнялись движения с указанием уточнения периода. Стандартные бухгалтерские отчеты в БГУ 2.0 (например, оборотно-сальдовая ведомость) по умолчанию настроены таким образом, чтобы не включать эти служебные движения в операционные обороты, показывая "чистую" картину.

Как использовать "Уточнение периода" в наших запросах

Для того чтобы наши запросы к РегистрБухгалтерии.ЕПСБУ.ДвиженияСубконто выдавали корректные данные без служебных проводок от закрытия, нам необходимо явно учитывать свойство УточнениеПериода.

Обычно, операционные движения (фактические оплаты, поступления, расходы) записываются с УточнениеПериода = 0. Служебные же документы закрытия формируют движения с ненулевым значением УточнениеПериода.

Таким образом, для фильтрации служебных операций нам достаточно добавить условие в наш запрос:


ВЫБРАТЬ
    РегистрБухгалтерииЕПСБУДвиженияСубконто.Период,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.Регистратор,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.НомерСтроки,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.СчетДт,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоДт1,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.СчетКт,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоКт1,
    РегистрБухгалтерииЕПСБУДвиженияСубконто.Сумма
ИЗ
    РегистрБухгалтерии.ЕПСБУ.ДвиженияСубконто КАК РегистрБухгалтерииЕПСБУДвиженияСубконто
ГДЕ
    РегистрБухгалтерииЕПСБУДвиженияСубконто.СчетКт = &СчетРасчетов
    И РегистрБухгалтерииЕПСБУДвиженияСубконто.ВидСубконтоКт1 = &ВидСубконтоДоговоры
    И ТипЗнч(РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоКт1) = ТИП(Справочник.ДоговорыКонтрагентов)
    И РегистрБухгалтерииЕПСБУДвиженияСубконто.УточнениеПериода = 0 // Ключевое условие для фильтрации

Добавление условия И РегистрБухгалтерииЕПСБУДвиженияСубконто.УточнениеПериода = 0 позволяет нам исключить из выборки все движения, которые были созданы служебными документами с ненулевым уточнением периода. Таким образом, мы получаем "чистую" выборку операционных оплат в разрезе договоров.

Важные моменты при работе с "Уточнением периода"

  1. Версия платформы: Уточнение периода появилось в платформе 1С:Предприятие 8.3.9. Убедитесь, что ваша версия платформы и конфигурации поддерживает этот механизм. БГУ 2.0 обычно работает на актуальных версиях платформы, где этот функционал присутствует.
  2. Проверка данных: После внедрения запроса всегда сравнивайте полученные данные со стандартными отчетами БГУ 2.0 (например, оборотно-сальдовой ведомостью), чтобы убедиться в корректности фильтрации и полноте данных. Стандартные отчеты по умолчанию уже учитывают "уточнение периода" и не включают служебные проводки.
  3. Понимание контекста: Важно понимать, что "уточнение периода" — это не просто дополнительное поле для фильтрации. Это часть логики работы с периодами в 1С, предназначенная для разделения операционного и регламентного учета. Глубокое понимание этого механизма поможет вам избежать ошибок при построении сложных отчетов.

Заключение

Для получения всех оплат в 1С:БГУ 2.0 в разрезе договоров мы рекомендуем обращаться к виртуальной таблице РегистрБухгалтерии.ЕПСБУ.ДвиженияСубконто. Это позволит собрать все необходимые данные, включая ручные проводки. Для исключения служебных операций, таких как Закрытие оборотных КЭК (исполняющий), используйте механизм "уточнение периода", добавляя в условие запроса И РегистрБухгалтерииЕПСБУДвиженияСубконто.УточнениеПериода = 0.

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

← На главную