При работе в программе 1С:Бухгалтерия предприятия 3.0 после очередного обновления пользователи часто сталкиваются с неприятной ситуацией: документ Начисление зарплаты отказывается проводиться. Система выдает диагностическое сообщение: «Запись не верна! Значение поля Сотрудник не может быть пустым (Регистр накопления: Взаиморасчеты с сотрудниками)». Характерной особенностью этой ошибки является то, что если из документа удалить расчет НДФЛ, он проводится без проблем. Это прямо указывает на то, что корень проблемы кроется в механизмах сопоставления данных о налогах и конкретных сотрудниках.
Рассмотрим подробно причины возникновения этой ошибки и разберем по шагам все способы ее решения, от простых пользовательских настроек до технических манипуляций с базой данных.
Для начала проанализируем ситуацию. Регистр накопления ВзаиморасчетыССотрудниками является ключевым для учета задолженности организации перед персоналом. При проведении документа начисления программа формирует движения по этому регистру. Ошибка возникает в момент, когда алгоритм формирования проводок по НДФЛ пытается записать строку удержания, но не находит связи с объектом Справочник.Сотрудники.
Почему это происходит? В последних релизах БП 3.0 архитектура учета НДФЛ тесно переплетена со статусами налогоплательщиков и историей кадровых изменений. Если в одном из этих узлов происходит сбой или появляются некорректные данные, запрос к базе данных возвращает NULL (пустое значение) в поле сотрудника, что и приводит к отказу в записи регистра.
Как показывает практика, это самая частая причина. Если в истории статуса налогоплательщика есть дубли или записи с пустой датой, система «теряется» при расчете. Выясним причину, проверив карточку сотрудника:
После этого попробуем снова провести документ. Если сотрудников много, имеет смысл проверить регистр сведений СтатусыНалогоплательщиковПоНДФЛ напрямую через функции технического специалиста.
Иногда ошибка вызвана тем, что в базе существуют два физических лица с одинаковыми ФИО и ИНН. Документ начисления может быть оформлен на одного «Сотрудника», который связан с «Физлицом №1», а данные по налогам или вычетам по какой-то причине ссылаются на «Физлицо №2».
Рассмотрим, как это исправить:
Физические лица.Важно: После объединения дублей обязательно нужно перевыбрать сотрудника в документе начисления зарплаты, чтобы обновить внутренние идентификаторы.
Нередко проблема является следствием программной ошибки в коде конкретного релиза конфигурации. Фирма «1С» оперативно выпускает исправления (патчи) для таких случаев. Проверим их наличие:
НДФЛ, Взаиморасчеты или Ошибка проведения начисления зарплаты. Например, патчи вида EF_6000XXXX.Бывают ситуации, когда данные в табличной части документа «зависают» в некорректном состоянии после обновления конфигурации. Попробуем обновить их вручную:
Начисление зарплаты.Если в вашей базе установлены расширения (например, для обмена с банками или кастомизации печатных форм), они могут конфликтовать с новым кодом проведения документа. Проанализируем эту вероятность:
Если вышеуказанные способы не помогли, необходимо посмотреть на формирование движений в коде. Ошибка часто возникает в общем модуле, где формируется временная таблица для регистра ВзаиморасчетыССотрудниками. Обратите внимание на следующий фрагмент логики:
// Примерный участок кода, где может возникать проблема
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТаблицаНДФЛ.Сотрудник КАК Сотрудник,
| ТаблицаНДФЛ.Сумма КАК Сумма
|ИЗ
| ВременнаяТаблицаДокумента КАК ТаблицаНДФЛ
|ГДЕ
| ТаблицаНДФЛ.Сотрудник ЕСТЬ NULL";
// Если такой запрос возвращает строки, проведение прервется с ошибкой
Проверьте, что в процедурах ОбработкаПроведения или в подписках на события не происходит затирание поля Сотрудник. Также стоит проверить регистр ТекущиеКадрыСотрудников. Если там нет записи о сотруднике на дату документа (например, из-за неправильной даты приема или увольнения), типовой механизм не сможет определить ссылку на объект Сотрудники при записи НДФЛ.
В завершение отметим, что если ошибка массовая и воспроизводится даже на новой организации (как упоминалось в некоторых обсуждениях), это верный признак необходимости обновления платформы до актуальной версии или ожидания следующего минорного релиза конфигурации, где баг будет исправлен на стороне разработчика 1С.