При работе с торговым оборудованием в среде macOS пользователи часто сталкиваются со специфическими трудностями. Типичная ситуация: у вас есть MacBook, коробка 1С:Розница 8.3 и фискальный регистратор АТОЛ 1Ф. Вне среды 1С касса прекрасно определяется операционной системой и работает через стандартную утилиту ДТО (Драйвер торгового оборудования) от АТОЛ. Однако при попытке настроить подключение непосредственно из базы 1С система отказывается видеть устройство, а драйверы не устанавливаются. В этой статье мы подробно разберем, почему возникает эта проблема и какими путями её можно решить.
Прежде чем переходить к решениям, выясним причину такого поведения системы. Когда мы пытаемся подключить кассу напрямую через Библиотеку подключаемого оборудования (БПО) в 1С на macOS, часто возникает ошибка подключения или установки внешней компоненты. Это происходит из-за двух ключевых факторов безопасности и архитектуры операционной системы Apple:
.dylib) во временную папку и запустить её, Gatekeeper блокирует этот процесс, так как библиотека не имеет подтвержденной нотариальной подписи от Apple. ОС считает этот файл потенциально опасным и помещает его в карантин.Для решения этой проблемы мы можем пойти тремя путями: принудительно «подружить» локальный драйвер с macOS, развернуть веб-сервер АТОЛ в Docker-контейнере или использовать виртуализацию. Разберем каждый вариант пошагово.
Если вы хотите использовать прямое подключение без дополнительных серверов, можно попробовать принудительно снять флаг карантина со скачанных библиотек драйвера АТОЛ. Для этого выполним следующие действия:
xattr -cr /Users/ИмяПользователя/Library/Application_Support/1C/1cv8/ExtCompT/fptr.dylib
После выполнения этой команды macOS перестанет блокировать запуск данной библиотеки, и 1С сможет инициализировать подключение к кассе через стандартную БПО.
Если локальный драйвер упорно отказывается работать, лучшим архитектурным решением будет использование Веб-сервера АТОЛ. Веб-сервер позволяет отправлять команды на печать чеков по протоколу HTTP/JSON, что полностью избавляет 1С от необходимости загружать локальные библиотеки драйвера. 1С просто отправляет сетевые запросы на определенный IP-адрес и порт. Для этой задачи можно использовать конфигурацию рабочего места кассира для взаимодействия с кассами АТОЛ через ДТО Web-сервер.
Официальный установщик веб-сервера АТОЛ поставляется только для ОС Windows и Linux. На macOS мы можем запустить Linux-версию веб-сервера внутри контейнера Docker. Проанализируем, как это сделать правильно, учитывая критически важные подводные камни.
Главный подводный камень: проброс USB в Docker на macOS
В отличие от Linux, где пробросить подключенную по USB кассу в контейнер можно одной простой командой --device /dev/ttyUSB0, среда Docker Desktop на macOS работает внутри виртуальной машины и по умолчанию не поддерживает прямой проброс USB-устройств. Если вы просто запустите контейнер, веб-сервер АТОЛ внутри него не увидит кассу, подключенную к вашему MacBook.
Для обхода этого ограничения нам потребуется использовать технологию USB/IP или стороннее ПО вроде VirtualHere. Рассмотрим вариант с VirtualHere:
/dev/ttyACM0 или /dev/ttyUSB0).Пример простой конфигурации Dockerfile для сборки контейнера с веб-сервером АТОЛ и установленным клиентом VirtualHere:
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y wget libxml2
# Скачиваем и устанавливаем веб-сервер АТОЛ для Linux
RUN wget https://partner.atol.ru/upload/download/driver/10/atol-driver-10.x.x-linux.deb
RUN dpkg -i atol-driver-10.x.x-linux.deb
# Копируем конфигурационные файлы веб-сервера
COPY web-server.settings /etc/atol/web-server.settings
EXPOSE 16732
CMD ["/usr/bin/atol-web-server"]
Если вы настраиваете веб-сервер АТОЛ, обязательно учтите нововведение разработчиков. Начиная с версии драйверов 10.9.4.0, авторизация в веб-сервере стала строго обязательной.
Раньше запросы из 1С к веб-серверу можно было отправлять без авторизации. Теперь при конфигурации веб-сервера необходимо обязательно создать пользователя (например, с именем admin) и задать пароль. В настройках подключения внутри 1С или при отправке прямых JSON-запросов необходимо передавать параметры авторизации, иначе касса вернет ошибку доступа.
Пример структуры JSON-запроса к веб-серверу АТОЛ с авторизацией:
{
"uuid": "8bf6b2bf-7994-4375-9e67-0e625db6b0cf",
"request": [
{
"type": "getDeviceStatus"
}
],
"user": "admin",
"password": "MySafePassword123"
}
Если настройка Docker-контейнеров и проброс USB кажутся вам излишне сложными, существует проверенный и стабильный альтернативный вариант. Вы можете установить на ваш MacBook программу виртуализации Parallels Desktop.
Parallels Desktop обладает уникальной функцией интеграции под названием Coherence (Гибридный режим). В этом режиме окна приложений запущенной виртуальной машины Windows отображаются на рабочем столе macOS бок о бок с "родными" приложениями Mac, создавая иллюзию единой операционной системы.
Посмотрим на алгоритм настройки этой связки:
10.211.55.3 или настройте проброс портов на 127.0.0.1).Этот способ гарантирует 100% стабильность работы кассы, так как драйверы АТОЛ работают в своей родной среде Windows, а 1С на Mac взаимодействует с ними по надежному сетевому протоколу HTTP.
Мы подробно проанализировали причины несовместимости торгового оборудования АТОЛ с 1С на macOS и разобрали три практических метода решения проблемы. Выбор конкретного варианта зависит от ваших технических навыков и готовности к администрированию дополнительных служб: от простого снятия карантина в Терминале до разворачивания изолированного Docker-контейнера или виртуальной машины Windows.