При переносе данных из других конфигураций (например, из 1С:Управление торговлей) в 1С:Управление производственным предприятием (УПП), редакция 1.3 пользователи часто сталкиваются с ситуацией, когда в договорах контрагентов автоматически устанавливается признак «Вести по документам расчетов с контрагентом». Если этот признак затем отключают вручную, система перестает автоматически «схлопывать» дебиторскую и кредиторскую задолженности (счета 60.01 и 60.02), образуя развернутое сальдо.
Перепроведение документов за прошлые периоды для исправления этой проблемы зачастую невозможно, так как периоды уже закрыты, отчетность сдана, а любое изменение движений может исказить данные прошлых периодов и закрытие месяца. Давайте подробно разберем, почему возникает эта проблема, как устроены механизмы взаиморасчетов в 1С:УПП 1.3 на уровне регистров и как решить задачу без перепроведения исторических документов.
Для того чтобы понять суть проблемы, нам необходимо проанализировать внутреннюю архитектуру учета взаиморасчетов в 1С:УПП. Когда в договоре включена опция ведения расчетов по документам, программа задействует сложную цепочку регистров. Основными здесь выступают:
ВзаиморасчетыСКонтрагентами — отвечает за общие взаиморасчеты в разрезе договоров и сделок.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов — хранит информацию о долгах и авансах в разрезе конкретных платежек, накладных и актов.РасчетыПоПриобретениюВБухгалтерскомУчете (или РасчетыПоРеализацииВБухгалтерскомУчете для 62 счета) — важнейший регистр, на основании которого платформа принимает решение о необходимости проведения зачета аванса в бухгалтерском учете и формирует проводки Дт 60.01 Кт 60.02.Когда вы просто снимаете флаг «Вести по документам расчетов...» в карточке договора, система начинает вести учет по «новой» схеме: в движениях новых документов аналитика «Документ расчетов» теперь остается пустой. Однако все старые документы в закрытом периоде уже сделали движения по регистрам с указанием конкретных документов расчетов.
С точки зрения СУБД и логики 1С, запись с заполненным измерением ДокументРасчетов (например, Платежное поручение входящее №1) и запись с пустым значением этого измерения — это абсолютно разные разрезы учета. Программа физически не может сопоставить платеж без указания документа расчетов с отгрузкой, которая требует жесткой привязки к конкретному документу. В результате автоматический зачет аванса ломается как для старых, так и для новых документов, а на счетах 60.01 и 60.02 зависают встречные остатки.
Рассмотрим пошагово рабочие и безопасные варианты исправления ситуации в открытом периоде.
Этот способ является наиболее чистым с точки зрения методологии учета и минимизирует риски возникновения ошибок при расчете НДС. Мы не пытаемся «починить» старый договор в текущем периоде, а аккуратно переносим чистые остатки на новую аналитику.
Выполним следующие действия:
КорректировкаДолга с видом операции «Перенос задолженности».КорректировкаДолга автоматически спишет остатки со всех регистров старого договора (закрыв старые документы расчетов) и оприходует единые свернутые суммы на новый договор.Если создание нового договора нежелательно (например, из-за жестких требований ведения аналитики или обмена с внешними базами данных), можно скорректировать остатки по текущему договору в открытом периоде.
Рассмотрим этот алгоритм:
КорректировкаДолга с видом операции «Взаимозачет» текущей датой (в открытом периоде).Дт 60.01 Кт 60.02 в открытом периоде и закроет расхождения по регистру РасчетыПоПриобретениюВБухгалтерскомУчете.В случаях, когда «Корректировка долга» не справляется из-за сложных перекрестных остатков по разным договорам или валютам, можно воспользоваться документом КорректировкаЗаписейРегистров.
Ниже приведем концептуальный пример кода, который может быть использован во внешней обработке для программного выравнивания остатков в регистре накопления РасчетыПоПриобретениюВБухгалтерскомУчете без перепроведения первичных документов:
// Создаем документ Корректировка записей регистров в открытом периоде
НоваяКорректировка = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
НоваяКорректировка.Дата = ТекущаяДата(); // Использовать дату открытого периода
НоваяКорректировка.Комментарий = "Автоматическое выравнивание аналитики документов расчетов";
НоваяКорректировка.Записать();
// Подключаем регистр "Расчеты по приобретению (бухгалтерский учет)"
ТаблицаРегистра = НоваяКорректировка.Движения.РасчетыПоПриобретениюВБухгалтерскомУчете;
// Шаг 1: Списываем остаток с заполненным документом расчетов (Расход)
НовоеДвижениеРасход = ТаблицаРегистра.ДобавитьРасход();
НовоеДвижениеРасход.Период = НоваяКорректировка.Дата;
НовоеДвижениеРасход.ДоговорКонтрагента = СсылкаНаДоговор;
НовоеДвижениеРасход.Контрагент = СсылкаНаКонтрагента;
НовоеДвижениеРасход.ДокументРасчетовСКонтрагентом = СтарыйДокументРасчетов; // Тот, который завис в закрытом периоде
НовоеДвижениеРасход.СуммаВзаиморасчетов = ЗависшаяСумма;
НовоеДвижениеРасход.СуммаБух = ЗависшаяСумма;
НовоеДвижениеРасход.СчетУчета = СчетоводныйСчет; // Например, 60.01 или 60.02
// Шаг 2: Приходуем эту же сумму на пустой документ расчетов (Приход)
НовоеДвижениеПриход = ТаблицаРегистра.ДобавитьПриход();
НовоеДвижениеПриход.Период = НоваяКорректировка.Дата;
НовоеДвижениеПриход.ДоговорКонтрагента = СсылкаНаДоговор;
НовоеДвижениеПриход.Контрагент = СсылкаНаКонтрагента;
НовоеДвижениеПриход.ДокументРасчетовСКонтрагентом = Неопределено; // Очищаем аналитику документа расчетов
НовоеДвижениеПриход.СуммаВзаиморасчетов = ЗависшаяСумма;
НовоеДвижениеПриход.СуммаБух = ЗависшаяСумма;
НовоеДвижениеПриход.СчетУчета = СчетоводныйСчет;
// Записываем движения
НоваяКорректировка.Движения.РасчетыПоПриобретениюВБухгалтерскомУчете.Записать();
При использовании этого метода важно аналогичным образом скорректировать записи в регистрах ВзаиморасчетыСКонтрагентами и ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов, а также сделать выравнивающие проводки по регистру бухгалтерии Хозрасчетный, чтобы закрыть субконто «Документы расчетов с контрагентами» на счетах 60.01/60.02.
Выбор конкретного метода зависит от объемов накопленных ошибок в информационной базе и требований ведения учета. Метод с переносом задолженности на новый договор через документ КорректировкаДолга является наиболее простым и безопасным решением, не требующим программирования.