В практике крупных предприятий, особенно в сфере строительства, проектного бизнеса или при работе с государственными контрактами, часто возникает требование: зачитывать полученный аванс не полностью при первой же отгрузке, а пропорционально выполненным этапам. Стандартный механизм 1С:ERP по умолчанию стремится закрыть дебиторскую задолженность максимально возможной суммой свободного аванса (метод FIFO). Рассмотрим подробнее, как обойти это ограничение и настроить систему под требования бухгалтерии.
Представим ситуацию: заключен договор на общую сумму 1000 рублей. По условиям договора покупатель вносит аванс 30% (300 рублей). Предприятие производит первую отгрузку на 500 рублей (это 50% от общей суммы договора). Бухгалтеру необходимо, чтобы система зачла не все 300 рублей аванса, а только 150 рублей (50% от суммы аванса), чтобы оставшаяся часть аванса распределилась на последующие поставки. Проанализируем способы решения этой задачи.
Самый гибкий способ управления взаиморасчетами — это изменение уровня детализации в договоре или соглашении. Если расчеты ведутся «По договорам» или «По заказам», система автоматически пытается «схлопнуть» долги в рамках этих крупных объектов.
Разберем по шагам настройку детализации:
ДоговорыМеждуОрганизациями или ДоговорыКонтрагентов.При такой настройке каждая РеализацияТоваровУслуг становится самостоятельным объектом расчетов. Программа не будет автоматически привязывать к ней весь аванс по договору, пока пользователь не укажет это явно. Это позволяет бухгалтеру самостоятельно определять, какую сумму оплаты привязать к конкретной отгрузке.
Если вы не хотите менять детализацию расчетов или структура ЗаказовКлиентов уже жестко задана, можно воспользоваться механизмом ручной корректировки зачета. Проанализируем, как это сделать непосредственно в документе отгрузки.
РеализацияТоваровУслуг.Важно помнить, что если в настройках системы (НСИ и администрирование — Казначейство) включен Автоматический зачет оплат, то при выполнении регламентных операций закрытия месяца система может попытаться снова дозачесть остатки. Поэтому при использовании ручного метода необходимо контролировать состояние расчетов после закрытия периода. Для такого контроля подойдёт отчет для анализа продаж и оплат по объектам расчетов.
Для более системного подхода рассмотрим использование графиков. В 1С:ERP график оплаты в документе ЗаказКлиента служит не только для платежного календаря, но и как аналитика для распределения оплат.
Если в графике оплаты заказа указать несколько этапов (например, «Аванс до отгрузки» и «Оплата после отгрузки»), то при зачете оплаты система будет предлагать распределять суммы согласно этим этапам. Однако, как отмечалось в обсуждении, если точные проценты отгрузок заранее неизвестны, этот метод потребует постоянной актуализации заказа перед каждой реализацией, что не всегда удобно.
Проанализируем ситуацию с точки зрения налогового учета. Когда мы делаем частичный зачет аванса, это напрямую влияет на восстановление НДС (счет 76.ВА или 62.02 в зависимости от настроек). Согласно позиции контролирующих органов и НК РФ, налогоплательщик имеет право на вычет НДС с аванса в размере суммы, на которую произведена отгрузка и фактически зачтен аванс по условиям договора.
Таким образом, если договором предусмотрен именно пропорциональный зачет, то частичное восстановление НДС в 1С:ERP через ручную корректировку зачета оплаты является методологически верным. Проводка Дт 62.02 Кт 62.01 будет сформирована только на сумму 150 рублей, и запись в Книге покупок по восстановлению НДС с аванса также сформируется на эту частичную сумму.
Если подобных отгрузок много, ручной ввод в каждой реализации становится трудозатратным. Рассмотрим пример логики, которую можно реализовать через расширение конфигурации. Нам необходимо перехватить процедуру расчета суммы зачета.
Выясним причину автоматического заполнения: за это отвечает программный интерфейс модуля расчетов. Мы можем добавить подписку на событие или &После для метода, заполняющего таблицу зачетов.
// Пример упрощенной логики для расширения
Процедура РасчитатьПропорциональныйЗачет(ДокументОбъект)
// 1. Получаем общую сумму договора (например, из доп. реквизита или суммы Заказа)
ОбщаяСуммаДоговора = ДокументОбъект.ЗаказКлиента.СуммаДокумента;
// 2. Вычисляем долю текущей отгрузки
ДоляОтгрузки = ДокументОбъект.СуммаДокумента / ОбщаяСуммаДоговора;
// 3. Получаем остаток нераспределенного аванса
ОстатокАванса = ПолучитьОстатокАвансаПоДоговору(ДокументОбъект.Договор);
// 4. Рассчитываем сумму к зачету
СуммаКЗачету = ОстатокАванса * ДоляОтгрузки;
// 5. Записываем в таблицу ЗачетОплаты документа
// (Код обращения к табличной части документа)
КонецПроцедуры
Подводя итог, можно сказать, что наиболее стабильным типовым решением для 1С:ERP 2.5 является использование детализации расчетов По накладным. Это дает бухгалтеру полный контроль над ситуацией и исключает «схлопывание» авансов в неподходящий момент. Если же необходимо оставить расчеты По заказам, придется прибегнуть к ручной корректировке через форму Зачет оплаты в каждой реализации или разработать небольшое расширение, автоматизирующее расчет пропорции. Для исключения рутинных операций при распределении взаиморасчетов можно использовать обработку для автоматизации зачета авансов.