Почему возникает ошибка при проводке на забалансовый счет в 1С и как ее исправить

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

При разработке и настройке документов ввода остатков или первичных документов в нетиповых и самописных конфигурациях разработчики часто сталкиваются с ситуацией, когда проведение документа по забалансовому счету завершается ошибкой. Платформа «1С:Предприятие» выдает сообщение о том, что нельзя сделать проводку между балансовым и забалансовым счетом, даже если в документе визуально заполнена только одна сторона проводки (Дебет или Кредит).

Рассмотрим подробно причины возникновения этой проблемы, проанализируем ограничения платформы при работе с забалансовыми счетами, изучим особенности программного заполнения движений и разберем практические шаги по устранению ошибки.

Ограничения платформы 1С при работе с забалансовыми счетами

В регистрах бухгалтерии, поддерживающих корреспонденцию счетов, действуют строгие правила платформы «1С:Предприятие»:

  1. Запрет корреспондирования: Забалансовый счет не может корреспондировать ни с балансовым счетом, ни с другим забалансовым счетом. Для забалансовых счетов принцип двойной записи не применяется в традиционном виде.
  2. Простая запись: Запись по забалансовому счету должна отражаться либо только по Дебету, либо только по Кредиту. Корреспондирующий счет при этом должен оставаться полностью пустым (содержать пустую ссылку плана счетов).

Если при попытке формирования проводки платформа видит, что один из счетов имеет признак Забалансовый = Истина, а второй заполнен или воспринимается системой как балансовый счет, транзакция отменяется с ошибкой.

Анализ программного кода формирования проводки

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


врБР = РегистрыБухгалтерии.РегистрБухгалтерииФилиалы;
врВалюта = Константы.ВалютаДоллар.Получить();
врСчет00 = ПланыСчетов.План1.НайтиПоКоду("00");

Для Каждого СтрТаб Из ТаблицаДвижений Цикл
    
    врСчет1 = "";
    врСубк1 = "";
    врСубк2 = "";
    врСубк3 = "";
    
    Если СтрТаб.БухгСчет.Забалансовый = Ложь Тогда
        врСчет1 = врСчет00;
        врСубк1 = СтрТаб.Субконто1;
        врСубк2 = СтрТаб.Субконто2;
        врСубк3 = СтрТаб.Субконто3;
    КонецЕсли;
    
    Если СтрТаб.ДебетКредит = "Дт" Тогда
        врБР.СделатьПроводку(ЭтотОбъект, СтрТаб.БухгСчет, СтрТаб.Субконто1, СтрТаб.Субконто2, СтрТаб.Субконто3, 
                            врСчет1, врСубк1, врСубк2, врСубк3, 
                            СтрТаб.СуммаРуб, СтрТаб.Количество, СтрТаб.СуммаВал, врВалюта, "Ввод начальных остатков");
    Иначе
        врБР.СделатьПроводку(ЭтотОбъект, врСчет1, врСубк1, врСубк2, врСубк3, 
                            СтрТаб.БухгСчет, СтрТаб.Субконто1, СтрТаб.Субконто2, СтрТаб.Субконто3, 
                            СтрТаб.СуммаРуб, СтрТаб.Количество, СтрТаб.СуммаВал, врВалюта, "Ввод начальных остатков");
    КонецЕсли; 
    
КонецЦикла;

В представленном алгоритме следует обратить внимание на несколько ключевых моментов:

  1. Передача пустой строки вместо пустой ссылки: Переменная врСчет1 инициализируется как пустая строка "". При записи в набор движений платформа обычно автоматически приводит пустую строку к пустой ссылке соответствующего плана счетов, однако более корректным и безопасным подходом является явное использование метода ПланыСчетов.ИмяПланаСчетов.ПустаяСсылка().
  2. Проверка признака забалансового счета: Обязательно проверяем, что у проверяемого счета СтрТаб.БухгСчет.Забалансовый действительно установлен флаг Истина в плане счетов.
  3. Очистка субконто: При записи проводки по забалансовому счету на противоположной стороне проводки должны отсутствовать не только счета, но и заполненные субконто.

Диагностика и поиск причин ошибки

Если код написан корректно, но документ ранее проводился, а после перепроведения начал вызывать ошибку, проанализируем возможные скрытые причины:

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

Решение проблемы через Тестирование и исправление (ТИИ)

Если логика кода верна, счета настроены правильно, но платформа продолжает отбивать транзакцию с ошибкой некорректной корреспонденции, причиной является сбой индексов информационной базы или некорректный пересчет итогов регистра бухгалтерии.

Для устранения этой проблемы выполним процедуру Тестирование и исправление информационной базы:

  1. Создадим резервную копию информационной базы.
  2. Откроем информационную базу в режиме Конфигуратор.
  3. Перейдем в главное меню: Администрирование — Тестирование и исправление...
  4. Установим флажки напротив следующих пунктов:
    • Реиндексация таблиц информационной базы
    • Проверка логической целостности информационной базы
    • Пересчет итогов
  5. Нажмем кнопку Выполнить и дождемся завершения процесса.

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

← На главную