При работе с конфигурацией 1С:Бухгалтерия государственного учреждения, редакция 2.0 (БГУ 2.0), часто возникает необходимость получить полную и точную информацию обо всех оплатах в разрезе конкретных договоров. Стандартные подходы, такие как запросы к документам ПриходныйКассовыйОрдер, КассовоеПоступлениеРасшифровкаПлатежа, или анализ ручных операций через документ Операция (бухгалтерская), могут оказаться неэффективными или неполными. Особенно это проявляется, когда бухгалтеры вносят ручные проводки, которые не всегда связаны с типовыми документами оплат.
В этой статье мы подробно рассмотрим, как правильно извлекать данные об оплатах напрямую из регистра бухгалтерии, обеспечивая при этом полноту и достоверность информации, а также как избавиться от "лишних" служебных записей, которые создаются регламентными операциями.
Для получения всех оплат в разрезе договоров, наиболее надежным и полным источником данных является регистр бухгалтерии. В конфигурации БГУ 2.0 таким регистром является РегистрБухгалтерии.ЕПСБУ. Для анализа движений по субконто нам потребуется виртуальная таблица ДвиженияСубконто этого регистра.
Давайте разберем, почему этот подход предпочтительнее. Регистр бухгалтерии фиксирует все проводки, формируемые как типовыми документами, так и ручными операциями. Это гарантирует, что мы не пропустим никаких финансовых движений, связанных с оплатами. Используя виртуальную таблицу ДвиженияСубконто, мы можем получить детализацию проводок, включая субконто, что критически важно для анализа в разрезе договоров.
Наш запрос будет выглядеть примерно так:
ВЫБРАТЬ
РегистрБухгалтерииЕПСБУДвиженияСубконто.Период,
РегистрБухгалтерииЕПСБУДвиженияСубконто.Регистратор,
РегистрБухгалтерииЕПСБУДвиженияСубконто.НомерСтроки,
РегистрБухгалтерииЕПСБУДвиженияСубконто.СчетДт,
РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоДт1,
РегистрБухгалтерииЕПСБУДвиженияСубконто.СчетКт,
РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоКт1,
РегистрБухгалтерииЕПСБУДвиженияСубконто.Сумма
ИЗ
РегистрБухгалтерии.ЕПСБУ.ДвиженияСубконто КАК РегистрБухгалтерииЕПСБУДвиженияСубконто
ГДЕ
РегистрБухгалтерииЕПСБУДвиженияСубконто.СчетКт = &СчетРасчетов
И РегистрБухгалтерииЕПСБУДвиженияСубконто.ВидСубконтоКт1 = &ВидСубконтоДоговоры
И ТипЗнч(РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоКт1) = ТИП(Справочник.ДоговорыКонтрагентов)
В этом запросе мы используем следующие параметры:
&СчетРасчетов: Это будет счет, по которому учитываются поступления денежных средств, например, 205.31 (Расчеты по доходам от оказания платных услуг (работ)). Выбираем кредит счета, так как обычно поступление оплаты отражается по кредиту счетов расчетов с дебетом счетов денежных средств.&ВидСубконтоДоговоры: Это вид субконто, соответствующий договорам. В БГУ 2.0 для счета 205.31 первым субконто часто является Контрагенты, а вторым — Договоры. Нам нужно уточнить, какое именно субконто содержит ссылку на договор.ТипЗнч(РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоКт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) был введен специальный механизм — "уточнение периода". Этот механизм предназначен именно для того, чтобы разделить движения регистра на "обычные" и "служебные", не искажая при этом обороты и остатки.
Давайте подробнее рассмотрим, что такое "уточнение периода" и как оно работает:
РегистрБухгалтерии.ЕПСБУ), реализовано свойство Длина уточнения периода. Если его значение равно 0, то механизм уточнения периода для данного регистра отсутствует.РегистрБухгалтерииЗапись (отдельная запись регистра) и РегистрБухгалтерииВыборка (выборка данных) реализовано свойство УточнениеПериода. Это свойство доступно в основной таблице регистра бухгалтерии, таблице субконто и виртуальной таблице движений с субконто.Периодичность виртуальных таблиц запросов регистра бухгалтерии (например, Обороты, ОборотыДтКт, ОстаткиИОбороты) реализовано значение УточнениеПериода. Это позволяет управлять тем, как запросы будут учитывать движения с уточнением периода.МоментВремениСУточнениемПериода, который объединяет дату, время и уточнение периода в одну точку на временной оси.Для того чтобы наши запросы к РегистрБухгалтерии.ЕПСБУ.ДвиженияСубконто выдавали корректные данные без служебных проводок от закрытия, нам необходимо явно учитывать свойство УточнениеПериода.
Обычно, операционные движения (фактические оплаты, поступления, расходы) записываются с УточнениеПериода = 0. Служебные же документы закрытия формируют движения с ненулевым значением УточнениеПериода.
Таким образом, для фильтрации служебных операций нам достаточно добавить условие в наш запрос:
ВЫБРАТЬ
РегистрБухгалтерииЕПСБУДвиженияСубконто.Период,
РегистрБухгалтерииЕПСБУДвиженияСубконто.Регистратор,
РегистрБухгалтерииЕПСБУДвиженияСубконто.НомерСтроки,
РегистрБухгалтерииЕПСБУДвиженияСубконто.СчетДт,
РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоДт1,
РегистрБухгалтерииЕПСБУДвиженияСубконто.СчетКт,
РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоКт1,
РегистрБухгалтерииЕПСБУДвиженияСубконто.Сумма
ИЗ
РегистрБухгалтерии.ЕПСБУ.ДвиженияСубконто КАК РегистрБухгалтерииЕПСБУДвиженияСубконто
ГДЕ
РегистрБухгалтерииЕПСБУДвиженияСубконто.СчетКт = &СчетРасчетов
И РегистрБухгалтерииЕПСБУДвиженияСубконто.ВидСубконтоКт1 = &ВидСубконтоДоговоры
И ТипЗнч(РегистрБухгалтерииЕПСБУДвиженияСубконто.СубконтоКт1) = ТИП(Справочник.ДоговорыКонтрагентов)
И РегистрБухгалтерииЕПСБУДвиженияСубконто.УточнениеПериода = 0 // Ключевое условие для фильтрации
Добавление условия И РегистрБухгалтерииЕПСБУДвиженияСубконто.УточнениеПериода = 0 позволяет нам исключить из выборки все движения, которые были созданы служебными документами с ненулевым уточнением периода. Таким образом, мы получаем "чистую" выборку операционных оплат в разрезе договоров.
Для получения всех оплат в 1С:БГУ 2.0 в разрезе договоров мы рекомендуем обращаться к виртуальной таблице РегистрБухгалтерии.ЕПСБУ.ДвиженияСубконто. Это позволит собрать все необходимые данные, включая ручные проводки. Для исключения служебных операций, таких как Закрытие оборотных КЭК (исполняющий), используйте механизм "уточнение периода", добавляя в условие запроса И РегистрБухгалтерииЕПСБУДвиженияСубконто.УточнениеПериода = 0.
Такой подход обеспечивает наиболее точный и полный анализ финансовых операций, позволяя вам строить надежные и достоверные отчеты по оплатам в вашей организации.