С выходом последних обновлений Библиотеки стандартных подсистем (БСП) версии 3.1.9 и выше, многие разработчики столкнулись с неприятным сюрпризом: из интерфейса типовых конфигураций (таких как 1С:Бухгалтерия 3.0.150+, УНФ 3.0.7 и других) исчезла привычная возможность загрузки правил обмена, созданных в Конвертации данных 2.0. Официальная позиция фирмы «1С» гласит: «Функциональность по загрузке правил устарела и более не поддерживается».
В этой статье мы подробно разберем, почему это произошло, как вернуть привычный функционал в кратчайшие сроки и какие современные альтернативы стоит рассмотреть для долгосрочного планирования.
Прежде чем переходить к решениям, проанализируем ситуацию. Основная проблема правил КД2 заключается в их архитектуре. Правила обмена XML содержат внутри себя произвольный программный код (обработчики событий), который выполняется на стороне сервера в привилегированном режиме. В условиях облачных технологий (например, 1С:Fresh) это создает серьезные риски безопасности. Конвертация данных 3.0 (EnterpriseData) работает иначе: она использует декларативный подход и XDTO-пакеты, что гораздо безопаснее и стабильнее при обновлениях.
Если вам нужно «здесь и сейчас» запустить обмен, который работал годами, самым простым вариантом будет использование специального расширения. Несмотря на то что кнопки в интерфейсе скрыты, программный код в недрах ОбменДаннымиСервер часто еще сохраняет частичную совместимость. Для этой задачи можно использовать расширение для загрузки комплекта правил обмена XML в БСП.
Рассмотрим, как это работает:
Многие забывают, что отказ БСП поддерживать правила в интерфейсе синхронизации не означает поломку самого механизма обмена. Старая добрая обработка УниверсальныйОбменДаннымиXML.epf все еще работоспособна. При необходимости можно воспользоваться внешней обработкой универсального обмена в формате XML.
Посмотрим на алгоритм действий:
AddDocs или ExtFiles в каталоге установки шаблонов конфигурации).Проанализируем возможность использования КД 3.1. Вопреки расхожему мнению, КД 3.1 позволяет работать не только с форматом EnterpriseData.
Выясним преимущества этого подхода:
Для программистов, предпочитающих полный контроль над процессом, отличным вариантом станет написание собственного легковесного обмена. Это особенно актуально, если объекты в источнике и приемнике сильно различаются или требуется высокая скорость передачи.
Разберем пример простейшей сериализации объекта в JSON для передачи через HTTP:
// Код на стороне источника (отправка данных)
Функция ОтправитьОбъектНаСервер(ОбъектСсылка)
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ДанныеДляПередачи = Новый Структура;
ДанныеДляПередачи.Вставить("Номер", ОбъектСсылка.Номер);
ДанныеДляПередачи.Вставить("Дата", ОбъектСсылка.Дата);
ДанныеДляПередачи.Вставить("КонтрагентИНН", ОбъектСсылка.Контрагент.ИНН);
ЗаписатьJSON(ЗаписьJSON, ДанныеДляПередачи);
СтрокаJSON = ЗаписьJSON.Закрыть();
// Далее используем HTTPСоединение для передачи СтрокаJSON на HTTP-сервис приемника
КонецФункции
Такой подход полностью избавляет вас от проблем с обновлениями БСП, так как вы не используете её механизмы обмена вообще.
Если основной причиной отказа от КД3 (EnterpriseData) была жесткость формата XDTO (невозможность передать пустые реквизиты или свои поля), то существует элегантное решение — использование узла AdditionalInfo (Дополнительные данные).
Проанализируем ситуацию подробнее:
ДополнительныеДанные.Пример заполнения в обработчике КД3:
// В обработчике ПКО "ПередВыгрузкой" или аналогичном
ЗначениеДополнительныхДанных = Новый Структура("МоеКастомноеПоле, НестандартныйСтатус",
Источник.КастомноеПоле,
Источник.Статус);
ПередатьДанныеВAdditionalInfo(ДанныеXDTO, ЗначениеДополнительныхДанных);
Выбор решения зависит от ваших ресурсов и долгосрочных планов:
УниверсальныйОбменДаннымиXML.AdditionalInfo.HTTP-сервисы.Важный момент: Помните, что правила КД2, размещенные в общих макетах конфигурации или расширения, все еще продолжают работать автоматически в рамках настроенных планов обмена. БСП убрала лишь возможность интерактивной загрузки файла пользователем. Если вы разработчик, вы можете просто обновить макет с правилами в расширении, и обмен подхватит их без лишних кнопок в интерфейсе.
Таким образом, КД2 еще рано списывать со счетов для внутренних задач, но для типовых механизмов 1С настала эра декларативных обменов и API-ориентированных решений.