При обновлении конфигурации 1С:Бухгалтерия предприятия 3.0 (начиная с релиза 3.0.44 и выше) многие технические специалисты столкнулись с серьезной проблемой: привычный план обмена ОбменУправлениеТорговлейБухгалтерияПредприятия, работавший на базе «Конвертации данных 2.0», был удален. Вместо него разработчики 1С перешли на использование технологии EnterpriseData (универсальный формат обмена) и плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат.
Для пользователей «замерших» или сильно кастомизированных баз 1С:Управление торговлей 11.1, где поддержка универсального формата отсутствует штатно, это означает полную остановку синхронизации. В данной статье мы подробно разберем, как восстановить обмен данными, проанализируем преимущества перехода на новый формат и рассмотрим конкретные технические шаги для реализации каждого варианта.
Это самый быстрый, но «временный» способ. Если нам необходимо срочно запустить обмен без глубокой переработки УТ 11.1, мы можем восстановить удаленные объекты в Бухгалтерии предприятия. Разберем этот процесс по шагам:
ОбменУправлениеТорговлейБухгалтерияПредприятия, а также связанные с ним правила регистрации и обработки.Важный нюанс: Данный метод требует постоянной поддержки правил конвертации. Если в новых релизах БП изменятся реквизиты документов или справочников (например, переименование полей), старые правила перестанут работать, и их придется править вручную в «Конвертации данных 2.0».
Рассмотрим более современный и архитектурно правильный подход — «научить» старую УТ работать с универсальным форматом. Основное преимущество этого метода заключается в том, что логика обмена переносится в менеджеры обмена, а сама структура передаваемого XML-сообщения становится независимой от версий конфигураций. Проанализируем технические требования для реализации этого варианта:
1. Добавление XDTO-пакета
Для работы с EnterpriseData в конфигурации должен существовать соответствующий XDTO-пакет (например, EnterpriseData_1_0_1). Без него система не сможет сформировать XML-структуру нужного формата. Пакет можно выгрузить из актуального релиза УТ 11.4 или БП 3.0 и импортировать в УТ 11.1 через дерево метаданных.
2. Интеграция подсистемы обмена
Необходимо выполнить частичный «бэкпорт» (перенос функционала из новых версий в старые) подсистемы «Синхронизация данных» из свежей версии БСП. Это включает в себя создание новых общих модулей, таких как МенеджерОбменаЧерезУниверсальныйФормат.
3. Написание правил в коде (КД 3.0)
В отличие от КД 2.0, где правила хранятся в XML-файле, в универсальном формате (КД 3.0) правила прописываются непосредственно на встроенном языке 1С внутри общего модуля менеджера обмена. Рассмотрим пример структуры обработчика для передачи данных о контрагенте:
Процедура ПКО_Справочник_Контрагенты_Отправка(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена)
ДанныеXDTO.Наименование = ДанныеИБ.Наименование;
ДанныеXDTO.НаименованиеПолное = ДанныеИБ.НаименованиеПолное;
ДанныеXDTO.ЮридическоеФизическоеЛицо = ОбменДаннымиПересчет.ЮридическоеФизическоеЛицо(ДанныеИБ.ЮридическоеФизическоеЛицо);
Если ЗначениеЗаполнено(ДанныеИБ.ИНН) Тогда
ДанныеXDTO.ИНН = ДанныеИБ.ИНН;
КонецЕсли;
КонецПроцедуры
Почему это выгодно? Если в БП 3.0 изменятся реквизиты, типовой менеджер обмена в Бухгалтерии будет обновлен разработчиками 1С автоматически. Ваша УТ 11.1 продолжит выгружать данные в тот же промежуточный формат EnterpriseData, и обмен не сломается.
Для систем с очень большим объемом ежедневно передаваемой информации (как указано в сообщении автора темы) часто выбирают разработку индивидуального обмена. Рассмотрим особенности работы через COM-соединение:
Если вы выбираете этот путь, рекомендуем рассмотреть альтернативу в виде HTTP-сервисов. Создайте в БП 3.0 HTTP-сервис, который принимает JSON или XML пакеты данных из УТ. Это обеспечит высокую скорость передачи и отказоустойчивость.
Разберем ситуацию, упомянутую в обсуждении: отсутствие договоров в счетах-фактурах на аванс при выгрузке в БП. Выясним причину этой ошибки:
В новых релизах БП 3.0 методология учета счетов-фактур на аванс изменилась, и поле Договор в некоторых случаях перестало быть обязательным или его заполнение стало зависеть от настроек учетной политики. При использовании универсального формата типовые правила могут очищать это поле, если данные не соответствуют критериям сопоставления.
Для исправления ситуации необходимо:
МенеджерОбменаЧерезУниверсальныйФормат.ПКО_Документ_СчетФактураВыданный_Получение и скорректировать логику сопоставления договора.Посмотрим на пример кода, который может помочь в принудительном заполнении договора при загрузке:
Процедура ПКО_Документ_СчетФактураВыданный_ПослеЗагрузки(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена)
// Если договор не заполнился автоматически
Если Не ЗначениеЗаполнено(ДанныеИБ.ДоговорКонтрагента) И ЗначениеЗаполнено(ДанныеИБ.Контрагент) Тогда
// Пытаемся найти основной договор контрагента
ДанныеИБ.ДоговорКонтрагента = ДанныеИБ.Контрагент.ОсновнойДоговорКонтрагента;
КонецЕсли;
ДанныеИБ.Записать(РежимЗаписиДокумента.Запись);
КонецПроцедуры
Проанализируем инструменты, которые помогут нам при настройке обмена:
Подводя итог, можно сказать, что самым надежным и перспективным решением является постепенное внедрение поддержки универсального формата в вашу кастомизированную УТ 11.1. Это позволит навсегда отвязать процесс обновления Бухгалтерии предприятия от необходимости постоянно переделывать правила обмена, разработанные в «Конвертации данных 2.0».