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