Как исправить ошибку дублирования кода НДФЛ 3020 при обновлении конфигурации 1С

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

При обновлении типовых конфигураций на платформе 1С:Предприятие 8.3, таких как Зарплата и управление персоналом 3.1 или Бухгалтерия предприятия 3.0, специалисты часто сталкиваются с критической ошибкой. В процессе выполнения дополнительных процедур обработки данных (обычно на этапе 26% или около того) система выдает сообщение: «Уже существует вид дохода НДФЛ с таким значением поля Код (3020)». Эта ситуация блокирует дальнейшую работу и не позволяет завершить обновление легальными методами через пользовательский интерфейс без предварительной подготовки.

В данной статье мы подробно проанализируем причины возникновения этой коллизии и разберем пошаговые алгоритмы её устранения, используя как стандартные инструменты программы, так и административные методы исправления данных.

Выясним причину возникновения ошибки

Для начала разберем, почему возникает этот конфликт. Справочник ВидыДоходовНДФЛ содержит перечень кодов доходов, утвержденных налоговым законодательством. Код 3020 соответствует доходам в виде выигрышей и призов, получаемых в проводимых конкурсах, играх и других мероприятиях в целях рекламы товаров, работ и услуг.

Проблема возникает по одной из следующих причин:

  1. Ручной ввод: Ранее бухгалтер или технический специалист создал элемент справочника с кодом 3020 вручную, так как его не было в старой версии конфигурации.
  2. Перенос данных: При миграции из старых версий (например, с 1С 7.7 или ЗУП 2.5) коды могли перенестись как обычные элементы, а не как предопределенные системные данные.
  3. Изменение законодательства: В новом релизе 1С разработчики добавили код 3020 в список предопределенных элементов. При обновлении программа пытается создать этот системный элемент, но обнаруживает, что обычный элемент с таким кодом уже существует. Поскольку в справочнике установлена проверка на уникальность поля Код, процедура прерывается ошибкой.

Рассмотрим подробнее способы решения этой задачи.

Способ 1. Ручное изменение кода существующего элемента

Самый простой и логичный путь — временно переименовать конфликтующий код, чтобы дать системе возможность создать новый системный элемент. Выполним следующие действия:

  1. Откроем программу в режиме «1С:Предприятие».
  2. Перейдем в справочник ВидыДоходовНДФЛ. В разных конфигурациях путь может отличаться, например: Налоги и взносы — Виды доходов НДФЛ.
  3. Найдем в списке элемент, у которого в колонке Код указано значение 3020.
  4. Попробуем открыть его и изменить значение кода на любое другое свободное, например 30201 или УДАЛИТЬ_3020.

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

Способ 2. Использование обработки «Групповое изменение реквизитов»

Если прямой доступ к редактированию кода закрыт, воспользуемся мощным административным инструментом. Проанализируем последовательность шагов:

  1. Зайдем в раздел Администрирование — Обслуживание — Корректировка данных — Групповое изменение реквизитов.
  2. В поле «Выбирать элементы типа» выберем Виды доходов НДФЛ.
  3. Нажмем на ссылку «Все элементы» и добавим условие отбора: Код Равно 3020.
  4. В нижней части формы нажмем кнопку Дополнительные параметры.
  5. В появившемся окне установим флажки: «Показывать служебные реквизиты» и «Редактировать выбранные поля». Это критически важно для получения доступа к полю Код.
  6. В списке реквизитов найдем строку Код и в колонке «Новое значение» введем 03020 или любое другое уникальное значение.
  7. Нажмем кнопку «Изменить реквизиты».

После этого запустим процедуру обновления заново. Система увидит, что код 3020 свободен, и успешно создаст новый предопределенный элемент.

Способ 3. Работа с помеченными на удаление объектами

Иногда визуально в справочнике кода 3020 нет, но ошибка всё равно возникает. Это происходит потому, что дубль может быть помечен на удаление. Проанализируем ситуацию:

  1. В списке справочника Виды доходов НДФЛ нажмем Еще — Настроить список.
  2. На вкладке «Отбор» проверим, не установлены ли фильтры, скрывающие удаленные объекты.
  3. Если помеченный объект найден, его нужно либо окончательно удалить через Администрирование — Удаление помеченных объектов, либо изменить ему код, как описано в способах выше.

Способ 4. Финализация обновления и поиск дублей

После того как мы изменили код и обновление успешно завершилось (прошло 100% выполнения обработок), в системе окажется два элемента, относящихся к одному и тому же налогу. Один — наш переименованный старый элемент, второй — новый системный (предопределенный).

Чтобы исключить путаницу в расчетах и отчетности, выполним слияние этих элементов:

  1. Рассмотрим использование обработки «Поиск и замена дублей» (Раздел Администрирование — Обслуживание).
  2. Выберем область поиска: Виды доходов НДФЛ.
  3. Укажем критерий сравнения по наименованию или другим параметрам.
  4. Программа найдет два элемента. Важно выбрать правильный оригинал — это будет тот элемент, у которого в списке есть специальный значок (желтый шар), обозначающий предопределенный элемент.
  5. Нажмем «Объединить». Программа перенесет все ссылки из старых документов на новый системный код 3020.

Технические нюансы и меры предосторожности

Проанализируем программную сторону вопроса. При написании собственных обработок для исправления подобных ошибок программисты могут использовать следующий код для прямого изменения реквизитов объекта:


ОбъектСправочника = Справочники.ВидыДоходовНДФЛ.НайтиПоКоду("3020").ПолучитьОбъект();
Если ОбъектСправочника <> Неопределено Тогда
    ОбъектСправочника.Код = "3020_СТАРЫЙ";
    ОбъектСправочника.ОбменДанными.Загрузка = Истина; // Отключаем проверки
    ОбъектСправочника.Записать();
    Сообщить("Код успешно изменен для элемента: " + ОбъектСправочника.Наименование);
КонецЕсли;

Использование свойства ОбменДанными.Загрузка = Истина позволяет обойти прикладные проверки конфигурации, которые могут блокировать изменение кода в обычном режиме.

Очистка кэша после исправления

Если после всех манипуляций ошибка сохраняется, вероятно, виноват кэш конфигурации, который «запомнил» состояние справочника до изменений. Выполним следующие действия:

Также рекомендуется выполнить Тестирование и исправление базы через Конфигуратор. Выберем пункты:

  1. Реиндексация таблиц информационной базы.
  2. Проверка логической целостности.
  3. Пересчет итогов.

Это гарантирует, что внутренние индексы таблиц будут приведены в соответствие с фактическими данными в справочниках.

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

Таким образом, мы разобрали комплексный подход к решению проблемы с кодом НДФЛ 3020. Своевременное выявление и устранение дублирующихся кодов до завершения фазы обновления позволяет избежать ошибок в расчете налога по ставке 35% и гарантирует корректное формирование регламентированной отчетности 6-НДФЛ и справок о доходах.

← На главную