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