При использовании обработки «Универсальный обмен данными в формате XML» для прямого переноса документов между конфигурациями (например, из 1С:Управление торговлей в 1С:Бухгалтерия предприятия) часто возникает ошибка несовместимости релизов платформы. Проблема обостряется в случаях, когда база-приемник регулярно обновляется и требует актуальной версии платформы «1С:Предприятие», а база-источник функционирует на более старом релизе.
Проанализируем физику возникновения этой ошибки, разберем причины сбоя COM-соединения и подробно рассмотрим все доступные варианты решения проблемы.
Прямое подключение к базе-приемнику в обработке обмена строится на базе технологии COM-соединения. В коде конфигурации или обработки инициализируется внутрипроцессный COM-сервер:
COMСоединитель = Новый COMОбъект("V83.COMConnector");
Соединение = COMСоединитель.Connect(СтрокаПодключения);
Выясним причину ошибки при выполнении этой операции:
V83.COMConnector отвечает системная библиотека comcntr.dll. Windows вызывает ту версию DLL, которая была зарегистрирована в системном реестре последней (обычно при установке нового релиза платформы).ragent сервера «1С:Предприятия» вплоть до номера сборки. При несовпадении версий сервер отклоняет соединение с ошибкой различия версий клиента и сервера.1Cv8.1CD), подключение через более старый релиз платформы при одновременно работающих в новом релизе пользователях вызывает ошибку блокировки или повреждения структуры данных из-за различий во внутреннем формате работы с базой.Рассмотрим самый надежный и простой способ, полностью устраняющий зависимость от релизов платформы, разрядности операционной системы и корректности регистрации COM-компонентов.
Этот процесс можно полностью автоматизировать с помощью стандартного механизма регламентных заданий или пакетного запуска «1С:Предприятия» с ключом командной строки /Execute.
Если требуется сохранить именно прямой режим обмена без ручных манипуляций с файлами, наиболее технически правильным решением является перевод обеих информационных баз на единый актуальный релиз платформы.
Разберем по шагам, почему это выгодно:
comcntr.dll.Обработка «Универсальный обмен данными в формате XML» позволяет запускать процесс выгрузки/загрузки с обратной стороны. Разберем эту схему:
Если обновлять всех пользователей базы-источника нецелесообразно, а обмен выполняет конкретный администратор или выделенный служебный компьютер, можно зарегистрировать нужную версию COM-компонента точечно на этом рабочем месте.
regsvr32 "C:\Program Files\1cv8\8.3.XX.YYYY\bin\comcntr.dll"
(где 8.3.XX.YYYY — точный номер релиза платформы Бухгалтерии).После регистрации системный объект V83.COMConnector на данном ПК будет обращаться именно к требуемой версии платформы, что позволит успешно подключаться к Бухгалтерии, пока остальные пользователи Торговли продолжают работать на своих рабочих станциях под старыми версиями.
Для серверов и терминальных станций, где одновременно требуются разные версии COM-соединений, можно изолировать компоненту через создание отдельного COM+-приложения в операционной системе:
dcomcnfg).comcntr.dll нужной версии платформы.dllhost.exe.Такой подход обеспечивает независимое исполнение COM-вызовов в изолированном адресном пространстве без конфликтов с другими установленными версиями платформы «1С:Предприятие».