В процессе работы с конфигурацией «1С:Бухгалтерия 3.0» (БП 3.0) часто возникает задача по выгрузке данных о движении денежных средств в связке с текущим состоянием расчетов с покупателями. Начинающие разработчики часто пытаются искать данные напрямую в документах ПоступлениеНаРасчетныйСчет, однако такой подход не позволяет корректно получить сальдо (остаток) по контрагенту на момент совершения операции или на текущую дату. В этой статье мы подробно разберем, как правильно извлекать информацию о поступлениях и балансе абонентов, используя стандартные механизмы и программные методы.
Прежде чем приступать к разработке собственного отчета, проанализируем типовой функционал системы. Программа 1С уже содержит мощные инструменты, которые позволяют получить требуемые данные без написания кода. Рассмотрим два основных отчета:
51 в разрезе конкретных документов, этот отчет является идеальным решением. В нем отражаются все поступления, даты, суммы и документы-основания. Если добавить в настройки отбор по корреспондирующему счету 62, мы получим список всех оплат от покупателей.62 следует использовать именно этот отчет. Он показывает начальный остаток, обороты за период и конечный остаток в разрезе контрагентов и договоров.Проанализируем ситуацию, когда пользователю нужно объединить эти данные в одну таблицу. Если стандартные отчеты не подходят по формату, мы переходим к использованию регистров.
Многие новички задаются вопросом: из какого регистра «тащить» данные? В 1С:Бухгалтерии 3.0 основным источником финансовой информации является Регистр бухгалтерии «Хозрасчетный». В отличие от управленческих конфигураций (УТ, ERP), здесь почти вся аналитика строится на бухгалтерских проводках.
Разберем, почему не стоит использовать физическую таблицу документа. Документ ПоступлениеНаРасчетныйСчет делает записи в несколько регистров, но именно Хозрасчетный гарантирует актуальность данных в соответствии с учетной политикой. Для решения задачи нам понадобятся виртуальные таблицы этого регистра.
Если нам необходимо создать кастомный отчет, лучше всего воспользоваться Системой Компоновки Данных (СКД). Выясним, какие таблицы регистра Хозрасчетный будут наиболее эффективны:
Для получения списка поступлений с одновременным расчетом сальдо наиболее подходящей является виртуальная таблица ОстаткиИОбороты. Рассмотрим пример структуры запроса, который позволит вытащить данные по счету 51 в корреспонденции со счетом 62.
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Период КАК ДатаОперации,
ХозрасчетныйОстаткиИОбороты.Регистратор КАК ДокументПоступления,
ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаПоступления,
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК КонечноеСальдо
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетныеСчета), , КорСчет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками))) КАК ХозрасчетныйОстаткиИОбороты
Важный момент: При работе со счетом 62 необходимо помнить, что он является активно-пассивным и имеет субсчета (62.01 — расчеты, 62.02 — авансы). Чтобы получить корректное «общее сальдо», в настройках запроса нужно указывать счет 62 целиком (без детализации до субсчетов), тогда система автоматически схлопнет остатки по дебету и кредиту.
Как прозвучало в обсуждении, автору требуется отфильтровать только «Оплату от покупателя». В регистре бухгалтерии нет прямого поля «Вид операции», так как это реквизит документа-регистратора. Рассмотрим, как решить эту задачу в запросе:
ПоступлениеНаРасчетныйСчет.ГДЕ ВЫРАЗИТЬ(Регистратор КАК Документ.ПоступлениеНаРасчетныйСчет).ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ОплатаПокупателя).Рассмотрим подробнее способ через Универсальный отчет. Это мощный инструмент для тех, кто не хочет писать код:
Регистр бухгалтерии.Хозрасчетный, а в таблице — Остатки и обороты.Счет Равно 62 (или 51 в зависимости от цели), а также Кор. счет Равно 51 (для получения только оплат).Сумма оборот, Сумма конечный остаток, Регистратор.Проанализируем ситуацию с авансами. В 1С:Бухгалтерии при поступлении денег на счет 51 программа автоматически распределяет сумму: часть может уйти на погашение долга на счет 62.01, а остаток — на аванс на счет 62.02. Если вы строите отчет только по одному из этих субсчетов, данные о сальдо будут неверными.
Рекомендация: Всегда анализируйте счет 62 в целом. Сальдо абонента — это разница между всеми его долгами и всеми его переплатами. Именно поэтому использование виртуальных таблиц остатков по группе счетов является стандартом качественной разработки в 1С.
Таким образом, для получения качественного отчета по поступлениям с сальдо, мы рекомендуем использовать регистр Хозрасчетный, виртуальную таблицу ОстаткиИОбороты и обязательную группировку по контрагенту без жесткой привязки к конкретному субсчету 62.01 или 62.02.