Как настроить обмен данными между УТ 11.1 и БП 3.0 после перехода на универсальный формат

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При обновлении конфигурации 1С:Бухгалтерия предприятия 3.0 (начиная с релиза 3.0.44 и выше) многие технические специалисты столкнулись с серьезной проблемой: привычный план обмена ОбменУправлениеТорговлейБухгалтерияПредприятия, работавший на базе «Конвертации данных 2.0», был удален. Вместо него разработчики 1С перешли на использование технологии EnterpriseData (универсальный формат обмена) и плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат.

Для пользователей «замерших» или сильно кастомизированных баз 1С:Управление торговлей 11.1, где поддержка универсального формата отсутствует штатно, это означает полную остановку синхронизации. В данной статье мы подробно разберем, как восстановить обмен данными, проанализируем преимущества перехода на новый формат и рассмотрим конкретные технические шаги для реализации каждого варианта.

Вариант 1: Восстановление старого плана обмена в БП 3.0

Это самый быстрый, но «временный» способ. Если нам необходимо срочно запустить обмен без глубокой переработки УТ 11.1, мы можем восстановить удаленные объекты в Бухгалтерии предприятия. Разберем этот процесс по шагам:

  1. Анализ изменений: Фирма 1С перевела БП на новую версию Библиотеки стандартных подсистем (БСП). Старые механизмы обмена были скрыты или удалены из интерфейса и состава метаданных.
  2. Перенос объектов: Нам потребуется конфигурация БП 3.0 старого релиза (до 3.0.44). Из нее необходимо перенести в текущую рабочую базу план обмена ОбменУправлениеТорговлейБухгалтерияПредприятия, а также связанные с ним правила регистрации и обработки.
  3. Использование расширений: Чтобы оставить конфигурацию БП на поддержке, рекомендуется не вносить изменения напрямую в основную конфигурацию, а создать расширение. В него переносятся только необходимые объекты метаданных. Это позволит конфигурации обновляться в будущем, не теряя функционал обмена.

Важный нюанс: Данный метод требует постоянной поддержки правил конвертации. Если в новых релизах БП изменятся реквизиты документов или справочников (например, переименование полей), старые правила перестанут работать, и их придется править вручную в «Конвертации данных 2.0».

Вариант 2: Внедрение поддержки EnterpriseData в УТ 11.1

Рассмотрим более современный и архитектурно правильный подход — «научить» старую УТ работать с универсальным форматом. Основное преимущество этого метода заключается в том, что логика обмена переносится в менеджеры обмена, а сама структура передаваемого 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, и обмен не сломается.

Вариант 3: Самописный обмен через COM-соединение или XML

Для систем с очень большим объемом ежедневно передаваемой информации (как указано в сообщении автора темы) часто выбирают разработку индивидуального обмена. Рассмотрим особенности работы через COM-соединение:

  1. Прямой доступ: УТ 11.1 подключается напрямую к базе БП 3.0, создает объекты документов и справочников и заполняет их.
  2. Проблемы производительности: При больших объемах данных COM-соединение может работать нестабильно, особенно в клиент-серверном варианте работы.
  3. Ограничения прав: В современных версиях платформы 8.3 существуют ограничения безопасности на запуск COM-процессов на стороне сервера.

Если вы выбираете этот путь, рекомендуем рассмотреть альтернативу в виде HTTP-сервисов. Создайте в БП 3.0 HTTP-сервис, который принимает JSON или XML пакеты данных из УТ. Это обеспечит высокую скорость передачи и отказоустойчивость.

Решение специфических проблем при переходе

Разберем ситуацию, упомянутую в обсуждении: отсутствие договоров в счетах-фактурах на аванс при выгрузке в БП. Выясним причину этой ошибки:

В новых релизах БП 3.0 методология учета счетов-фактур на аванс изменилась, и поле Договор в некоторых случаях перестало быть обязательным или его заполнение стало зависеть от настроек учетной политики. При использовании универсального формата типовые правила могут очищать это поле, если данные не соответствуют критериям сопоставления.

Для исправления ситуации необходимо:

Посмотрим на пример кода, который может помочь в принудительном заполнении договора при загрузке:


Процедура ПКО_Документ_СчетФактураВыданный_ПослеЗагрузки(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена)
    
    // Если договор не заполнился автоматически
    Если Не ЗначениеЗаполнено(ДанныеИБ.ДоговорКонтрагента) И ЗначениеЗаполнено(ДанныеИБ.Контрагент) Тогда
        // Пытаемся найти основной договор контрагента
        ДанныеИБ.ДоговорКонтрагента = ДанныеИБ.Контрагент.ОсновнойДоговорКонтрагента;
    КонецЕсли;
    
    ДанныеИБ.Записать(РежимЗаписиДокумента.Запись);

КонецПроцедуры

Инструменты для отладки и перехода

Проанализируем инструменты, которые помогут нам при настройке обмена:

Подводя итог, можно сказать, что самым надежным и перспективным решением является постепенное внедрение поддержки универсального формата в вашу кастомизированную УТ 11.1. Это позволит навсегда отвязать процесс обновления Бухгалтерии предприятия от необходимости постоянно переделывать правила обмена, разработанные в «Конвертации данных 2.0».

← На главную