Синхронизация данных между конфигурациями разного поколения — классической «Управление торговлей», редакция 10.3 (на обычных формах) и современной «Бухгалтерия предприятия», редакция 3.0 (на управляемых формах и БСП) — часто преподносит сюрпризы администраторам и программистам. Типичная ситуация: в обеих базах успешно велся учет по нескольким организациям, но возникла необходимость добавить новое юридическое лицо. Его создали вручную в обеих системах, начали отражать документы, но при попытке настроить обмен возникли трудности: либо программа не дает изменить настройки обмена, либо документы не переносятся, либо в базе-приемнике создается дубликат организации.
В этой статье мы подробно разберем, как решить эти проблемы, обойти технические ограничения платформ и настроить корректное сопоставление объектов без потери исторических данных и ручных правок в закрытых периодах.
При попытке добавить новую организацию в состав отправляемых данных в настройках обмена со стороны УТ 10.3 пользователи часто сталкиваются с системным предупреждением: «Настройка обмена данными не может быть изменена. Существуют зарегистрированные изменения данных для обмена. Выполните обмен данными два раза и повторите попытку».
Выясним причину этого поведения. План обмена блокирует изменение состава фильтров (в данном случае — списка разрешенных организаций), если на узле зарегистрированы объекты для отправки. Это необходимо для предотвращения коллизий данных. Рекомендация программы «выполнить обмен дважды» помогает далеко не всегда, особенно если в базе есть зависшие транзакции или ошибки выгрузки.
Рассмотрим надежный ручной способ обхода этой блокировки:
РегистрацияИзмененийДляОбменаДанными (в УТ 10.3 она доступна через меню «Сервис» — «Прочие обмены» или может быть запущена как внешняя обработка).БухгалтерияПредприятия30.Когда новая организация добавлена в обмен, при первой же синхронизации в БП 3.0 часто создается её дубль, несмотря на то, что карточка организации с точно таким же наименованием и ИНН уже существует в бухгалтерии. Почему так происходит?
По умолчанию типовые правила обмена, разработанные на базе «1С:Конвертация данных 2.1», выполняют поиск предопределенных справочников (к которым относится и СправочникСсылка.Организации) по уникальному идентификатору — GUID (UUID). Поскольку организация в УТ 10.3 и БП 3.0 создавалась вручную, их внутренние идентификаторы в СУБД гарантированно различаются. Система «не понимает», что это один и тот же объект, и создает новую карточку с GUID, пришедшим из УТ 10.3.
Для исправления этой ситуации существует несколько эффективных методик. Рассмотрим их по порядку.
Это самый простой и технологичный способ, не требующий изменения правил обмена и программирования. Суть метода заключается в том, чтобы позволить системе создать дубль, а затем объединить его с оригиналом средствами платформы 1С.
Разберем этот процесс по шагам:
Организации базы-приемника появится дубль нашей новой организации. Все новые документы из торговли запишутся на этот дубль.Организации.ИНН.Важный нюанс: Платформа не просто перепишет ссылки во всех документах и регистрах с дубля на оригинал. Она также автоматически скорректирует записи в служебном регистре сведений РегистрСведений.СоответствияОбъектовИнформационныхБаз. Запись, связывающая GUID организации из УТ 10.3 с организацией в БП 3.0, будет перезаписана на верную ссылку (наш оригинал). При всех последующих обменах документы из торговли будут сразу находить правильную организацию в БП 3.0, а дубли перестанут создаваться.
Если по каким-то причинам использование замены дублей нежелательно или требуется превентивно настроить поиск так, чтобы сопоставление сразу шло по реквизитам организации, нам придется скорректировать правила конвертации объектов (ПКО).
Проанализируем алгоритм изменения правил обмена в «1С:Конвертация данных 2.1»:
Конвертация данных 2.1.Организации.ИНН и КПП (для юридических лиц). Для физических лиц (ИП) достаточно оставить только ИНН. У остальных реквизитов снимем признаки участия в поиске.Теперь при выгрузке документов система сначала попытается найти организацию по GUID. Если поиск не увенчается успехом (как в случае с ручным созданием), сработает второй этап поиска — по связке ИНН + КПП. Организация сопоставится корректно, и дубль создан не будет.
Современные версии БП 3.0 поддерживают механизм интерактивного сопоставления данных при импорте. Однако пользователи часто жалуются, что при запуске синхронизации они не видят новую организацию в списке сопоставления. Выясним, почему это происходит.
Чтобы объект стал доступен для ручного (интерактивного) сопоставления в БП 3.0, он обязательно должен присутствовать в пришедшем XML-пакете данных из УТ 10.3. Если мы просто добавили организацию в настройки в УТ, но по ней не зарегистрировано ни одного изменения и ни одного документа к отправке, сам справочник Организации в файл выгрузки не попадет. БП 3.0 не сможет сопоставить то, чего физически нет в файле обмена.
Правильный алгоритм действий выглядит так:
Организации (нашу новую фирму).Если мы не хотим менять правила конвертации и выполнять замену дублей, сопоставление можно прописать напрямую в базу данных БП 3.0. Для этого используется ключевой регистр сведений РегистрСведений.СоответствияОбъектовИнформационныхБаз.
При ручном заполнении записей этого регистра часто допускаются критические ошибки, из-за которых сопоставление не срабатывает. Обратим внимание на обязательные для заполнения поля:
GUID организации из УТ 10.3 в виде строки. Получить его в УТ 10.3 можно программно или с помощью типовой обработки «Навигатор по базе данных».СправочникСсылка.Организации.Для гарантированного и безошибочного создания такой связи мы можем воспользоваться обработкой «Групповая обработка справочников и документов» или написать короткий код в консоли кода БП 3.0. Рассмотрим пример программного заполнения связи:
// Определим параметры связи
УзелОбмена = ПланыОбмена.ОбменУправлениеТорговлейБухгалтерияПредприятия30.НайтиПоКоду("УТ");
ОрганизацияБП = Справочники.Организации.НайтиПоРеквизиту("ИНН", "7701020304");
GUID_УТ_Строка = "ab150050-56c0-0008-11e7-f9b1a3da7d94"; // GUID организации из базы УТ 10.3
Если НЕ ОрганизацияБП.Пустая() И НЕ УзелОбмена.Пустая() Тогда
МенеджерЗаписи = РегистрыSведений.СоответствияОбъектовИнформационныхБаз.СоздатьМенеджерЗаписи();
МенеджерЗаписи.УзелИнформационнойБазы = УзелОбмена;
МенеджерЗаписи.СобственныйОбъект = ОрганизацияБП;
МенеджерЗаписи.УникальныйИдентификаторИсточника = GUID_УТ_Строка;
МенеджерЗаписи.УникальныйИдентификаторПриемника = Строка(ОрганизацияБП.УникальныйИдентификатор());
МенеджерЗаписи.ТипИсточника = "СправочникСсылка.Организации";
МенеджерЗаписи.ТипПриемника = "СправочникСсылка.Организации";
Попытка
МенеджерЗаписи.Записать();
Сообщить("Связь успешно установлена!");
Исключение
Сообщить("Ошибка записи соответствия: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
После выполнения этого кода регистр соответствий зафиксирует жесткую связь между объектами. При первой же последующей синхронизации документы по новой организации из УТ 10.3 беспрепятственно загрузятся в БП 3.0 на существующую карточку организации.
Мы проанализировали причины сбоев при интеграции новой организации в существующий обмен между УТ 10.3 и БП 3.0 и разобрали 4 практических метода устранения проблемы. Наиболее предпочтительным и безопасным для пользователей является Способ №1 (Поиск и замена дублей), так как он не требует изменения конфигурации и написания кода, выполняя при этом все необходимые системные привязки в автоматическом режиме. Если же требуется системный подход для предотвращения подобных ситуаций в будущем, рекомендуется скорректировать правила конвертации, добавив альтернативный поиск по ИНН и КПП.