При переходе с обычных форм (например, 1С:Бухгалтерия 2.0) на управляемые формы в конфигурациях на базе Библиотеки стандартных подсистем (БСП) разработчики часто сталкиваются с трудностями при настройке нетипового обмена данными. Если ранее достаточно было создать план обмена и привязать файл правил через стандартную обработку обмена, то в современных конфигурациях (таких как 1С:Бухгалтерия предприятия 3.0) обмен данными полностью управляется подсистемой БСП.
Разберем по шагам весь процесс: от добавления метаданных в конфигураторе до подготовки правил в Конвертации данных 2.0 и загрузки их в режиме 1С:Предприятие.
Для начала создадим новый объект метаданных и настроим его состав:
ПланыОбмена добавим новый план обмена, например, МойНетиповойОбмен.СоответствияОбъектовИнформационныхБаз и установим для него свойство Авторегистрация = Запретить. Этот регистр используется БСП для хранения сопоставления ссылок между базами.Чтобы подсистема обмена данными БСП распознала новый план обмена, предоставила команды загрузки правил и панель администрирования, выполним доработку общих модулей и команд:
ОбменДаннымиПереопределяемый.ПолучитьПланыОбмена и зарегистрируем наш объект:
Процедура ПолучитьПланыОбмена(ПланыОбменаПодсистемы) Экспорт
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.МойНетиповойОбмен);
КонецПроцедуры
ЗарегистрироватьИзмененияПередЗаписью, ЗарегистрироватьИзмененияПриЗаписи и др.), если регистрация данных должна управляться правилами регистрации объектов (ПРО).ИнструментыРазработчикаОбновлениеВспомогательныхДанных.epf из комплекта БСП или выполним регламентное обновление справочника ИдентификаторыОбъектовМетаданных.В отличие от старых механизмов, БСП в 1С:Предприятии 8.3 не принимает отдельные файлы *.xml через стандартный диалог управляемых форм, а требует единый ZIP-архив с жестко регламентированными именами файлов внутри.
Сформируем комплект правил в конфигурации Конвертация данных 2.0 и упакуем их в архив со следующими именами:
ExchangeRules.xml (или ПравилаКонвертации.xml) — правила конвертации для выгрузки из текущей базы (источника).CorrespondentExchangeRules.xml (или ПравилаКонвертацииКорреспондента.xml) — правила конвертации для обратной стороны (корреспондента). Даже если обмен односторонний, файл должен присутствовать (можно выгрузить минимальный каркас правил).RegistrationRules.xml (или ПравилаРегистрации.xml) — правила регистрации объектов для текущей базы.Поместим эти файлы в корень архива Rules.zip (без создания вложенных папок).
После применения изменений в конфигураторе запустим 1С:Бухгалтерию 3.0 в режиме «1С:Предприятие»:
ZIP-архив.Если обмен настраивается между БП 3.0 (на БСП) и устаревшей конфигурацией на обычных формах (например, Управление торговлей 10.3), при первой синхронизации часто возникает «Ошибка формата сообщения обмена». Выясним причину этой ошибки и способы ее устранения.
Подсистема БСП оборачивает данные в специальный конверт сообщений (v8msg:Message), используя платформенные объекты ЗаписьСообщенияОбмена и ЧтениеСообщенияОбмена. Старая версия обработки УниверсальныйОбменДаннымиXML в УТ 10.3 ожидает открытый XML с корневым тегом <ФайлОбмена> и не умеет работать с новыми пакетами БСП.
Для решения этой проблемы рассмотрим два подхода:
УниверсальныйОбменДаннымиXML (версии 2.0.18 и выше), поддерживающую оптимизированный формат обмена и чтение заголовков БСП.ОбменУправлениеТорговлей103БухгалтерияПредприятия30), загрузив в него свои доработанные правила через интерфейс БСП. В типовых планах БСП уже предусмотрены механизмы совместимости форматов сообщений со старыми конфигурациями.Проанализируем технические моменты, предотвращающие зацикливание обмена и проблемы с квитированием:
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
ЧтениеСообщенияОбмена.ЗакончитьЧтение().