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