В процессе настройки обмена данными между конфигурациями 1С часто возникает ситуация, когда объект (например, договор или контрагент) успешно создается в базе, но сразу после завершения сеанса обмена бесследно исчезает. В журнале регистрации при этом мы видим две записи: сначала добавление объекта, а затем его удаление. Давайте разберемся, почему так происходит и как найти причину такого поведения системы.
Ключ к разгадке кроется в архитектуре обмена данными через XDTO. Система использует механизм отложенного контроля ссылочной целостности, который позволяет не прерывать процесс загрузки, если данные приходят в «неправильном» порядке. Рассмотрим, как это работает по шагам:
Именно этот процесс удаления временных объектов мы и наблюдаем в журнале регистрации. Чтобы найти причину, необходимо обратиться к серверному коду механизма обмена.
Основную логику обработки таких объектов можно найти в модуле ОбменДаннымиXDTOСервер. Рассмотрим ключевой фрагмент кода, который отвечает за управление временными объектами:
// Объекты, создаваемые по ссылке, запоминаем в таблицу,
// чтобы после загрузки всех данных удалить объекты,
// которые так и не были загружены полностью ("временные объекты").
// При загрузке объектов "целиком" удаляем объекты из таблицы,
// переводя их из состояния "временных" в "постоянные".
Если ваш объект (в нашем случае — договор) был создан как временный, но не был корректно «дозаполнен» в рамках одного обмена, он попадает под процедуру автоматической очистки. Вот основные причины, почему это происходит:
ПКС или ПКО) могут быть заданы условия, которые отсекают объект на этапе записи. Система начинает создавать его как временный, но, не пройдя проверку фильтра, объект «зависает» и впоследствии удаляется.XDTO-пакете не совпадает со структурой метаданных текущей конфигурации, заполнение реквизитов может завершиться с ошибкой, препятствуя переходу объекта в «постоянное» состояние.Чтобы локализовать проблему, воспользуемся следующими рекомендациями:
RLS или базовые ограничения прав препятствуют записи конкретных справочников, в результате чего объект создается в памяти, но не фиксируется в базе.ПослеЗагрузки или ПриЗагрузке. Часто разработчики программно отменяют запись объекта, если он не соответствует бизнес-логике.DBPOST (запись в базу) для конкретного типа метаданных. Это позволит увидеть момент, когда транзакция записи прерывается или откатывается.Помните, что удаление объекта — это не случайный сбой, а защитный механизм платформы. Анализируя этапы загрузки и проверяя, доходит ли дело до физической записи объекта в информационную базу, вы сможете быстро найти, на каком именно этапе цепочка обмена разрывается.