Как решить проблему с компонентой XMLDSignAddIn при работе с «Честным знаком» на macOS?

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

Работа с маркированными товарами в системе «Честный знак» требует обязательного использования электронной подписи (ЭЦП). Пользователи macOS часто сталкиваются с критической ошибкой при попытке подписать документы в тонком клиенте 1С: «Операция невозможна. Не удалось подключить внешнюю компоненту XMLDSignAddIn». В этой статье мы подробно разберем, почему возникает эта проблема, и проанализируем все доступные способы ее решения.

Выясним причину: почему компонента не работает на Mac?

Проанализируем техническую сторону вопроса. Внешняя компонента XMLDSignAddIn является частью «Библиотеки электронных документов» (БЭД). Она отвечает за формирование подписи в формате XML (XAdES). Проблема заключается в том, что в манифесте данной компоненты прописаны пути только к библиотекам для операционных систем Windows (файлы .dll) и Linux (файлы .so). Версия для macOS (файлы .dylib) на текущий момент вендором официально не поставляется.

Рассмотрим содержимое манифеста компоненты. При попытке инициализации на macOS система ищет подходящий бинарный файл, не находит его и выдает ошибку совместимости. Это означает, что «в лоб» запустить подписание через тонкий клиент на макбуке не получится. Однако существует несколько обходных путей, которые мы разберем далее.

Способ 1: Использование веб-клиента 1С

Это самый простой и рекомендуемый способ для пользователей macOS. Вместо запуска установленного приложения «Тонкий клиент», мы воспользуемся браузером (Safari, Google Chrome или Яндекс.Браузер).

Разберем, почему это работает. В веб-клиенте механизмы криптографии реализованы иначе. Браузер использует расширение «1С:Предприятие» и установленный в системе КриптоПро ЭЦП Browser plug-in. В этом случае потребность в компоненте XMLDSignAddIn для тонкого клиента отпадает, так как функции подписания берет на себя плагин браузера, который отлично работает на macOS.

Алгоритм действий:

  1. Установите КриптоПро CSP версии 5.0 R2 или новее (она нативно поддерживает процессоры Apple M1/M2/M3).
  2. Установите КриптоПро ЭЦП Browser plug-in.
  3. В браузере установите расширение для работы с 1С.
  4. Зайдите в базу через веб-интерфейс и выполните операцию подписания.

Способ 2: Перенос операции на сторону сервера (Server-side signing)

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

Поскольку серверы 1С обычно работают под управлением Windows или Linux, для них компонента XMLDSignAddIn доступна и работоспособна. Однако здесь есть важное ограничение: физический носитель с ключом (токен) должен быть доступен серверу. Это легко реализуемо, если сервер находится в локальной сети, но практически невозможно для облачных решений (например, 1cfresh).

Проанализируем программную реализацию. Вместо вызова методов на клиенте, необходимо использовать серверные контекстные вызовы. В коде это может выглядеть примерно так:


&НаСервере
Процедура ПодписатьДокументНаСервере(ДанныеДляПодписи, Сертификат)
    // Инициализация менеджера криптографии на стороне сервера
    Менеджер = Новый МенеджерКриптографии("", "", 80);
    // Серверная компонента XMLDSignAddIn здесь будет доступна
    // Выполняем подписание данных
КонецПроцедуры

Если вы используете облачную конфигурацию, вы можете развернуть небольшой промежуточный HTTP-сервис на стороннем Linux-сервере (VPS), который будет принимать данные, подписывать их (если там установлен ключ) и возвращать результат в 1С.

Способ 3: Использование удаленного рабочего стола (RDP)

Если работа в браузере по каким-то причинам не подходит, рассмотрим «промышленное» решение. Мы можем подключаться с макбука к виртуальному или физическому компьютеру на Windows через Microsoft Remote Desktop.

В этом сценарии на макбуке не запускается 1С, а только отображается картинка с удаленного сервера. Поскольку на Windows-сервере тонкий клиент работает полноценно, компонента XMLDSignAddIn подключится без проблем. Главная задача здесь — «пробросить» USB-токен с ключом ЭЦП с локального макбука на удаленный сервер. Для этого используются специальные утилиты, такие как USB Network Gate.

Способ 4: Виртуализация (Parallels Desktop или Docker)

Рассмотрим вариант запуска полноценной Windows внутри macOS. С помощью Parallels Desktop можно создать виртуальную машину, установить туда Windows и тонкий клиент 1С. Это решит проблему совместимости компонентов, так как 1С будет «думать», что работает в родной среде Windows.

Для продвинутых пользователей и администраторов существует вариант с Docker. Можно запустить контейнер с графической оболочкой Linux внутри macOS. Так как для Linux библиотека XMLDSignAddIn существует, подписание будет работать. Это технически сложный, но эффективный способ избежать покупки лицензий на Windows или Parallels.

Важные замечания по КриптоПро на macOS

Независимо от выбранного способа, для работы с «Честным знаком» на Mac необходимо убедиться, что криптопровайдер настроен правильно. Выясним основные моменты:

Итоги

Подведем итог нашему анализу. Ошибка XMLDSignAddIn на macOS — это не приговор для макбука, а следствие отсутствия специфической библиотеки в платформе 1С. Наиболее рациональным решением для рядового пользователя является переход на веб-клиент. Для корпоративного сектора оптимальным выбором станет использование RDP-доступа или серверного подписания. Надеемся, что в будущем вендор добавит поддержку macOS в манифест компоненты, но пока следует придерживаться описанных выше стратегий.

← На главную