Переход с файлового режима работы на клиент-серверный вариант (SQL) — это логичный шаг при масштабировании бизнеса. Однако перед системными администраторами и разработчиками встает серьезный вопрос: как подружить торговое оборудование (в частности, ККМ/ККТ), физически находящееся в магазине, с базой данных 1С, развернутой на удаленном сервере? Рассмотрим детально особенности архитектуры, разберем возможные варианты подключения, выявим их плюсы и минусы, а также изучим специфику настройки под различными операционными системами.
При использовании тонкого клиента база данных находится на сервере приложений 1С (и СУБД), а на рабочем месте кассира устанавливается локальное приложение Тонкий клиент 1С. Рассмотрим, как в данном случае происходит взаимодействие с кассовым аппаратом.
В этой схеме ключевую роль играет БиблиотекаПодключаемогоОборудования (БПО), интегрированная в большинство современных конфигураций 1С. Физическое подключение и отправка команд на печать чека выполняются локально на компьютере кассира, что минимизирует сетевой трафик и обеспечивает мгновенную реакцию оборудования.
Проанализируем пошаговый алгоритм работы этой схемы:
.dll или .so), который предварительно загружается из базы данных и регистрируется в операционной системе кассира.Преимущества схемы: Высокая отказоустойчивость, мгновенная печать чеков без сетевых задержек, простота настройки торгового оборудования в стандартном интерфейсе 1С. Даже при кратковременных просадках скорости интернета сессия тонкого клиента удерживает стабильное соединение.
Существует распространенное заблуждение, что при публикации базы на веб-сервере и работе через обычный интернет-браузер для ККМ «вообще ничего не нужно настраивать локально». Выясним, почему это не так.
Любой современный браузер работает в изолированной среде («песочнице») и из соображений безопасности не имеет прямого доступа к аппаратным ресурсам компьютера (включая USB и COM-порты). Чтобы заставить кассу печатать чеки из браузера, нам необходимо выполнить следующие действия:
В такой конфигурации браузер через расширение обращается к локальной службе 1С на компьютере, которая перенаправляет запросы к локальному драйверу ККМ. Схема вполне рабочая, но требует дополнительных действий по настройке прав расширений в браузере.
Этот вариант часто выбирают из-за экономии лицензий или привычки администрирования. При этой схеме и сама 1С, и ее сеанс запускаются непосредственно на сервере терминалов (RDP-сервере), а касса физически подключена к тонкому клиенту (локальному ПК кассира). Для связи сервера с кассой используется механизм проброса портов (Port Redirection).
Разберем, почему классический проброс портов по RDP часто вызывает критические сбои в работе кассиров:
Если отказаться от RDP невозможно, рекомендуется использовать альтернативные способы связи ККМ с удаленным сервером вместо стандартного проброса портов:
Вариант А: Использование сетевых интерфейсов ККМ (TCP/IP). Современные ККТ оснащаются сетевыми платами Ethernet или модулями Wi-Fi. Если объединить магазин и сервер в единую локальную сеть с помощью VPN-туннеля (например, IPSec или OpenVPN), то серверная 1С сможет общаться с кассой напрямую по ее сетевому IP-адресу, полностью игнорируя RDP-сессию клиента.
Вариант Б: Локальный веб-сервер ККМ. Драйверы производителей (например, АТОЛ ДТО 10) имеют встроенную службу веб-сервера. Вы можете запустить эту службу на локальном ПК кассира. При этом касса будет доступна по HTTP-протоколу. В настройках торгового оборудования в 1С на удаленном сервере указывается тип подключения «Веб-сервис ККМ» и прописывается внешний IP-адрес компьютера кассира (или его доменное имя в VPN). Обмен данными будет идти по надежному протоколу HTTP/JSON.
Вариант В: Стороннее специализированное ПО (например, KKM-Server). Программа устанавливается на компьютер кассира, берет под управление подключенную по USB кассу и транслирует ее в сеть в виде веб-службы. На сервере 1С настраивается подключение к этому адресу, что гарантирует стабильный обмен командами даже по слабым каналам связи.
Проанализируем влияние выбора операционной системы на сервере и рабочих местах на стабильность работы касс.
Сценарий 1: Сервер на Linux, рабочие места на Windows. Это оптимальный по стоимости и стабильности вариант. Серверная часть 1С и СУБД PostgreSQL работают под управлением производительной ОС Linux, экономя бюджет на лицензиях Microsoft. Кассиры при этом работают на привычной ОС Windows через Тонкий клиент 1С. Все драйверы ККМ устанавливаются в Windows стандартным образом, никаких сложностей с совместимостью не возникает.
Сценарий 2: Рабочие места кассиров переводятся на Linux. Если компьютеры кассиров работают под управлением отечественных дистрибутивов (Astra Linux, РЕД ОС, Alt Linux), администрирование усложняется. Рассмотрим важные шаги для настройки ККМ в среде Linux:
/dev/ttyACM0 или /dev/ttyUSB0). По умолчанию доступ к ним есть только у суперпользователя root. Чтобы пользователь 1С мог отправлять чеки на печать, его необходимо добавить в группу владельцев портов (обычно это dialout или uucp). Выполним в терминале команду:
sudo usermod -aG dialout имя_пользователя_linux
/etc/udev/rules.d/ создадим файл 99-kkm.rules со следующим содержимым:
KERNEL=="ttyACM[0-9]*", TAG+="udev-acl", OWNER="root", GROUP="dialout", MODE="0666"
libwebkit2gtk, выполнив соответствующую команду установки для вашего дистрибутива (например, sudo apt-get install libwebkit2gtk-4.0-37). Без нее окно настроек параметров ККТ в 1С может просто закрываться с критической ошибкой.Вне зависимости от выбранного варианта подключения ККМ к серверу 1С, придерживайтесь следующих правил для обеспечения непрерывности продаж: