Почему после обновления 1С:Бухгалтерия на счете 68.01 сместились субконто и появилось «Объект не найден», и как это исправить?

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

В последних обновлениях конфигурации 1С:Бухгалтерия предприятия (начиная с релизов 3.0.167.х) произошли существенные изменения в плане счетов, касающиеся учета НДФЛ. Многие пользователи, особенно те, у кого настроена синхронизация с внешними зарплатными системами уровня КОРП, столкнулись с проблемой: привычные субконто на счете 68.01 сместились, появились битые ссылки («Объект не найден»), или данные «разъехались» по разным аналитикам. Давайте разберем причины этого явления и рассмотрим несколько способов решения проблемы.

Суть проблемы и причины возникновения

Разберем ситуацию подробно. В типовой «Бухгалтерии предприятия» (версия ПРОФ) на счете 68.01 традиционно использовалось одно субконто — Виды платежей в бюджет (фонды). В версии КОРП учет сложнее: там присутствует второе субконто — Регистрация в налоговом органе (для учета по обособленным подразделениям).

Начиная с версии 3.0.167, разработчики 1С провели реструктуризацию: субсчета 68.01.1 и 68.01.2 были упразднены и объединены в единый счет 68.01. При обновлении программа запускает процедуру переноса остатков и оборотов.

Проблема возникает, если ваша база ПРОФ обменивается данными с ЗУП КОРП. В настройках синхронизации (плане обмена) может содержаться информация о структуре аналитики КОРП-версии. Механизм обновления видит эту настройку и ошибочно пытается привести счет 68.01 к виду КОРП, добавляя субконто «Регистрация в налоговом органе».

В результате мы получаем следующую картину:

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

Рассмотрим способы исправления этой ситуации, от ручных методов до программной обработки данных.

Способ 1. Ручное восстановление настройки счета (если данных мало)

Если вы заметили проблему сразу после обновления и документы еще не перепроводились массово, можно попытаться вернуть настройки плана счетов вручную. Этот метод подходит, если в базе нет реального учета по обособленным подразделениям (что характерно для версии ПРОФ).

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

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

После этого необходимо проверить оборотно-сальдовую ведомость. Если видите «Объект не найден» в аналитике, потребуется запустить Тестирование и исправление базы данных (раздел «Администрирование» — «Обслуживание»), выбрав опции проверки ссылочной целостности.

Способ 2. Программная корректировка проводок (если данные «уехали»)

Бывают ситуации, когда после обновления и перепроведения документов данные уже записались в неправильные ячейки субконто (например, на 3-ю позицию вместо 2-й, или на 2-ю вместо 1-й). Простое изменение настройки счета здесь не поможет — нужно физически перенести данные в таблицах регистра бухгалтерии.

Проанализируем пример кода, который позволяет перенести данные с ошибочного третьего субконто на второе (или с любого неправильного на правильное). Этот код следует выполнять в виде внешней обработки или через консоль кода, предварительно сделав резервную копию базы.

Алгоритм действий следующий:

  1. Выбираем документы, которые сделали движения по счету 68.01 за нужный период.
  2. Читаем набор записей регистра бухгалтерии для каждого документа.
  3. Проходим циклом по проводкам и переставляем значения субконто на нужные места.
  4. Записываем набор записей обратно.

Рассмотрим код обработки:


Запрос = Новый Запрос;
// Выбираем все документы, которые двигали 68.01 за указанный период
Запрос.Текст = 
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ХозрасчетныйОбороты.Регистратор КАК Докум,
    |    ХозрасчетныйОбороты.Период КАК Период
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачДата, &КонДата, Регистратор, Счет = &Счет6801, , , , ) КАК ХозрасчетныйОбороты
    |
    |УПОРЯДОЧИТЬ ПО
    |    Период";

Запрос.УстановитьПараметр("НачДата", Объект.ДатаНачала); // Укажите ваши даты
Запрос.УстановитьПараметр("КонДата", Объект.ДатаОкончания);
Запрос.УстановитьПараметр("Счет6801", ПланыСчетов.Хозрасчетный.НДФЛ); // Счет 68.01

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Сообщить("Найдено документов к обработке: " + Выборка.Количество());    
СчетОбработки = ПланыСчетов.Хозрасчетный.НДФЛ;

Пока Выборка.Следующий() Цикл
    
    // Блокировка для надежности (опционально)
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Хозрасчетный");
    ЭлементБлокировки.УстановитьЗначение("Регистратор", Выборка.Докум);
    Блокировка.Заблокировать();
    
    Проводки = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    Проводки.Отбор.Регистратор.Установить(Выборка.Докум);
    Проводки.Прочитать();
    
    НаборИзменен = Ложь;
    
    // Обходим все проводки документа
    Для каждого Запись из Проводки Цикл
        
        // Обработка по Дебету
        Если Запись.СчетДт = СчетОбработки Тогда
            // Если данные оказались на Субконто3, а Субконто2 пустое - переносим
            // ВАЖНО: Адаптируйте условие под вашу ситуацию!
            // Например, если данные на Субконто2, а должны быть на Субконто1
            Если ЗначениеЗаполнено(Запись.СубконтоДт3) И Не ЗначениеЗаполнено(Запись.СубконтоДт2) Тогда
                Запись.СубконтоДт2 = Запись.СубконтоДт3;
                Запись.СубконтоДт3 = Неопределено; // Очищаем старое
                НаборИзменен = Истина;
            КонецЕсли;
        КонецЕсли;
        
        // Обработка по Кредиту
        Если Запись.СчетКт = СчетОбработки Тогда
            Если ЗначениеЗаполнено(Запись.СубконтоКт3) И Не ЗначениеЗаполнено(Запись.СубконтоКт2) Тогда
                Запись.СубконтоКт2 = Запись.СубконтоКт3;
                Запись.СубконтоКт3 = Неопределено;
                НаборИзменен = Истина;
            КонецЕсли;
        КонецЕсли;
        
    КонецЦикла;
    
    Если НаборИзменен Тогда
        Попытка
            Проводки.Записать(Истина); // Записываем с замещением
            Сообщить("Обработан документ: " + Выборка.Докум);
        Исключение
            Сообщить("Ошибка записи документа " + Выборка.Докум + ": " + ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
    
КонецЦикла; 

Важно: После выполнения такой обработки обязательно проверьте настройки счета в плане счетов. Лишние виды субконто (например, третье, которое мы очистили) нужно удалить из настроек счета в режиме Предприятия, чтобы пользователи в будущем не могли туда ничего записать.

Способ 3. Обновление через Конфигуратор и патчи

Наиболее надежный способ избежать проблем — соблюдать правильную технологию обновления. Если вы еще не обновились или планируете восстановить копию и повторить процесс:

  1. Обновляйте базу через режим Конфигуратор, а не через пользовательский режим. Это позволяет лучше контролировать процесс реструктуризации таблиц.
  2. Перед началом работы в пользовательском режиме после обновления убедитесь, что у вас установлены актуальные патчи (исправления ошибок) от фирмы 1С. Для проблемы со счетом 68.01 выпускались специальные патчи, корректирующие процедуру переноса данных.
  3. Зайдите в раздел Администрирование - Обслуживание - Обновление программы - Установленные исправления (патчи) и проверьте наличие исправлений, касающихся НДФЛ или счетов учета.

Рекомендация по профилактике

Если у вас база ПРОФ, но настроен обмен с ЗУП КОРП, программа может «думать», что ей необходима аналитика по регистрации в ИФНС. Проверьте настройки синхронизации и функциональности программы.

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

Резюме

Смещение субконто на счете 68.01 — это результат конфликта нового механизма объединения счетов НДФЛ и настроек синхронизации с КОРП-системами. Решается это либо ручной корректировкой настройки счета (если не успели наделать проводок), либо программным переносом значений субконто с последующим удалением лишних видов аналитики.

← На главную