Почему при обмене ЗУП 3.1 и БП 3.0 возникает ошибка «Значение поля "Физическое лицо" не может быть пустым»?

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

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

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

Анализ ошибки и ее контекст

Мы видим, что ошибка ссылается на Регистр сведений: Текущие кадровые данные сотрудников и возникает в обработчике ПередЗаписью модуля ОбщийМодуль.УчетЗарплаты.Модуль в 1С:Бухгалтерии. Это означает, что в момент попытки записи или обновления кадровых данных сотрудника в регистр, система обнаруживает, что для одной из записей поле «Физическое лицо» не заполнено, что является недопустимым с точки зрения бизнес-логики программы. Иногда в сообщении об ошибке фигурирует идентификатор типа "F000000001", что дает нам дополнительную подсказку.

Для понимания сути проблемы, давайте учтем важные детали, описанные в исходной ситуации:

  1. Актуальность версий: Используются последние версии ЗУП 3.1 и БП 3.0. Это снижает вероятность проблем, связанных с несовместимостью версий, но не исключает баги.
  2. Способ обмена: Пробовались как прямой обмен, так и обмен через файл, а также использовались настройки "универсальный формат" и "правила обмена". Результат при этом был одинаковый, что указывает на проблему в самих данных или логике их обработки, а не в транспортном механизме.
  3. Инициатор обмена: Настройки инициировались из ЗУП (выгрузка) и завершались в БП (загрузка и окончание настройки). Ошибка возникает именно в БП при записи настроек.

Основные причины возникновения ошибки «Значение поля "Физическое лицо" не может быть пустым»

Мы выясним, какие основные причины могут приводить к описанной ошибке:

  1. Некорректные или "битые" записи сотрудников/физических лиц.

    Очень часто такая ошибка возникает после проведения операций "Тестирование и исправление информационной базы" с параметром "Восстановление битых ссылок". В результате могут создаваться "фантомные" записи, такие как "F000000001" или другие служебные идентификаторы, которые являются сотрудниками, но не привязаны к конкретному физическому лицу. Программа пытается передать или обработать данные по такому "сотруднику", но при записи в регистр Текущие кадровые данные сотрудников в БП обнаруживает, что поле "Физическое лицо" пусто.

    Мы должны помнить, что в программах 1С используются два основных справочника для описания людей: Физические лица и Сотрудники. Справочник Физические лица содержит уникальную информацию о человеке (ФИО, дата рождения, ИНН, СНИЛС), которая должна быть представлена только одной записью за всю его жизнь. Справочник Сотрудники связывает конкретное физическое лицо с организацией и должностью. Одно и то же физическое лицо может быть сотрудником несколько раз (например, при повторном приеме на работу), но всегда должно быть связано с записью из справочника Физические лица.

  2. Отсутствие связи сотрудника с физическим лицом в ЗУП.

    Иногда, по разным причинам (ошибки при вводе данных, некорректные загрузки, ручные исправления), в справочнике Сотрудники в ЗУП у одного или нескольких сотрудников может быть не заполнено поле "Физическое лицо". При выгрузке данных такой сотрудник будет передан без необходимой информации, и БП не сможет его корректно обработать, что приведет к ошибке.

  3. Дублирование физических лиц или сотрудников.

    Наличие дублирующихся записей для одного и того же физического лица или сотрудника в одной или обеих базах может привести к путанице при обмене. Система может пытаться связать одну запись с несколькими или выбрать некорректную, у которой не заполнено поле "Физическое лицо".

  4. Неверный формат или правила обмена.

    Хотя пользователь уже пробовал разные форматы, важно отметить, что для обмена ЗУП 3.1 и БП 3.0 рекомендуется использовать формат Enterprise Data, который настраивается через "правила обмена". Использование "универсального формата" в некоторых случаях может приводить к проблемам, особенно с переносом специфических данных (например, исполнительных листов).

  5. Ошибки целостности базы данных.

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

  6. Даты запрета загрузки данных в БП.

    В конфигурации БП 3.0 существуют настройки, позволяющие установить даты запрета загрузки данных (Администрирование - Синхронизация данных - Даты запрета загрузки). Если период обмена попадает под эти даты, документы и данные могут не загружаться или вызывать ошибки при попытке записи.

  7. Прочие настройки учета зарплаты в БП.

    Для корректного отражения зарплаты и кадровых данных в БП необходимо, чтобы были правильно настроены соответствующие константы и справочники. Например, важно проверить заполнение счетов затрат для всех способов отражения зарплаты.

Пошаговая диагностика и устранение проблемы

Мы предлагаем комплексный подход к диагностике и устранению данной ошибки. Следуем по шагам:

  1. Шаг 1: Проверка актуальности версий и типа обмена.

    Прежде всего, мы убеждаемся, что обе конфигурации – ЗУП 3.1 и БП 3.0 – обновлены до последних актуальных релизов. Затем, если вы используете "универсальный формат", мы рекомендуем перейти на обмен через "правила обмена" в формате Enterprise Data. Для этого может потребоваться удалить существующую настройку синхронизации в обеих базах и настроить ее заново, выбрав соответствующий вариант.

  2. Шаг 2: Поиск некорректных записей "Сотрудников" или "Физических лиц" в базах.

    Мы начнем поиск с базы-приемника, то есть 1С:Бухгалтерии, поскольку именно там возникает ошибка при записи. Обратим внимание на идентификатор "F000000001", если он присутствует в сообщении об ошибке. Мы будем искать записи, которые могли быть созданы некорректно.

    В режиме "Предприятие" попробуйте найти сотрудника или физическое лицо с таким наименованием. Если не находим, то переходим в режим "Конфигуратор". В Конфигураторе мы можем выполнить запрос или просмотреть данные напрямую в справочниках Сотрудники и Физические лица.

    Пример запроса для поиска подозрительных записей в БП (через Универсальный отчет или консоль запросов):

    
    ВЫБРАТЬ
        Сотрудники.Ссылка,
        Сотрудники.Наименование,
        Сотрудники.ФизическоеЛицо
    ИЗ
        Справочник.Сотрудники КАК Сотрудники
    ГДЕ
        Сотрудники.ПометкаУдаления = ЛОЖЬ
        ИЛИ Сотрудники.Наименование ПОДОБНО "%F000000001%"
    

    Обратите внимание на записи, где поле ФизическоеЛицо пустое или ссылается на несуществующий объект. Также просмотрите содержимое регистра сведений Текущие кадровые данные сотрудников в Конфигураторе, чтобы увидеть, какие записи там присутствуют, хотя чаще всего проблемная строка создается в момент обмена.

    Затем мы переходим в базу ЗУП и проводим аналогичную проверку. Вероятнее всего, источник проблемы находится именно здесь. Мы проверяем справочник Сотрудники на предмет наличия сотрудников, у которых не заполнено поле "Физическое лицо".

    Пример запроса для поиска сотрудников без физических лиц в ЗУП:

    
    ВЫБРАТЬ
        Сотрудники.Ссылка,
        Сотрудники.Наименование,
        Сотрудники.ФизическоеЛицо
    ИЗ
        Справочник.Сотрудники КАК Сотрудники
    ГДЕ
        Сотрудники.ФизическоеЛицо ЕСТЬ NULL
        ИЛИ Сотрудники.ФизическоеЛицо ССЫЛКА ЕСТЬ NULL
    

    Если мы находим такие записи, необходимо:

    • Если запись "левая" (например, "F000000001") и не должна существовать, мы ее удаляем.
    • Если это реальный сотрудник, но у него не заполнено физическое лицо, мы должны создать или привязать существующее физическое лицо к этому сотруднику.
  3. Шаг 3: Проверка на дублирование физических лиц и сотрудников.

    Мы всегда делаем резервную копию каждой базы перед началом работы с дублями! Затем используем стандартную обработку "Поиск и удаление дублей", которую можно найти в разделе Администрирование - Обслуживание - Поиск и удаление дублей в обеих базах. Мы ищем дубли как по справочнику Физические лица, так и по справочнику Сотрудники. При поиске дублей для физических лиц, мы можем установить критерий поиска "Совпадает" по ФИО, дате рождения, ИНН, СНИЛС, чтобы максимально точно найти одинаковых людей. После обнаружения дублей, объединяем или удаляем их, оставляя только корректные записи.

  4. Шаг 4: Проверка настроек учета зарплаты в БП.

    Мы должны убедиться, что в БП корректно настроены параметры учета зарплаты. Перейдите в раздел Зарплата и кадры - Настройки зарплаты. Проверьте следующие моменты:

    • Убедитесь, что для всех используемых способов отражения зарплаты в учете заполнены счета затрат.
    • Проверьте константы, связанные с использованием кадрового учета и учета зарплаты. Возможно, временно установить константу ИспользоватьКадровыйУчет в Истина, а затем обратно в Ложь, если учет ведется во внешней программе, может помочь инициализировать необходимые данные.
  5. Шаг 5: Проверка дат запрета загрузки данных в БП.

    В БП мы переходим в Администрирование - Синхронизация данных. Мы проверяем раздел Даты запрета загрузки. Если там установлены даты, перекрывающие период, за который производится обмен, это может быть причиной ошибки. Мы временно снимаем или корректируем эти даты, а после успешного обмена можем вернуть их на место.

  6. Шаг 6: Тестирование и исправление информационных баз.

    Несмотря на то, что это может быть источником проблемы "F000000001", комплексное тестирование и исправление может также помочь устранить другие ошибки целостности данных. Мы запускаем "Тестирование и исправление" из Конфигуратора для обеих баз. Мы выбираем все возможные проверки, но при этом для "Восстановления битых ссылок" необходимо быть особенно осторожными и желательно выполнить его на копии, контролируя результат.

  7. Шаг 7: Отладка (для продвинутых пользователей).

    Если все предыдущие шаги не привели к решению, мы переходим к более глубокой диагностике. Так как ошибка возникает на этапе записи настроек обмена, мы можем использовать отладчик. Если отладка на сервере отключена (как в нашем случае), мы создаем копию базы в локальном окружении или на тестовом сервере, где отладка разрешена. Мы ставим точку останова в модуле ОбщийМодуль.УчетЗарплаты.Модуль на строке, указанной в ошибке (в данном случае, 7130 и 7550, а также в ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.МодульОбъекта(20)) и анализируем значения переменных, чтобы определить, какая именно запись вызывает ошибку и с какими данными. Особое внимание обращаем на объект, который пытается записаться в регистр Текущие кадровые данные сотрудников.

Альтернативные методы обмена

В крайнем случае, если типовой обмен вызывает постоянные и трудноразрешимые проблемы, мы можем рассмотреть использование внешних обработок для выгрузки и загрузки данных. Существуют сторонние разработки и примеры на различных ИТ-ресурсах, которые позволяют реализовать выгрузку, например, ведомостей на зарплату или отражения зарплаты в бухучете с более гибкими правилами. Однако, это является крайней мерой, поскольку требует дополнительных трудозатрат на разработку и поддержку.

Мы надеемся, что, последовательно пройдя по всем предложенным шагам, вы сможете успешно диагностировать и устранить ошибку «Значение поля "Физическое лицо" не может быть пустым» при обмене данными между 1С:ЗУП 3.1 и 1С:БП 3.0.

← На главную