Как настроить зачет авансов по счетам 60.01 и 60.02 в 1С:УПП без перепроведения документов закрытого периода?

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

При переносе данных из других конфигураций (например, из 1С:Управление торговлей) в 1С:Управление производственным предприятием (УПП), редакция 1.3 пользователи часто сталкиваются с ситуацией, когда в договорах контрагентов автоматически устанавливается признак «Вести по документам расчетов с контрагентом». Если этот признак затем отключают вручную, система перестает автоматически «схлопывать» дебиторскую и кредиторскую задолженности (счета 60.01 и 60.02), образуя развернутое сальдо.

Перепроведение документов за прошлые периоды для исправления этой проблемы зачастую невозможно, так как периоды уже закрыты, отчетность сдана, а любое изменение движений может исказить данные прошлых периодов и закрытие месяца. Давайте подробно разберем, почему возникает эта проблема, как устроены механизмы взаиморасчетов в 1С:УПП 1.3 на уровне регистров и как решить задачу без перепроведения исторических документов.

Почему простое снятие флага в договоре не решает проблему?

Для того чтобы понять суть проблемы, нам необходимо проанализировать внутреннюю архитектуру учета взаиморасчетов в 1С:УПП. Когда в договоре включена опция ведения расчетов по документам, программа задействует сложную цепочку регистров. Основными здесь выступают:

  1. Регистр накопления ВзаиморасчетыСКонтрагентами — отвечает за общие взаиморасчеты в разрезе договоров и сделок.
  2. Регистр накопления ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов — хранит информацию о долгах и авансах в разрезе конкретных платежек, накладных и актов.
  3. Регистр накопления РасчетыПоПриобретениюВБухгалтерскомУчете (или РасчетыПоРеализацииВБухгалтерскомУчете для 62 счета) — важнейший регистр, на основании которого платформа принимает решение о необходимости проведения зачета аванса в бухгалтерском учете и формирует проводки Дт 60.01 Кт 60.02.

Когда вы просто снимаете флаг «Вести по документам расчетов...» в карточке договора, система начинает вести учет по «новой» схеме: в движениях новых документов аналитика «Документ расчетов» теперь остается пустой. Однако все старые документы в закрытом периоде уже сделали движения по регистрам с указанием конкретных документов расчетов.

С точки зрения СУБД и логики 1С, запись с заполненным измерением ДокументРасчетов (например, Платежное поручение входящее №1) и запись с пустым значением этого измерения — это абсолютно разные разрезы учета. Программа физически не может сопоставить платеж без указания документа расчетов с отгрузкой, которая требует жесткой привязки к конкретному документу. В результате автоматический зачет аванса ломается как для старых, так и для новых документов, а на счетах 60.01 и 60.02 зависают встречные остатки.

Рассмотрим пошагово рабочие и безопасные варианты исправления ситуации в открытом периоде.

Решение 1. Перенос остатков на новый договор через «Корректировку долга» (Рекомендуемый способ)

Этот способ является наиболее чистым с точки зрения методологии учета и минимизирует риски возникновения ошибок при расчете НДС. Мы не пытаемся «починить» старый договор в текущем периоде, а аккуратно переносим чистые остатки на новую аналитику.

Выполним следующие действия:

  1. Вернем флаг «Вести по документам расчетов с контрагентами» в старом договоре на место (если он был снят). Это необходимо, чтобы восстановить корректную структуру исторических данных в закрытых периодах.
  2. Создадим в справочнике «Договоры контрагентов» новый договор. В его настройках флаг «Вести по документам расчетов» устанавливать не будем. Обязательно укажем понятное наименование, например: «Основной договор (без документов расчетов)».
  3. В текущем (открытом) периоде создадим документ КорректировкаДолга с видом операции «Перенос задолженности».
  4. Заполним документ остатками по нашему контрагенту. В качестве договора-источника укажем старый договор, а в качестве договора-получателя — вновь созданный договор без флага.
  5. При проведении документ КорректировкаДолга автоматически спишет остатки со всех регистров старого договора (закрыв старые документы расчетов) и оприходует единые свернутые суммы на новый договор.
  6. Все последующие первичные документы (поступления, оплаты) оформляем исключительно по новому договору. Зачет авансов теперь будет происходить автоматически в хронологическом порядке.

Решение 2. Проведение взаимозачета в текущем периоде по действующему договору

Если создание нового договора нежелательно (например, из-за жестких требований ведения аналитики или обмена с внешними базами данных), можно скорректировать остатки по текущему договору в открытом периоде.

Рассмотрим этот алгоритм:

  1. Оставляем флаг ведения расчетов по документам в договоре выключенным.
  2. Создаем документ КорректировкаДолга с видом операции «Взаимозачет» текущей датой (в открытом периоде).
  3. В качестве дебитора и кредитора указываем одного и того же контрагента.
  4. Нажимаем кнопку «Заполнить» (заполнить остатками по взаиморасчетам).
  5. В табличной части дебиторской задолженности (счет 60.02) мы увидим строки со старыми документами расчетов из закрытого периода. В табличной части кредиторской задолженности (счет 60.01) отразятся новые поступления с пустой аналитикой документов расчетов.
  6. Указываем равные суммы к зачету и проводим документ. Система сформирует проводку Дт 60.01 Кт 60.02 в открытом периоде и закроет расхождения по регистру РасчетыПоПриобретениюВБухгалтерскомУчете.

Решение 3. Программная корректировка регистров (для разработчиков)

В случаях, когда «Корректировка долга» не справляется из-за сложных перекрестных остатков по разным договорам или валютам, можно воспользоваться документом КорректировкаЗаписейРегистров.

Ниже приведем концептуальный пример кода, который может быть использован во внешней обработке для программного выравнивания остатков в регистре накопления РасчетыПоПриобретениюВБухгалтерскомУчете без перепроведения первичных документов:


// Создаем документ Корректировка записей регистров в открытом периоде
НоваяКорректировка = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
НоваяКорректировка.Дата = ТекущаяДата(); // Использовать дату открытого периода
НоваяКорректировка.Комментарий = "Автоматическое выравнивание аналитики документов расчетов";
НоваяКорректировка.Записать();

// Подключаем регистр "Расчеты по приобретению (бухгалтерский учет)"
ТаблицаРегистра = НоваяКорректировка.Движения.РасчетыПоПриобретениюВБухгалтерскомУчете;

// Шаг 1: Списываем остаток с заполненным документом расчетов (Расход)
НовоеДвижениеРасход = ТаблицаРегистра.ДобавитьРасход();
НовоеДвижениеРасход.Период = НоваяКорректировка.Дата;
НовоеДвижениеРасход.ДоговорКонтрагента = СсылкаНаДоговор;
НовоеДвижениеРасход.Контрагент = СсылкаНаКонтрагента;
НовоеДвижениеРасход.ДокументРасчетовСКонтрагентом = СтарыйДокументРасчетов; // Тот, который завис в закрытом периоде
НовоеДвижениеРасход.СуммаВзаиморасчетов = ЗависшаяСумма;
НовоеДвижениеРасход.СуммаБух = ЗависшаяСумма;
НовоеДвижениеРасход.СчетУчета = СчетоводныйСчет; // Например, 60.01 или 60.02

// Шаг 2: Приходуем эту же сумму на пустой документ расчетов (Приход)
НовоеДвижениеПриход = ТаблицаРегистра.ДобавитьПриход();
НовоеДвижениеПриход.Период = НоваяКорректировка.Дата;
НовоеДвижениеПриход.ДоговорКонтрагента = СсылкаНаДоговор;
НовоеДвижениеПриход.Контрагент = СсылкаНаКонтрагента;
НовоеДвижениеПриход.ДокументРасчетовСКонтрагентом = Неопределено; // Очищаем аналитику документа расчетов
НовоеДвижениеПриход.СуммаВзаиморасчетов = ЗависшаяСумма;
НовоеДвижениеПриход.СуммаБух = ЗависшаяСумма;
НовоеДвижениеПриход.СчетУчета = СчетоводныйСчет;

// Записываем движения
НоваяКорректировка.Движения.РасчетыПоПриобретениюВБухгалтерскомУчете.Записать();

При использовании этого метода важно аналогичным образом скорректировать записи в регистрах ВзаиморасчетыСКонтрагентами и ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов, а также сделать выравнивающие проводки по регистру бухгалтерии Хозрасчетный, чтобы закрыть субконто «Документы расчетов с контрагентами» на счетах 60.01/60.02.

Выбор конкретного метода зависит от объемов накопленных ошибок в информационной базе и требований ведения учета. Метод с переносом задолженности на новый договор через документ КорректировкаДолга является наиболее простым и безопасным решением, не требующим программирования.

← На главную