Синхронизация данных между 1С:Управление торговлей 10.3 и 1С:Бухгалтерия предприятия 3.0 — это классический сценарий, который часто сопровождается техническими сложностями. Типовые правила обмена не всегда учитывают специфику бизнес-процессов, таких как параллельная загрузка банковских выписок в обе базы. В данной статье мы разберем две основные проблемы: возникновение дублей в справочнике «Контрагенты» и ошибку обращения к метаданным при загрузке документов поступления.
Разберем ситуацию: бухгалтер загружает банковские выписки в «Управление торговлей» и в «Бухгалтерию» независимо. В результате один и тот же контрагент создается в обеих базах. При выполнении обмена система не может сопоставить эти записи и создает дубли. Проанализируем причину: по умолчанию правила обмена 1С используют GUID (уникальный внутренний идентификатор) объекта для поиска. Поскольку контрагенты созданы в разных базах вручную или через разные обработки, их идентификаторы различаются, даже если ИНН и КПП совпадают.
Чтобы решить эту задачу, нам потребуется внести изменения в правила конвертации объектов (ПКО) с помощью конфигурации «Конвертация данных 2.0» (КД). Выполним следующие действия:
Контрагенты.ИНН и КПП.Важное примечание: При настройке поиска по ИНН и КПП следует учитывать, что у физических лиц и самозанятых КПП может отсутствовать. В этом случае в обработчике «Поля поиска» в ПКО рекомендуется написать условие, которое будет выполнять поиск только по ИНН, если тип контрагента — физическое лицо.
Рассмотрим вторую техническую сложность, упомянутую в обсуждении. При загрузке документа ПоступлениеТоваровУслуг (в БП 3.0 это «Поступление (акт, накладная)») возникает ошибка в глобальном обработчике ПослеЗагрузкиОбъекта. Ошибка указывает на то, что код пытается обратиться к свойству Метаданные() у переменной, которая не является объектом метаданных или пуста.
Выясним причину: в современных конфигурациях БП 3.0 часто используется алгоритм ЗаполнитьРеквизитыПоУмолчанию. Если правила обмена устарели или структура документа в новом релизе БП изменилась, этот алгоритм может «спотыкаться» на определенных типах данных или при попытке работы с объектами, которые еще не были корректно инициализированы в памяти.
Для исправления ситуации в КД 2.0 в глобальном обработчике «После загрузки объекта» (конвертация) можно применить два подхода.
Вариант 1: Использование блока обработки исключений. Это самый быстрый способ подавить ошибку и позволить обмену завершиться. Заключим вызов алгоритма в попытку:
Попытка
Выполнить(Алгоритмы.ЗаполнитьРеквизитыПоУмолчанию);
Исключение
// Записываем информацию в журнал регистрации, если требуется
ЗаписьЖурналаРегистрации("ОбменДанными.ОшибкаЗаполнения",
УровеньЖурналаРегистрации.Предупреждение, , ,
"Не удалось заполнить реквизиты по умолчанию для объекта: " + Строка(Объект));
КонецПопытки;
Вариант 2: Предварительная проверка типа объекта. Это более правильный с точки зрения архитектуры подход. Мы будем вызывать алгоритм заполнения только для тех типов объектов, которые точно имеют метаданные (справочники и документы):
// Проверяем, является ли загруженный объект ссылочным типом (Справочник или Документ)
Если Найти(ИмяТипаОбъекта, "СправочникСсылка") > 0
Или Найти(ИмяТипаОбъекта, "ДокументСсылка") > 0 Тогда
// Дополнительная проверка на наличие самого объекта
Если Объект <> Неопределено Тогда
Выполнить(Алгоритмы.ЗаполнитьРеквизитыПоУмолчанию);
КонецЕсли;
КонецЕсли;
Проанализируем ситуацию: ошибки в глобальных обработчиках часто возникают после обновления 1С:Бухгалтерии, так как правила обмена, встроенные в УТ 10.3, перестают соответствовать структуре объектов в БП 3.0. Посмотрим, где взять актуальные правила:
...\1cv8\tmplt\1c\Accounting\...).Обмен данными, а в ней — папку Обмен с конфигурацией Управление торговлей, ред. 10.3.ПравилаОбмена.xml.Рекомендация по бизнес-процессу: Чтобы радикально исключить появление дублей контрагентов, лучше пересмотреть схему работы с банком. Оптимально загружать выписки только в оперативную базу (УТ 10.3), проверять правильность заполнения контрагентов там, а затем передавать эти данные в бухгалтерскую базу через настроенный обмен. Это гарантирует единство GUID и избавит программиста от необходимости постоянной правки правил поиска в КД 2.0.
Подводя итог, скажем: для стабильного обмена важно не только следить за актуальностью правил конвертации, но и грамотно настраивать поля поиска, отдавая приоритет уникальным реквизитам бизнеса (ИНН/КПП), а не внутренним идентификаторам платформы 1С.