В последних обновлениях конфигурации 1С:Бухгалтерия предприятия (начиная с релизов 3.0.167.х) произошли существенные изменения в плане счетов, касающиеся учета НДФЛ. Многие пользователи, особенно те, у кого настроена синхронизация с внешними зарплатными системами уровня КОРП, столкнулись с проблемой: привычные субконто на счете 68.01 сместились, появились битые ссылки («Объект не найден»), или данные «разъехались» по разным аналитикам. Давайте разберем причины этого явления и рассмотрим несколько способов решения проблемы.
Разберем ситуацию подробно. В типовой «Бухгалтерии предприятия» (версия ПРОФ) на счете 68.01 традиционно использовалось одно субконто — Виды платежей в бюджет (фонды). В версии КОРП учет сложнее: там присутствует второе субконто — Регистрация в налоговом органе (для учета по обособленным подразделениям).
Начиная с версии 3.0.167, разработчики 1С провели реструктуризацию: субсчета 68.01.1 и 68.01.2 были упразднены и объединены в единый счет 68.01. При обновлении программа запускает процедуру переноса остатков и оборотов.
Проблема возникает, если ваша база ПРОФ обменивается данными с ЗУП КОРП. В настройках синхронизации (плане обмена) может содержаться информация о структуре аналитики КОРП-версии. Механизм обновления видит эту настройку и ошибочно пытается привести счет 68.01 к виду КОРП, добавляя субконто «Регистрация в налоговом органе».
В результате мы получаем следующую картину:
Рассмотрим способы исправления этой ситуации, от ручных методов до программной обработки данных.
Если вы заметили проблему сразу после обновления и документы еще не перепроводились массово, можно попытаться вернуть настройки плана счетов вручную. Этот метод подходит, если в базе нет реального учета по обособленным подразделениям (что характерно для версии ПРОФ).
Выполним следующие действия:
68.01.После этого необходимо проверить оборотно-сальдовую ведомость. Если видите «Объект не найден» в аналитике, потребуется запустить Тестирование и исправление базы данных (раздел «Администрирование» — «Обслуживание»), выбрав опции проверки ссылочной целостности.
Бывают ситуации, когда после обновления и перепроведения документов данные уже записались в неправильные ячейки субконто (например, на 3-ю позицию вместо 2-й, или на 2-ю вместо 1-й). Простое изменение настройки счета здесь не поможет — нужно физически перенести данные в таблицах регистра бухгалтерии.
Проанализируем пример кода, который позволяет перенести данные с ошибочного третьего субконто на второе (или с любого неправильного на правильное). Этот код следует выполнять в виде внешней обработки или через консоль кода, предварительно сделав резервную копию базы.
Алгоритм действий следующий:
Рассмотрим код обработки:
Запрос = Новый Запрос;
// Выбираем все документы, которые двигали 68.01 за указанный период
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ХозрасчетныйОбороты.Регистратор КАК Докум,
| ХозрасчетныйОбороты.Период КАК Период
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачДата, &КонДата, Регистратор, Счет = &Счет6801, , , , ) КАК ХозрасчетныйОбороты
|
|УПОРЯДОЧИТЬ ПО
| Период";
Запрос.УстановитьПараметр("НачДата", Объект.ДатаНачала); // Укажите ваши даты
Запрос.УстановитьПараметр("КонДата", Объект.ДатаОкончания);
Запрос.УстановитьПараметр("Счет6801", ПланыСчетов.Хозрасчетный.НДФЛ); // Счет 68.01
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Сообщить("Найдено документов к обработке: " + Выборка.Количество());
СчетОбработки = ПланыСчетов.Хозрасчетный.НДФЛ;
Пока Выборка.Следующий() Цикл
// Блокировка для надежности (опционально)
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Хозрасчетный");
ЭлементБлокировки.УстановитьЗначение("Регистратор", Выборка.Докум);
Блокировка.Заблокировать();
Проводки = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
Проводки.Отбор.Регистратор.Установить(Выборка.Докум);
Проводки.Прочитать();
НаборИзменен = Ложь;
// Обходим все проводки документа
Для каждого Запись из Проводки Цикл
// Обработка по Дебету
Если Запись.СчетДт = СчетОбработки Тогда
// Если данные оказались на Субконто3, а Субконто2 пустое - переносим
// ВАЖНО: Адаптируйте условие под вашу ситуацию!
// Например, если данные на Субконто2, а должны быть на Субконто1
Если ЗначениеЗаполнено(Запись.СубконтоДт3) И Не ЗначениеЗаполнено(Запись.СубконтоДт2) Тогда
Запись.СубконтоДт2 = Запись.СубконтоДт3;
Запись.СубконтоДт3 = Неопределено; // Очищаем старое
НаборИзменен = Истина;
КонецЕсли;
КонецЕсли;
// Обработка по Кредиту
Если Запись.СчетКт = СчетОбработки Тогда
Если ЗначениеЗаполнено(Запись.СубконтоКт3) И Не ЗначениеЗаполнено(Запись.СубконтоКт2) Тогда
Запись.СубконтоКт2 = Запись.СубконтоКт3;
Запись.СубконтоКт3 = Неопределено;
НаборИзменен = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если НаборИзменен Тогда
Попытка
Проводки.Записать(Истина); // Записываем с замещением
Сообщить("Обработан документ: " + Выборка.Докум);
Исключение
Сообщить("Ошибка записи документа " + Выборка.Докум + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
Важно: После выполнения такой обработки обязательно проверьте настройки счета в плане счетов. Лишние виды субконто (например, третье, которое мы очистили) нужно удалить из настроек счета в режиме Предприятия, чтобы пользователи в будущем не могли туда ничего записать.
Наиболее надежный способ избежать проблем — соблюдать правильную технологию обновления. Если вы еще не обновились или планируете восстановить копию и повторить процесс:
Администрирование - Обслуживание - Обновление программы - Установленные исправления (патчи) и проверьте наличие исправлений, касающихся НДФЛ или счетов учета.Если у вас база ПРОФ, но настроен обмен с ЗУП КОРП, программа может «думать», что ей необходима аналитика по регистрации в ИФНС. Проверьте настройки синхронизации и функциональности программы.
Если вы видите, что при каждом обновлении ситуация повторяется, имеет смысл перед обновлением проверять план счетов. В некоторых случаях помогает временное приведение субконто к типовому виду вручную перед накатыванием нового релиза, чтобы алгоритмы обновления 1С отработали штатно.
Смещение субконто на счете 68.01 — это результат конфликта нового механизма объединения счетов НДФЛ и настроек синхронизации с КОРП-системами. Решается это либо ручной корректировкой настройки счета (если не успели наделать проводок), либо программным переносом значений субконто с последующим удалением лишних видов аналитики.