Почему при обмене из ЗУП в Бухгалтерию не создаются новые способы отражения зарплаты?

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

При переносе данных из конфигурации 1С:Зарплата и управление персоналом (ЗУП) в 1С:Бухгалтерию предприятия (БП) пользователи часто сталкиваются с ситуацией, когда в документе Отражение зарплаты в бухучете вместо новых способов отражения появляется надпись "Объект не найден". При этом в XML-файле выгрузки данные присутствуют, а поиск по наименованию (если создать элемент вручную) работает корректно. Рассмотрим подробно, почему система отказывается автоматически создавать новые элементы справочника СпособыОтраженияЗарплатыВБухУчете и как это исправить.

Проверка базовых настроек в Конвертации данных 2.0

Первым делом проанализируем настройки Правил Конвертации Объектов (ПКО) в конфигурации "Конвертация данных 2.0". Для этого загрузим файл CorrespondentExchangeRules (правила загрузки) и найдем ПКО для справочника СпособыОтраженияЗарплатыВБухУчете.

Необходимо убедиться, что установлены следующие флаги:

  1. Искать объект приемника по внутреннему идентификатору объекта источника — это позволяет системе сопоставлять объекты по GUID.
  2. Продолжать поиск по полям поиска, если по идентификатору объект приемник не найден — важная опция, если GUID по каким-то причинам не совпали.

Важный момент: Проверьте состояние флага "Не создавать новый объект, если не найден". Если эта галочка установлена, система найдет ссылку в XML, не обнаружит её в базе-приемнике и просто проигнорирует создание, оставив битую ссылку ("Объект не найден"). Выясним, почему этот флаг может быть критичен: в типовых обменах разработчики часто намеренно ограничивают создание способов отражения, чтобы бухгалтер сначала настроил счета учета в БП, а уже потом привязывал их к зарплате.

Анализ программных обработчиков в правилах

Если визуальные флаги настроены верно, но объект все равно не создается, проанализируем программный код в самих правилах. Перейдем в ПКО справочника и проверим события ПередЗагрузкой и ПриЗагрузке. Разработчики типовых решений часто вставляют код, блокирующий запись:


// Пример возможной блокировки в обработчике "ПередЗагрузкой"
Если ОбъектМодифицирован = Ложь И ЭтоНовый Тогда
    // Если объект не найден и система пытается его создать
    // разработчик может принудительно установить Отказ
    Отказ = Истина;
КонецЕсли;

Также стоит обратить внимание на параметр ТолькоПолучитьУзелСвойств. Если в коде обработчика встречается установка этого параметра в значение Истина, то система прочитает данные из файла, но не инициирует создание нового элемента в базе данных.

Проблема "битых" ссылок в регистре соответствий

Рассмотрим ситуацию, когда поиск по идентификатору технически "срабатывает", но объект в интерфейсе не виден. В 1С при обмене данными активно используется регистр сведений Соответствия объектов информационных баз. Выясним, как это работает:

При загрузке система первым делом заглядывает в этот регистр. Если там уже есть запись, сопоставляющая GUID из ЗУП с каким-то внутренним ID в БП, система берет эту ссылку. Если ранее объект был удален непосредственно из справочника (через "Удаление помеченных объектов"), но запись в регистре соответствий осталась, система попытается подставить в документ пустую, "битую" ссылку. В итоге мы видим "Объект не найден".

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

Специфика обмена через формат EnterpriseData

Если ваш обмен настроен через современный механизм (универсальный формат EnterpriseData), то правила из "Конвертации данных 2.0" могут вообще не использоваться. В этом случае логика создания объектов зашита в модули конфигурации или в расширения.

В современных версиях БП 3.0 часто реализована логика "ручного сопоставления". Система специально не создает новые способы отражения, так как они требуют обязательной аналитики (счет затрат, субконто). Посмотрим на Панель мониторинга синхронизации данных. Если там висят несопоставленные объекты, их нужно сопоставить вручную, и тогда "Объект не найден" исчезнет после следующей синхронизации.

Методика отладки процесса загрузки

Когда теоретический анализ не помогает, перейдем к практике отладки. Чтобы понять, в какой момент система принимает решение не записывать объект, нам нужно спозиционироваться в коде загрузки.

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

  1. Если используется Универсальный обмен данными в формате XML, откроем модуль объекта этой обработки и найдем процедуру ЗагрузитьОбъект().
  2. Внутри этой процедуры нас интересует вызов функции ПоискОбъектаПоСвойствам(). Проанализируем значение переменной ОбъектНайден.
  3. Если ОбъектНайден = Ложь, проследим, доходит ли выполнение до метода Объект.Записать(). Если выполнение прерывается раньше (например, по условию Продолжить или Отказ), мы найдем конкретную строку кода, блокирующую создание.

Пример кода для отладки в модуле обмена:


// Точка останова в процедуре ЗагрузитьОбъект
Если ТипЗнч(Данные) = Тип("СправочникОбъект.СпособыОтраженияЗарплатыВБухУчете") Тогда
    // Здесь можно посмотреть, заполнены ли реквизиты перед записью
    Сообщить("Загружаем способ: " + Данные.Наименование);
КонецЕсли;

Проверка обязательных реквизитов

Выясним еще одну неочевидную причину: отсутствие обязательных реквизитов для записи. Справочник Способы отражения в Бухгалтерии может иметь дополнительные реквизиты, которые отсутствуют в ЗУП. Если при попытке Объект.Записать() срабатывает проверка заполнения (или подписка на событие), и какой-то важный реквизит пуст, 1С не создаст элемент, а ошибка записи может быть "проглочена" механизмом обмена для обеспечения непрерывности процесса.

Что проверить:

Итоговые рекомендации

Проанализировав проблему, мы можем составить алгоритм действий:

  1. Убедитесь в КД 2.0, что снят флаг "Не создавать новый объект".
  2. Проверьте регистр Соответствия объектов информационных баз на наличие "хвостов".
  3. Если используется синхронизация через БСП (синхронизация данных в меню), проверьте окно сопоставления данных.
  4. Запустите загрузку под отладкой, отслеживая состояние переменной Объект в процедуре ЗагрузитьОбъект.

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

← На главную