Почему не загружаются заказы при обмене с сайтом Битрикс и как исправить ошибку создания объекта Addin.ЭДОCom

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

При настройке стандартного обмена между 1С:Управление производственным предприятием (УПП) 1.3 и сайтом на базе 1С-Битрикс часто возникает ситуация, когда выгрузка номенклатуры проходит успешно, а загрузка заказов обрывается с ошибкой. Проанализируем типовую ситуацию: в коде программы происходит сбой на этапе инициализации криптографических модулей, даже если вы не планируете использовать электронную подпись для заказов.

Разберем по шагам, почему это происходит, за что отвечает компонента Addin.ЭДОCom и как привести систему в рабочее состояние.

Выясняем причину: почему стопорится загрузка заказов

Рассмотрим участок кода, на котором происходит прерывание процесса:


Крипт = СоздатьОбъектКомпонентыПеребираяВерсии("CryptS", ВерсияКомпоненты);

Функция СоздатьОбъектКомпонентыПеребираяВерсии(ProgID, СтрокаНомерВерсии)
...
Попытка
    // попытка создания указанной версии
    Объект = Новый("Addin.ЭДОCom." + ProgID + СтрокаНомерВерсии);
Исключение
    // Если объект не создан, обмен прерывается
КонецПопытки

Проанализируем ситуацию: почему при выгрузке товаров всё работает, а на заказах 1С требует криптографический объект? Дело в том, что выгрузка номенклатуры — это процесс генерации XML-файла из данных 1С. Загрузка заказов — это более сложный процесс десериализации (чтения) ответа от сайта. В типовых правилах обмена CommerceML 2 заложена проверка заголовков пакета на наличие защиты и целостности. Даже если шифрование не используется в настройках явно, код инициализации крипто-менеджера может вызываться «по умолчанию» для проверки возможности расшифровки данных.

Разбираемся с компонентой Addin.ЭДОCom

Объект Addin.ЭДОCom (часто связанный с библиотекой CML20.dll) является связующим звеном (COM-прослойкой) между платформой 1С и криптопровайдером, установленным в операционной системе. Если система выдает ошибку при выполнении конструктора Новый, это означает, что компонента либо не установлена, либо не зарегистрирована в реестре Windows, либо имеет место конфликт разрядности.

Важно учитывать, что для работы с этой компонентой в старых версиях конфигураций, таких как УПП 1.3, требуется именно CryptoPro CSP. Попытка использовать другие криптопровайдеры, например ViPNet CSP, часто заканчивается неудачей, так как программный интерфейс компоненты жестко ориентирован на вызовы Microsoft CryptoAPI, которые корректно транслирует именно КриптоПро.

Шаг 1: Проверка регистрации компоненты в системе

Если компонента физически присутствует на диске, но 1С её не видит, нам необходимо зарегистрировать её вручную. Выясним, где искать нужный файл. Обычно компонента обмена CML20.dll поставляется вместе с платформой или находится в составе подсистемы электронного документооборота в самой конфигурации.

Рассмотрим процедуру регистрации через командную строку:

  1. Запустите командную строку (cmd) от имени Администратора.
  2. Перейдите в каталог, где расположена библиотека.
  3. Выполните команду: regsvr32 "C:\ПутьКФайлу\CML20.dll".

Важный нюанс: Обратите внимание на разрядность вашего сервера 1С. Если вы используете 64-битный сервер 1С:Предприятие, то компонента должна быть зарегистрирована в 64-битном окружении. Если же вы запускаете обмен интерактивно в толстом клиенте, важна разрядность клиентского приложения.

Шаг 2: Настройка криптопровайдера

Как мы уже выяснили, установка ViPNet CSP в данной ситуации может не помочь. Если код требует Addin.ЭДОCom.CryptS, проанализируем настройки безопасности:

  1. Установите CryptoPro CSP актуальной версии.
  2. Проверьте наличие действующих лицензий (для инициализации объекта библиотека часто проверяет легитимность ПО).
  3. Убедитесь, что в системе не конфликтуют два криптопровайдера. Если на одном сервере установлены и КриптоПро, и ViPNet, это может блокировать создание COM-объектов.

Шаг 3: Проверка настроек узла обмена в 1С

Посмотрим на настройки самого обмена в 1С:УПП. Иногда система пытается инициализировать криптографию из-за случайно установленного флага. Проверим следующие параметры:

Альтернативное решение: Отключение проверки в коде

Если шифрование вам категорически не требуется, а установить CryptoPro нет возможности, программисты часто прибегают к модификации кода. Рассмотрим, как это сделать, но помните, что это потребует снятия конфигурации с поддержки (или создания расширения, если версия платформы позволяет).

В модуле, отвечающем за обмен (обычно это ПроцедурыОбменаС Сайтом), можно найти блок инициализации Крипт. Если мы уверены, что данные с сайта приходят в открытом виде, можно добавить условие, которое будет пропускать попытку создания объекта, если он не критичен для парсинга XML.


Попытка
    Объект = Новый("Addin.ЭДОCom." + ProgID + СтрокаНомерВерсии);
Исключение
    // Записываем в лог, но не прерываем выполнение, если шифрование не обязательно
    ЗаписьЖурналаРегистрации("ОбменССайтом", УровеньЖурналаРегистрации.Предупреждение, , , "Компонента ЭДО не найдена");
    Объект = Неопределено;
КонецПопытки;

Однако будьте осторожны: если формат CommerceML, приходящий с сайта, содержит зашифрованные элементы, без этой компоненты загрузка заказов всё равно завершится ошибкой парсинга данных.

Резюме по решению проблемы

Проанализировав ситуацию, мы видим, что корень проблемы кроется в тесной интеграции механизмов CommerceML и средств криптозащиты в УПП 1.3. Для исправления ошибки рекомендуем следующий алгоритм действий:

  1. Проверить наличие библиотеки CML20.dll в макетах обработки или в каталоге установки 1С.
  2. Выполнить её регистрацию через regsvr32.
  3. Установить CryptoPro CSP, так как компонента ЭДОCom ориентирована на него.
  4. Если обмен идет в фоновом режиме, убедиться, что все действия по установке и регистрации выполнены на сервере 1С от имени пользователя, под которым запущена служба 1C:Enterprise Server Admin.

Соблюдение этих шагов позволит восстановить загрузку заказов и обеспечить стабильную работу интеграции между вашей учетной системой и интернет-магазином.

← На главную