При переносе данных между базами 1С с использованием механизмов Конвертации данных 2.0 часто возникает ситуация, когда после загрузки в объекте вместо полноценной ссылки мы видим «битую» ссылку (объект не найден, хотя он был создан в процессе обмена). Разберем, почему это происходит и как устранить данную проблему при передаче данных в виде структур.
Основная причина появления «битых» ссылок или дублей объектов при загрузке — это несоответствие данных, по которым 1С пытается найти существующий объект в приемнике. Механизм КД 2.0 крайне чувствителен к точному совпадению значений. Если переданное значение (например, дата, строка или число) хотя бы немного отличается от того, что хранится в базе приемника, поиск не находит нужный объект.
В результате система делает следующий вывод:
УникальныйИдентификатор (GUID).Как показывает практика, чаще всего «виновниками» являются даты или строки с невидимыми символами. Рассмотрим пример с датами. Если в конфигурации приемника реквизит типа Дата имеет состав Дата (без времени), а вы при обмене передаете структуру, где дата содержит время (например, 12:30:45), то поиск работать не будет.
Чтобы избежать этой ошибки, всегда приводите данные к строгому формату перед выгрузкой в обработчике ПередВыгрузкой или ПриВыгрузке:
// Пример приведения даты к началу дня для корректного поиска
Если ТипЗнч(Данные.ДатаДокумента) = Тип("Дата") Тогда
Данные.ДатаДокумента = НачалоДня(Данные.ДатаДокумента);
КонецЕсли;
При использовании структур данных критически важно правильно настроить Правила Конвертации Объектов (ПКО). Разберем основные правила:
GUID источника), поиск должен осуществляться ТОЛЬКО по полям поиска.Поиск по внутреннему идентификатору, если вы его используете.Чтобы убедиться, что проблема именно в загрузке, а не в логике обмена, откройте файл XML обмена. Проанализируйте, какие именно данные передаются в проблемное свойство.
Если вы видите, что в XML передается дата с временем, а в базе приемника она должна быть без времени — это и есть причина ошибки. Помните: Конвертация данных не умеет «угадывать» ваши намерения. Если данные в структуре не идентичны данным в базе приемника, поиск вернет Неопределено, что и приведет к созданию ненужного дубля объекта или битой ссылке.
Рассмотрим алгоритм действий при возникновении подобных ошибок:
XML значения ключевых полей, по которым вы ищете объект. Сравните их с тем, что физически записано в базе приемника.КлючВыгружаемыхДанных в ПКО. Это поможет КД четко понять, какое правило использовать для идентификации объекта.Важное примечание: Если у вас есть возможность использовать полноценные ссылки (объекты) вместо передачи структур — используйте ссылки. Структуры — это инструмент для специфических случаев, когда объектов-источников физически не существует. При работе со структурами вы берете на себя всю ответственность за идентичность данных в источнике и приемнике.
Соблюдение этих простых правил позволит вам избежать «битых» ссылок и обеспечить корректный перенос документов между базами 1С.