Как исправить ошибку «Значение поля "Код дохода" не может быть пустым» в 1С:ЗУП 3.1

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

При работе в программах 1С:Зарплата и Управление Персоналом 3.1 (ЗУП) или 1С:Зарплата и кадры государственного учреждения (ЗКГУ) пользователи часто сталкиваются с критической ошибкой при попытке провести документы перерасчета (например, «Доначисление, перерасчет» или документ «Отпуск» с признаком перерасчета). Текст ошибки гласит: «Запись не верна! Значение поля "Код дохода" не может быть пустым! (Регистр накопления: Учет доходов для исчисления НДФЛ)». Эта проблема блокирует проведение документа и мешает корректному закрытию периода.

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

Почему возникает ошибка: анализируем механику системы

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

  1. Сотруднику был начислен и выплачен отпуск (или зарплата), когда он числился в Подразделении №1.
  2. В середине месяца или в период отпуска происходит Кадровый перевод сотрудника в Подразделение №2.
  3. После перевода возникает необходимость пересчитать прошлый период (например, начислили премию, которая входит в средний заработок, или изменились данные о стаже).

Когда мы создаем документ перерасчета, система пытается сделать две вещи: сторнировать (отменить) старые записи и создать новые. Проблема заключается в том, что регистр накопления УчетДоходовДляИсчисленияНДФЛ требует обязательного заполнения поля КодДохода (например, 2000 — для оплаты труда, 2012 — для отпускных). При наличии кадрового перемещения алгоритм автоматического сторнирования в 1С иногда «теряет» связь с исходным начислением по старому подразделению. В результате в таблицу НДФЛ попадает строка с подразделением, суммами или периодами, но без привязанного кода дохода. Поскольку поле в регистре является обязательным, платформа выдает ошибку проведения.

Способ 1: Ручная корректировка строк сторнирования

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

Разберем алгоритм действий:

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

Как отмечают практикующие специалисты, если вручную удалить лишнюю строку в сторнировании, которая возникла из-за «разрыва» по подразделениям, документ проводится без проблем. Однако при массовых перерасчетах этот метод неэффективен.

Способ 2: Разделение перерасчета на два документа

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

Выполним следующие шаги:

  1. Создадим первый документ «Доначисление, перерасчет», подберем туда сотрудника.
  2. Удалим из табличной части все строки, относящиеся к новому подразделению. Сохраним документ (пока не проводим).
  3. Создадим второй аналогичный документ по тому же сотруднику.
  4. В нем, наоборот, удалим все строки, относящиеся к старому подразделению.
  5. Попробуем провести оба документа по очереди.

Такой подход позволяет программе четко сопоставить доходы и сторно-записи в рамках одного организационного контекста, что зачастую устраняет неопределенность при заполнении регистра УчетДоходовДляИсчисленияНДФЛ.

Способ 3: Использование «Группового изменения реквизитов»

Рассмотрим более продвинутый метод, который помогает, если «Код дохода» не заполняется из-за несоответствия подразделений в цепочке документов. Иногда расчетчики меняют подразделение в Кадровом переводе «задним числом» уже после того, как была начислена зарплата.

Проанализируем ситуацию: программа хочет, чтобы в сторно-строках стояло то подразделение, которое является актуальным на момент расчета в исходном документе. Если в исходном документе «Начисление зарплаты и взносов» стоит Подразделение А, а система при сторнировании в документе перерасчета упорно пытается подставить Подразделение Б, возникает конфликт.

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

  1. Зайдем в раздел АдминистрированиеОбслуживаниеКорректировка данныхГрупповое изменение реквизитов.
  2. Выберем объект Начисление зарплаты и взносов (или Отпуск, в зависимости от того, что пересчитываем).
  3. Настроим отбор по конкретному сотруднику и периоду.
  4. На закладке Начисления найдем реквизит Подразделение и установим там то значение, которое система ожидает увидеть (реальное подразделение, в котором числился сотрудник на тот момент).
  5. После изменения реквизитов в исходном документе, вернемся в документ перерасчета и перезаполним его. Теперь программа увидит правильную связь и сможет корректно подтянуть Код дохода из настроек начисления.

Технические нюансы и проверка настроек начисления

Иногда корень проблемы кроется не в кадровых перемещениях, а в настройках самих видов расчета. Посмотрим на критически важные настройки на вкладке «Налоги, взносы, бухучет» в справочнике Начисления:

  1. Код дохода НДФЛ: Убедимся, что код выбран (например, 2000). Если поле очищено или выбрано некорректное значение, сторно-записи всегда будут вызывать ошибку.
  2. Категория дохода: Для оплаты труда это должна быть «Оплата труда (в т.ч. в натуральной форме)», для отпусков — «Прочие доходы от трудовой деятельности».
  3. Соответствие дат: Проверим Планируемую дату выплаты внизу документа. Если она не заполнена или относится к периоду, в котором код дохода еще не действовал (актуально для законодательных изменений), система может выдать ошибку.

Рассмотрим пример кода, который часто используют разработчики в расширениях для «заплатки» этой ошибки (когда нет времени на поиск причин). Смысл заключается в перехвате события ПередЗаписью регистра накопления и принудительном заполнении кода дохода, если он пустой:


// Пример логики для расширения (обработчик ПередЗаписью регистра)
Для Каждого Движение Из ЭтотОбъект Цикл
    Если Движение.КодДохода.Пустая() Тогда
        // Пытаемся определить код из связанного начисления или ставим дефолтный 2000
        Движение.КодДохода = Справочники.КодыДоходовНДФЛ.НайтиПоКоду("2000");
    КонецЕсли;
КонецЦикла;

Важно: Использование «костылей» через расширение — это крайняя мера. Мы рекомендуем сначала убедиться в отсутствии «нулевых» строк и корректности подразделений в первичных документах.

Итоги и рекомендации

Мы проанализировали проблему пустых кодов дохода в регистре НДФЛ и пришли к выводу, что в большинстве случаев это результат «рассинхрона» кадровых данных и начислений прошлых периодов.

Подведем итог в виде чек-листа для исправления:

  1. Проверьте документ на наличие строк с нулевыми суммами и удалите их.
  2. Убедитесь, что во всех строках начислений и перерасчетов заполнено Подразделение.
  3. Проверьте, чтобы Код дохода был указан в настройках самого начисления.
  4. При массовых ошибках используйте Групповое изменение реквизитов для синхронизации подразделений в исходных документах и документах перерасчета.
  5. Если ничего не помогает, разделите расчет по одному сотруднику на два отдельных документа (по одному на каждое подразделение).

Следуя этим правилам, мы сможем избежать блокировки проведения документов и обеспечим чистоту налогового учета по НДФЛ в базе 1С:ЗУП.

← На главную