Ситуация, когда после успешной, на первый взгляд, синхронизации в базе «1С:Бухгалтерия предприятия» (БП) вместо фамилий сотрудников появляются битые ссылки «Объект не найден», является довольно распространенной — для её решения есть инструмент исправления битых ссылок физических лиц. Особенно часто эта проблема проявляется при изменении архитектуры сети, например, при переносе баз на веб-сервер или при переходе на работу через веб-клиент. В этой статье мы подробно разберем причины возникновения такой ошибки и найдем способы её устранения, основываясь на практическом опыте специалистов.
Когда мы видим надпись Объект не найден, это означает, что в базе-приемнике (БП) создана ссылка на объект (например, в документе «Отражение зарплаты в бухучете»), но сам объект в справочнике ФизическиеЛица не был создан или не был найден. При стандартном обмене (через правила конвертации данных КД 2.0) идентификация происходит по внутреннему идентификатору (GUID). Если поиск по GUID не удался, система пытается найти объект по полям поиска (ИНН, СНИЛС, ФИО). Если и этот поиск завершается неудачей, а настройки обмена запрещают создание новых объектов, мы получаем «битую» ссылку.
Одной из наиболее частых причин «пустых» физлиц является настройка приватности в программе «1С:Зарплата и управление персоналом» (ЗУП). В правилах обмена заложена жесткая логика: если персональные данные не передаются, бухгалтерия не может создать полноценную карточку физического лица.
Рассмотрим реквизиты, которые за это отвечают:
Если в настройках синхронизации включен режим «выгрузки без персональных данных», то при попытке загрузки в БП система видит ссылку на физлицо, но не видит полей для его создания. В итоге создается пустая запись или просто остается ссылка в «пустоту». Проверьте в ЗУП состав отправляемых данных в настройках синхронизации.
Перенос баз на веб-сервер (Apache или IIS) вносит свои коррективы в процесс обмена файлами. Проанализируем нюанс, подмеченный практиками: загрузку данных в БП 3.0 рекомендуется выполнять непосредственно на сервере, где расположен кластер 1С, либо через «Тонкий клиент» с прямым подключением, а не через браузер.
Почему это важно? При работе через веб-клиент (браузер) обработка XML-файла происходит с использованием временных хранилищ. Существуют известные проблемы парсинга XML-структур на стороне веб-сервера, когда строковые данные (например, ИНН) могут считываться с невидимыми спецсимволами или обрезаться. Это приводит к тому, что механизм поиска по полям ИНН + СНИЛС не находит существующее физлицо и пытается создать новое, что может блокироваться правами доступа или логикой правил обмена.
Важно понимать, какой именно механизм обмена используется в вашей паре баз. Существует два типа типового обмена:
Если при перенастройке синхронизации формат обмена случайно изменился (например, с КД 2.0 на КД 3.0), механизмы сопоставления объектов будут работать иначе — для контроля различий есть отчет поиска расхождений и отсутствующих данных. В КД 3.0 (Enterprise Data) сопоставление часто идет по GUID, и если базы ранее не были «синхронизированы» по идентификаторам, то «Объект не найден» — ожидаемый результат. Убедитесь, что в обеих базах выбран одинаковый и привычный вам вариант обмена.
Когда синхронизация запускается через веб-сервис, код выполняется от имени системного пользователя (например, IUSR или NetworkService). Проанализируем ситуацию: если у этого пользователя нет прав на запись в папку временных файлов сервера или на чтение определенных метаданных, процесс «разбора» входящего файла может прерваться на этапе записи справочника ФизическиеЛица, при этом сам документ (например, Ведомость) может записаться.
Для решения этой проблемы попробуйте выполнить синхронизацию вручную из-под пользователя с полными правами, запустив 1С в режиме Тонкого клиента. Если при таком способе физлица «прогрузятся» нормально, значит, проблему нужно искать в правах доступа пользователя веб-сервера.
Иногда проблема локализуется только в документах удержаний. В ЗУП 3.1 удержания (например, исполнительные листы) тесно связаны с контрагентами-получателями. Если в правилах обмена настроено, что физическое лицо должно создаваться только «по ссылке» из контрагента, а сам контрагент не загрузился (например, из-за дубля ИНН), то и связанное с ним физлицо не будет создано в БП.
Проанализируем регистр сведений Соответствие объектов информационных баз в Бухгалтерии. Если вы видите там записи, где в поле «Приемник» стоит пустая ссылка, попробуйте удалить эти записи и запустить синхронизацию заново, предварительно убедившись, что в ЗУП данные физлица заполнены корректно (ИНН и СНИЛС обязательны) — для этого подойдёт обработка автоматического пересопоставления объектов синхронизации.
Для гарантированного исправления ситуации выполните следующие шаги:
Если вам необходимо проверить программно, какие объекты не сопоставлены, можно использовать следующий фрагмент кода в консоли запросов или обработке для анализа регистра соответствий:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СоответствиеОбъектов.СобственнаяСсылка,
| СоответствиеОбъектов.УникальныйИдентификаторИсточника,
| СоответствиеОбъектов.ТипИсточника,
| СоответствиеОбъектов.ТипПриемника
|ИЗ
| РегистрСведений.СоответствиеОбъектовИнформационныхБаз КАК СоответствиеОбъектов
|ГДЕ
| СоответствиеОбъектов.СобственнаяСсылка.Наименование ЕСТЬ NULL";
Результат = Запрос.Выполнить();
Этот запрос поможет выявить записи в регистре сопоставления, которые указывают на несуществующие (битые) объекты в текущей базе — для автоматизации этого процесса есть утилита удаления битых ссылок в регистрах. Удаление таких «фантомных» записей часто помогает системе заново создать объект при следующей выгрузке из ЗУП.
Подводя итог, можно сказать, что в 90% случаев проблема решается либо включением выгрузки персональных данных в ЗУП, либо сменой клиента с веб-браузера на Тонкий клиент 1С для проведения первичной синхронизации после технических работ на сервере.