Как исправить ошибку «Поле объекта не обнаружено (ИнициалыИмени)» при синхронизации ЗУП 3.1 и БП 3.0

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

При выполнении типовой синхронизации между конфигурациями «Зарплата и управление персоналом» (ЗУП 3.1) и «Бухгалтерия предприятия» (БП 3.0) пользователи часто сталкиваются с ошибкой: Поле объекта не обнаружено (ИнициалыИмени). Чаще всего это происходит в ситуации, когда ЗУП была обновлена до актуального релиза, а Бухгалтерия осталась на старой версии. Разберем подробно, почему возникает эта проблема и какими методами ее можно решить.

Выясним причину возникновения ошибки

Проанализируем ситуацию: синхронизация данных в современных конфигурациях 1С строится на базе технологии EnterpriseData. Это универсальный формат обмена, который имеет свои версии (например, 1.13, 1.15, 1.16). Когда разработчики выпускают обновление ЗУП, они часто добавляют поддержку новых версий формата и вносят изменения в структуру данных для соответствия законодательству.

В последних релизах ЗУП 3.1 (начиная с веток 3.1.27 и 3.1.29) произошел рефакторинг работы с персональными данными. Поле ИнициалыИмени, которое раньше использовалось в правилах обмена или программном коде менеджера обмена, было заменено или переименовано в рамках унификации. Если мы обновляем только одну базу (ЗУП), она начинает выгружать данные в новом формате или использовать обновленный программный интерфейс. Устаревшая «Бухгалтерия», принимая эти данные, пытается обратиться к полю ИнициалыИмени, которого в новой структуре объекта (или в самом XML-файле) уже нет. В результате выполнение программного кода прерывается с критической ошибкой.

Способ 1. Обновление конфигурации «Бухгалтерия предприятия» (Рекомендуемый)

Рассмотрим самый правильный и безопасный путь. Разработчики фирмы «1С» проектируют и тестируют обмены для парных релизов конфигураций. Это означает, что определенной версии ЗУП соответствует определенная минимальная версия БП.

Почему это важно:

  1. Совместимость метаданных: Обновление БП обновит и правила обмена (обработку МенеджерОбменаЧерезУниверсальныйФормат), которые будут знать о новых полях.
  2. Корректность учета: Помимо технической ошибки с инициалами, могут возникнуть логические ошибки в учете НДФЛ и страховых взносов, так как законодательство меняется динамично.

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

Способ 2. Понижение версии формата EnterpriseData

Если мы не можем обновить БП, попробуем заставить ЗУП «общаться» на старом языке. В настройках синхронизации данных есть возможность указать версию формата обмена.

Разберем по шагам:

  1. Перейдем в раздел Администрирование — Синхронизация данных.
  2. Откроем Настройки синхронизации данных.
  3. Выберем нашу настройку с БП и нажмем Параметры подключения.
  4. Найдем пункт Версия формата (может быть скрыт в дополнительных настройках или доступен через изменение состава отправляемых данных).
  5. Попробуем установить версию ниже текущей (например, вместо 1.16 выбрать 1.13).

Важно: Этот метод помогает не всегда, так как программный код модуля МенеджерОбменаЧерезУниверсальныйФормат в обновленной ЗУП все равно может обращаться к новым структурам данных при формировании выгрузки.

Способ 3. Использование расширения конфигурации (Техническое решение)

Для программистов существует вариант «обмануть» систему, создав небольшое расширение в базе, где возникает ошибка (в данном случае в БП). Мы можем добавить недостающее свойство или перехватить обращение к нему.

Рассмотрим пример логики, которую можно реализовать в расширении для модуля менеджера обмена:


&Вместо("ПрочитатьОбъект")
Функция Моя_ПрочитатьОбъект(ЧтениеXML, СтруктураОбъекта)
    // Логика перехвата чтения объекта
    // Если в структуре отсутствует поле ИнициалыИмени, 
    // добавляем его программно, чтобы избежать ошибки "Поле объекта не обнаружено"
    Попытка
        Возврат ПродолжитьВызов(ЧтениеXML, СтруктураОбъекта);
    Исключение
        ИнформацияОбОшибке = ИнформацияОбОшибке();
        Если СтрНайти(ИнформацияОбОшибке.Описание, "ИнициалыИмени") > 0 Тогда
            // Заглушка: добавляем поле в структуру, если его там нет
            СтруктураОбъекта.Вставить("ИнициалыИмени", "");
            Возврат ПродолжитьВызов(ЧтениеXML, СтруктураОбъекта);
        Иначе
            ВызватьИсключение;
        КонецЕсли;
    КонецПопытки;
КонецФункции

Такой подход позволит коду «проскочить» проблемное место. Однако помните, что это временный «костыль». После обновления БП расширение необходимо будет удалить.

Способ 4. Проверка и установка патчей (Исправлений)

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

Проанализируем список установленных исправлений:

  1. Зайдем в Администрирование — Обслуживание.
  2. Перейдем по ссылке Обновление программы — Установленные исправления (патчи).
  3. Нажмем Подбор поставляемых исправлений.
  4. Если в списке есть патч с описанием, содержащим "ошибка синхронизации" или "ИнициалыИмени", устанавливаем его.

Способ 5. Ручная правка правил или менеджера обмена

Если вы опытный разработчик и использование расширений невозможно, можно прибегнуть к редактированию модуля МенеджерОбменаЧерезУниверсальныйФормат.

Разберем, на что обратить внимание:

Пример безопасного кода:


Если СтруктураДанных.Свойство("ИнициалыИмени") Тогда
    Инициалы = СтруктураДанных.ИнициалыИмени;
ИначеЕсли СтруктураДанных.Свойство("Инициалы") Тогда
    Инициалы = СтруктураДанных.Инициалы;
Иначе
    Инициалы = ""; // Значение по умолчанию
КонецЕсли;

Подведем итоги

Ситуация, когда одна база обновлена, а вторая нет — это всегда риск для синхронизации. Ошибка Поле объекта не обнаружено (ИнициалыИмени) — классический симптом «разъезда» версий.

Краткий алгоритм действий:

  1. Попробуйте обновить БП до актуального релиза — это снимет 99% проблем.
  2. Проверьте наличие официальных патчей в обеих базах.
  3. Если обновление невозможно, используйте расширение-заглушку для подавления ошибки.
  4. После того как синхронизация пройдет, обязательно запланируйте полноценное обновление всех баз, участвующих в обмене.

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

← На главную