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