Перенос данных между конфигурациями «1С:Управление производственным предприятием» (УПП) и «1С:Документооборот» (ДО) с помощью инструмента «1С:Конвертация данных 2.1» — задача классическая, но полная подводных камней. Одной из наиболее часто встречающихся проблем является некорректная работа поиска объектов, когда при массовой выгрузке данные либо «схлопываются» в одну карточку, либо игнорируются системой. Рассмотрим подробно, почему возникает ситуация, когда контрагенты с заполненными ИНН не попадают в базу приемник, и как правильно настроить правила поиска.
Проанализируем ситуацию: если в правилах конвертации объектов (ПКО) для справочника Контрагенты не указано ни одно поле поиска, механизм обмена пытается сопоставить объекты по внутреннему идентификатору (GUID). Однако, если базы ранее не были синхронизированы, GUID в УПП и ДО для одних и тех же контрагентов будут гарантированно разными. В этом случае система должна опираться на значимые реквизиты, такие как ИНН, КПП или Наименование.
Когда выгружаются контрагенты с заполненным ИНН, но при загрузке они «пропадают», это часто свидетельствует о том, что механизм поиска на стороне приемника не может однозначно идентифицировать объект или натыкается на ошибку при попытке записи. Если же загружается только один контрагент с пустым ИНН, а остальные его перезаписывают, значит, система нашла одну карточку с пустым значением и считает всех последующих «пустых» контрагентов тем же самым объектом.
Для корректной синхронизации нам необходимо определить, по каким полям система будет искать существующего контрагента в базе «1С:Документооборот». Проанализируем основные реквизиты:
Рассмотрим по шагам, что нужно сделать в конфигурации «Конвертация данных»:
Контрагенты.ИНН и установим флаг в колонке Поиск.КПП и также установим флаг Поиск.ЭтоГруппа также рекомендуется установить флаг поиска, чтобы группы и элементы не путались между собой.Ситуация осложняется, когда в базе источника (УПП) есть контрагенты без ИНН. Если мы просто укажем ИНН как поле поиска, то при загрузке первого же контрагента с пустым ИНН будет создана карточка. При загрузке второго «пустого» контрагента система найдет созданную ранее карточку (ведь ИНН и там, и там пустой) и просто перезапишет её данными нового контрагента. В итоге вместо 100 контрагентов вы получите одного, который постоянно меняет название.
Чтобы этого избежать, проанализируем использование обработчика событий «Поля поиска» в ПКО. Нам нужно динамически менять алгоритм поиска в зависимости от заполненности реквизитов. Рассмотрим пример кода, который нужно разместить в обработчике:
// Если ИНН заполнен, ищем по ИНН и КПП
Если ЗначениеЗаполнено(СвойстваПоиска["ИНН"]) Тогда
СтрокаИменСвойствПоиска = "ИНН, КПП, ЭтоГруппа";
Иначе
// Если ИНН пустой, переключаемся на поиск по наименованию
СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа";
КонецЕсли;
Этот простой алгоритм позволяет системе гибко подходить к идентификации: бизнес-партнеры с документами будут сопоставляться жестко, а прочие — по названию. Это исключает проблему «перезаписи» всех пустых контрагентов в одну карточку.
Выясним еще одну важную деталь: справочник Контрагенты в ДО имеет реквизит ВидКонтрагента (Юридическое лицо, Физическое лицо и т.д.). В УПП за это может отвечать другой реквизит (например, ЮрФизЛицо). Если вы не настроили сопоставление этих типов, ДО может некорректно воспринимать длину ИНН или вообще отказываться записывать объект из-за незаполненности обязательного поля.
Проверьте, что в правилах настроена Конвертация значений для перечислений, отвечающих за юридический статус контрагента. Если типы не совпадают, используйте обработчик ПриЗагрузке для программной установки вида контрагента в базе приемнике.
Как было замечено в обсуждении, иногда помогает флаг «Не замещать существующие объекты в приемнике, а только создавать новые и заполнять их». Разберем, когда это полезно:
Если вы столкнулись с тем, что данные «затираются», но флаг «Не замещать» вам не подходит (так как нужно обновлять информацию), вернитесь к настройке полей поиска. Правильная идентификация по ИНН + КПП + ЭтоГруппа обычно снимает 99% проблем с некорректным обновлением.
Для обеспечения стабильности обмена между УПП и ДО рекомендуем придерживаться следующего алгоритма:
Таким образом, успех выгрузки зависит от трех факторов: четко определенных полей поиска (ИНН/КПП), программной обработки пустых значений в обработчике Поля поиска и корректного сопоставления типов данных между УПП и ДО.