Как решить проблему блокировки сетевой кассы АТОЛ (TCP/IP) при работе нескольких пользователей в 1С?

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

При автоматизации розничной торговли часто возникает ситуация, когда одну контрольно-кассовую технику (ККТ) необходимо использовать на нескольких рабочих местах. В случае с кассами АТОЛ, подключенными по протоколу TCP/IP, пользователи регулярно сталкиваются с проблемой: если один человек пробил чек или просто открыл сеанс связи с кассой, для всех остальных устройство становится «заблокированным». При попытке печати возникает ошибка «Порт занят» или «Нет связи». Рассмотрим подробнее, почему это происходит и как настроить стабильную коллективную работу.

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

Прежде всего, проанализируем ситуацию с технической стороны. Большинство современных моделей ККТ АТОЛ (особенно на платформе 2.5) имеют аппаратное ограничение: сетевой модуль кассы поддерживает только одно активное TCP-соединение (обычно по порту 5555). Как только драйвер 1С на одном из компьютеров устанавливает связь с IP-адресом кассы, соединение считается установленным, и касса «слушает» только этот источник. Любые попытки других пользователей подключиться будут отклоняться на уровне сетевого стека устройства до тех пор, пока первый пользователь не разорвет сессию.

Разберем три основных способа решения этой проблемы: от простой настройки параметров 1С до внедрения специализированного промежуточного ПО.

Способ 1: Использование «АТОЛ: Сервер ККТ» (Web-сервер)

Это самый надежный и рекомендуемый производителем способ для многопользовательской среды. Суть метода заключается в том, что между 1С и кассой появляется «посредник» — специальная служба.

Рассмотрим алгоритм настройки по шагам:

  1. Выбираем компьютер, который будет выполнять роль сервера (это может быть сервер 1С или один из компьютеров кассиров, который включен постоянно).
  2. Устанавливаем на него актуальный драйвер АТОЛ ДТО 10 и запускаем службу Atol_KKT_HTTP_Server.
  3. В интерфейсе управления сервером ККТ (обычно доступен через браузер по адресу localhost:16730) добавляем нашу кассу, указывая её реальный IP-адрес и порт.
  4. Теперь в настройках 1С на всех рабочих местах в разделе «Подключаемое оборудование» мы указываем не прямой IP кассы, а IP-адрес нашего сервера ККТ и протокол HTTP.

Преимущества этого метода:

Способ 2: Настройка режима разделения ресурсов в драйвере 1С

Если по каким-то причинам установка сервера ККТ невозможна, проанализируем стандартные настройки драйвера в самой 1С. В типовых конфигурациях, таких как 1С:Управление торговлей 11.4 или 1С:Розница, реализован механизм динамического подключения.

Посмотрим на важные параметры в карточке торгового оборудования:

Проанализируем программный аспект. Типовые механизмы 1С при печати чека работают по следующему принципу:


// Упрощенная логика работы типовой обработки
МенеджерОборудования.Подключить(ИдентификаторУстройства); 
// В этот момент порт 5555 захватывается
Результат = МенеджерОборудования.ВыполнитьКоманду("ПечатьЧека", ПараметрыЧека);
МенеджерОборудования.Отключить(ИдентификаторУстройства); 
// Порт освобождается для других

Проблема возникает, если у одного из пользователей открыта форма, которая принудительно держит соединение (например, форма настройки или форма смены, если в коде допущена ошибка). Выясним причину блокировки: если сессию пользователя закрыть и касса «оживает», значит, какой-то процесс в 1С не вызывает метод Отключить().

Способ 3: Настройка параметров Keep-Alive и таймаутов в Windows

Иногда касса остается заблокированной даже после того, как пользователь закрыл 1С. Это происходит из-за «зависших» TCP-сессий. Операционная система считает, что соединение еще активно, и не позволяет переподключиться.

Для решения этой проблемы рекомендуется:

  1. В настройках сетевой карты кассы (через веб-интерфейс самой ККТ) сократить таймауты неактивности.
  2. Если используется Платформа 5.0, обновить прошивку кассы до последней стабильной версии. В новых прошивках работа сетевого стека значительно оптимизирована, и касса умеет быстрее сбрасывать некорректно завершенные соединения.
  3. Использовать параметр Keep-Alive в настройках драйвера АТОЛ, чтобы драйвер периодически проверял актуальность связи и корректно закрывал сокет при обрыве.

Сравнение Платформы 2.5 и 5.0

Проанализируем влияние версии платформы ККТ на стабильность работы. На старой Платформе 2.5 сетевой обмен был довольно капризным: любая микропауза в сети могла привести к тому, что драйвер терял связь, а касса продолжала считать порт занятым. На Платформе 5.0 архитектура работы с сетью была переработана. Если вы используете сетевое подключение для группы пользователей, переход на Платформу 5.0 вместе с использованием Сервера ККТ является «золотым стандартом», который практически исключает простои кассовой зоны.

Резюме и рекомендации

Подводя итог, если вы столкнулись с блокировкой кассы АТОЛ в 1С, выполните следующие действия:

Использование веб-сервера также позволяет легко печатать чеки из мобильных приложений или облачных версий 1С, что делает вашу систему более гибкой и масштабируемой.

← На главную