Как устранить ошибку «Объект не найден» при синхронизации УТ 10 и Розницы?

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

При настройке обмена данными между 1С:Управление торговлей 10.3 и 1С:Розница (или другими конфигурациями на базе «1С:Предприятие 8») одной из самых досадных проблем является появление надписи «Объект не найден» (битых ссылок) в документах базы-приемника. Рассмотрим ситуацию, когда документ успешно переносится, но в его строках вместо номенклатуры или другого справочника мы видим лишь уникальный идентификатор (GUID) в угловых скобках. Разберем по шагам, почему это происходит и как это исправить, используя инструменты «Конвертации данных» и механизмы регистрации изменений.

Выясним причину: почему ссылка «битая»?

Прежде всего, нам необходимо понять механику возникновения этой ошибки. Надпись <Объект не найден> (170:80c38c89...) означает, что в базе-приемнике (Розница) создана ссылка на объект, но самого объекта (записи в таблице справочника) физически не существует. Это происходит в трех случаях:

  1. Объект вообще не был выгружен из базы-источника (УТ 10).
  2. Объект был выгружен в виде «пустой» ссылки (только GUID без данных).
  3. Объект пришел в базу-приемник, но не смог записаться из-за ошибок валидации (например, не заполнен обязательный реквизит «Владелец»).

Шаг 1. Анализ регистрации изменений на узле обмена

Рассмотрим логику работы типового обмена. Проанализируем ситуацию: если мы регистрируем только документ, система 1С при выгрузке должна «подтянуть» все связанные с ним объекты. Однако во многих правилах обмена стоит ограничение на выгрузку связанных данных, чтобы не передавать лишнюю информацию.

Проверим, зарегистрированы ли элементы справочника к обмену. Для этого выполним следующие действия:

  1. Откроем обработку «Регистрация изменений для обмена» в УТ 10.
  2. Найдем наш узел обмена с Розницей.
  3. Посмотрим, есть ли в списке справочник, который превращается в «Объект не найден».

Если справочника нет в списке регистрации, это не всегда ошибка. Но если мы хотим убедиться, что проблема именно в правилах, попробуем зарегистрировать один проблемный элемент вручную и запустить обмен. Если после этого в Рознице объект «оживет», значит, правила обмена настроены так, что они не выгружают данные справочников «по ссылке» из документа.

Шаг 2. Проверка правил конвертации объектов (ПКО) в «Конвертации данных»

Если ручная регистрация не помогает или мы хотим автоматизировать процесс, нам нужно заглянуть «под капот» правил обмена (обычно это файл XML, который загружается в настройку обмена). Разберем настройки в конфигурации «Конвертация данных 2.0»:

Проанализируем ПКС (Правила конвертации свойств) для табличной части документа. Часто там установлена галочка «Выгружать объект только по ссылке». Если она стоит, то при выгрузке документа система запишет в файл обмена только GUID номенклатуры. Она будет надеяться, что этот объект уже есть в Рознице или придет отдельным сообщением. Если его там нет — мы получим «Объект не найден».

Решение: Снимите галочку «Выгружать объект только по ссылке», чтобы данные объекта выгружались вместе с документом.

Шаг 3. Проблема владельца справочника

Ситуация осложняется, если у справочника в базе-приемнике есть Владелец (например, Характеристики номенклатуры или Единицы измерения). Выясним, почему это критично. В 1С нельзя записать объект, у которого не заполнен обязательный реквизит Владелец.

Рассмотрим алгоритм поиска:

  1. При загрузке Розница видит ссылку.
  2. Она пытается найти объект по GUID. Если не находит — создает новый.
  3. Если для создания нового объекта нужны данные (Наименование, Владелец), а они не переданы в файле обмена, срабатывает отказ в записи.
  4. В итоге: ссылка в документе создана, а сам элемент справочника в базе не появился.

Проанализируем настройки ПКО для такого справочника. В поле «Поля поиска» обязательно должен быть указан владелец. Также убедитесь, что в правилах выгрузки владельца (например, самой Номенклатуры) не стоит запрет на выгрузку.

Шаг 4. Анализ файла обмена (XML)

Самый надежный способ диагностики — посмотреть, что реально уходит из УТ 10. Выгрузите данные в файл и откройте его любым текстовым редактором (Notepad++ отлично подходит). Найдем блок нашего документа и посмотрим на узел нужного справочника:


<Свойство Имя="Номенклатура" Тип="СправочникСсылка.Номенклатура">
    <Ссылка>
        <Номенклатура>
            <УИД>80c38c89-a57c-6056-11ed-9c7cb771d33a</УИД>
            <!-- Если здесь нет Наименования и других реквизитов, значит объект выгружен ПО ССЫЛКЕ -->
        </Номенклатура>
    </Ссылка>
</Свойство>

Если в файле внутри тега <Ссылка> присутствуют только идентификаторы, значит, нужно менять настройки выгрузки в ПКО или ПКС, чтобы данные объекта включались в пакет.

Шаг 5. Использование обработчиков событий в правилах

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


// В обработчике ПКС (Правила конвертации свойств) для реквизита "Номенклатура"
// Мы можем управлять выгрузкой объекта целиком
ВыгрузитьОбъект = Истина;

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

Резюме и рекомендации

Для окончательного решения проблемы «Объект не найден» выполните следующие действия:

  1. Проверьте Журнал регистрации в Рознице в момент загрузки. Ищите ошибки с текстом «Ошибка при записи объекта». Там будет указано, какого именно реквизита не хватило для создания справочника.
  2. В Конвертации данных для ПКО справочника-приемника проверьте вкладку «Поля поиска». Убедитесь, что поиск идет по ГУИД, а при его отсутствии — по уникальным полям (например, Наименование + Владелец).
  3. Если объект не найден именно из-за владельца, добавьте в ПКО правило НайтиОбъектПоВладельцу = Истина или проверьте приоритет выгрузки владельца в дереве ПКС.

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

← На главную