При работе в программе «1С:Зарплата и управление персоналом» (редакция 3.1) бухгалтеры и расчетчики иногда сталкиваются с неприятной ошибкой при проведении документа Отпуск. Система выдает системное сообщение: «Запись не верна! Значение поля "Физическое лицо" не может быть пустым! (Регистр накопления: Взаиморасчеты по займам сотрудникам; Номер строки: 1)». Данная ошибка полностью блокирует проведение документа и делает невозможным начисление отпускных.
В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем, почему популярное на форумах решение через «Конфигуратор» является крайне опасным, и рассмотрим три методически верных и безопасных способа решения этой задачи без изменения метаданных программы.
Для того чтобы понять природу этой ошибки, давайте проанализируем внутреннюю архитектуру решений 1С для расчета заработной платы. Ошибка возникает в тот момент, когда в документе Отпуск на вкладке «Прочие удержания» пользователь пытается вручную добавить плановое удержание, связанное с договором займа (например, погашение основного долга или процентов).
Регистр накопления ВзаиморасчетыПоЗаймамСотрудникам является обязательным для учета всех движений по выданным сотрудникам займам. У этого регистра есть ключевые измерения, среди которых ФизическоеЛицо и ДоговорЗайма. Для этих измерений в структуре конфигурации установлен признак «Запрет пустых значений». Это логично, так как заем не может существовать «в воздухе» — он всегда привязан к конкретному человеку и договору.
В типовой методологии 1С автоматический расчет удержаний по займам, расчет процентов и материальной выгоды должен происходить строго один раз в месяц — в итоговом документе НачислениеЗарплатыИВзносов. Межрасчетные документы (такие как Отпуск, БольничныйЛист, Командировка) технически не предназначены для проведения расчетов по договорам займов.
Когда мы принудительно добавляем удержание по займу в документ Отпуск, алгоритм проведения документа пытается сформировать движения по регистру ВзаиморасчетыПоЗаймамСотрудникам. Однако программный код проведения отпуска просто «не умеет» корректно считывать и передавать в этот регистр необходимые аналитические данные (физическое лицо и договор). В результате платформа пытается записать пустую строку в обязательное поле, срабатывает внутренняя проверка СУБД, и документ блокируется.
На уровне платформы этот механизм проверки можно представить следующим упрощенным кодом:
// Пример проверки заполнения обязательных измерений в платформе 1С
Для Каждого СтрокаДвижения Из НаборЗаписейРегистра Цикл
Если Не ЗначениеЗаполнено(СтрокаДвижения.ФизическоеЛицо) Тогда
Отказ = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Запись не верна! Значение поля ""Физическое лицо"" не может быть пустым!";
Сообщение.Сообщить();
КонецЕсли;
КонецЦикла;
Так как документ Отпуск не передает данные о физическом лице в этот конкретный регистр при проведении ручных дополнительных удержаний, проведение прерывается с ошибкой.
На некоторых технических форумах (как показано в обсуждении выше) администраторы и программисты предлагают «быстрое» решение проблемы: зайти в «Конфигуратор», найти регистр накопления ВзаиморасчетыПоЗаймамСотрудникам, открыть свойства измерения ФизическоеЛицо и снять флажок «Проверка заполнения / Обязательное заполнение».
Мы настоятельно не рекомендуем использовать этот метод! Вот к каким критическим последствиям в учете это приведет:
Ниже мы разберем три методически верных способа, которые позволят удержать платеж по займу при выплате отпускных без поломки программы.
Проанализируем ситуацию: бухгалтер хочет удержать платеж по займу именно из отпускных, так как сотрудник уходит в длительный отпуск, и в конце месяца у него просто не будет других начислений для удержания всей суммы. Рассмотрим, как это сделать правильно.
Это самый простой, быстрый и абсолютно безопасный способ, который полностью сохраняет автоматический расчет и не нарушает логику программы.
Разберем этот вариант по шагам:
Отпуск в штатном режиме. Важно: не добавляем никаких ручных удержаний по займам на вкладку «Прочие удержания»! Документ успешно проводится без ошибок.ВедомостьВБанк или ВедомостьВКассу.-15 000 рублей).НачислениеЗарплатыИВзносов программа автоматически рассчитает удержание по займу на соответствующей вкладке. Это удержание сделает правильные записи в регистр ВзаиморасчетыПоЗаймамСотрудникам с указанием физлица и договора. При этом при выплате окончательной зарплаты в конце месяца взаиморасчеты автоматически «схлопнутся» без образования задолженности.Если отпуск начинается в середине или конце месяца, мы можем использовать встроенный механизм расчета зарплаты непосредственно внутри документа Отпуск.
Проанализируем этот алгоритм:
Отпуск.Отпуск.Если сотрудник согласен внести платеж по займу самостоятельно (например, наличными в кассу организации или прямым переводом на расчетный счет), мы можем полностью исключить удержание из заработной платы.
Выполняем следующие действия:
Отпуск.ПогашениеЗаймаСотрудником.ВзаиморасчетыПоЗаймамСотрудникам, полностью закрывая задолженность за этот месяц.Используя один из этих трех методов, мы гарантируем правильность ведения учета в 1С:ЗУП 3.1, избегаем ошибок при формировании регламентированной отчетности по НДФЛ и сохраняем базу данных в идеальном состоянии для последующих обновлений.