Что делать, если в БСП и 1С:Бухгалтерии убрали поддержку правил конвертации КД2?

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

С выходом последних обновлений Библиотеки стандартных подсистем (БСП) версии 3.1.9 и выше, многие разработчики столкнулись с неприятным сюрпризом: из интерфейса типовых конфигураций (таких как 1С:Бухгалтерия 3.0.150+, УНФ 3.0.7 и других) исчезла привычная возможность загрузки правил обмена, созданных в Конвертации данных 2.0. Официальная позиция фирмы «1С» гласит: «Функциональность по загрузке правил устарела и более не поддерживается».

В этой статье мы подробно разберем, почему это произошло, как вернуть привычный функционал в кратчайшие сроки и какие современные альтернативы стоит рассмотреть для долгосрочного планирования.

Почему 1С отказывается от КД2?

Прежде чем переходить к решениям, проанализируем ситуацию. Основная проблема правил КД2 заключается в их архитектуре. Правила обмена XML содержат внутри себя произвольный программный код (обработчики событий), который выполняется на стороне сервера в привилегированном режиме. В условиях облачных технологий (например, 1С:Fresh) это создает серьезные риски безопасности. Конвертация данных 3.0 (EnterpriseData) работает иначе: она использует декларативный подход и XDTO-пакеты, что гораздо безопаснее и стабильнее при обновлениях.

Решение 1: Возврат функционала через расширение (Быстрый путь)

Если вам нужно «здесь и сейчас» запустить обмен, который работал годами, самым простым вариантом будет использование специального расширения. Несмотря на то что кнопки в интерфейсе скрыты, программный код в недрах ОбменДаннымиСервер часто еще сохраняет частичную совместимость. Для этой задачи можно использовать расширение для загрузки комплекта правил обмена XML в БСП.

Рассмотрим, как это работает:

  1. Необходимо найти или написать расширение, которое возвращает команду «Загрузить правила обмена» в формы настроек синхронизации.
  2. В расширении можно переопределить логику видимости кнопок, которые были скрыты разработчиками БСП.
  3. Важно понимать, что это временное решение. Рано или поздно 1С полностью удалит методы парсинга XML-правил из модулей БСП.

Решение 2: Использование внешней обработки «Универсальный обмен данными»

Многие забывают, что отказ БСП поддерживать правила в интерфейсе синхронизации не означает поломку самого механизма обмена. Старая добрая обработка УниверсальныйОбменДаннымиXML.epf все еще работоспособна. При необходимости можно воспользоваться внешней обработкой универсального обмена в формате XML.

Посмотрим на алгоритм действий:

  1. Найдите обработку в составе дистрибутива платформы (обычно она находится в папке AddDocs или ExtFiles в каталоге установки шаблонов конфигурации).
  2. Запустите её через меню «Файл — Открыть».
  3. Укажите файл правил и файл данных (или настройте прямое подключение к базе через COM/ссылку).
  4. Этот способ не требует внесения изменений в конфигурацию и отлично подходит для разовых или регламентных обменов, запускаемых вручную или через планировщик задач Windows.

Решение 3: Переход на Конвертацию данных 3.1 (XML-режим)

Проанализируем возможность использования КД 3.1. Вопреки расхожему мнению, КД 3.1 позволяет работать не только с форматом EnterpriseData.

Выясним преимущества этого подхода:

  1. В КД 3.1 реализована поддержка работы с произвольными XML-структурами, что позволяет минимизировать зависимость от жестких XDTO-пакетов.
  2. Вы можете продолжать использовать привычную логику сопоставления объектов, но на более современном движке.
  3. Это позволит «подружиться» с новыми релизами БСП, так как механизмы КД 3.1 являются приоритетными для развития.

Решение 4: Обмен через HTTP-сервисы и JSON (Custom Exchange)

Для программистов, предпочитающих полный контроль над процессом, отличным вариантом станет написание собственного легковесного обмена. Это особенно актуально, если объекты в источнике и приемнике сильно различаются или требуется высокая скорость передачи.

Разберем пример простейшей сериализации объекта в JSON для передачи через HTTP:


// Код на стороне источника (отправка данных)
Функция ОтправитьОбъектНаСервер(ОбъектСсылка)
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    
    ДанныеДляПередачи = Новый Структура;
    ДанныеДляПередачи.Вставить("Номер", ОбъектСсылка.Номер);
    ДанныеДляПередачи.Вставить("Дата", ОбъектСсылка.Дата);
    ДанныеДляПередачи.Вставить("КонтрагентИНН", ОбъектСсылка.Контрагент.ИНН);
    
    ЗаписатьJSON(ЗаписьJSON, ДанныеДляПередачи);
    СтрокаJSON = ЗаписьJSON.Закрыть();
    
    // Далее используем HTTPСоединение для передачи СтрокаJSON на HTTP-сервис приемника
КонецФункции

Такой подход полностью избавляет вас от проблем с обновлениями БСП, так как вы не используете её механизмы обмена вообще.

Решение 5: Работа с EnterpriseData через AdditionalInfo

Если основной причиной отказа от КД3 (EnterpriseData) была жесткость формата XDTO (невозможность передать пустые реквизиты или свои поля), то существует элегантное решение — использование узла AdditionalInfo (Дополнительные данные).

Проанализируем ситуацию подробнее:

  1. Формат EnterpriseData предусматривает специальный узел в схеме, куда можно помещать любые данные в формате «Ключ-Значение».
  2. Вам не нужно снимать XDTO-пакет с поддержки или менять его структуру.
  3. На стороне источника в обработчике выгрузки вы заполняете структуру ДополнительныеДанные.
  4. На стороне приемника в обработчике загрузки вы извлекаете эти данные и записываете в нужные реквизиты объекта 1С.

Пример заполнения в обработчике КД3:


// В обработчике ПКО "ПередВыгрузкой" или аналогичном
ЗначениеДополнительныхДанных = Новый Структура("МоеКастомноеПоле, НестандартныйСтатус", 
    Источник.КастомноеПоле, 
    Источник.Статус);
ПередатьДанныеВAdditionalInfo(ДанныеXDTO, ЗначениеДополнительныхДанных);

Рекомендации по выбору пути

Выбор решения зависит от ваших ресурсов и долгосрочных планов:

Важный момент: Помните, что правила КД2, размещенные в общих макетах конфигурации или расширения, все еще продолжают работать автоматически в рамках настроенных планов обмена. БСП убрала лишь возможность интерактивной загрузки файла пользователем. Если вы разработчик, вы можете просто обновить макет с правилами в расширении, и обмен подхватит их без лишних кнопок в интерфейсе.

Таким образом, КД2 еще рано списывать со счетов для внутренних задач, но для типовых механизмов 1С настала эра декларативных обменов и API-ориентированных решений.

← На главную