Как организовать работу нескольких компьютеров с одной кассой АТОЛ 30Ф?

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

В современной практике автоматизации часто возникает ситуация, когда одна онлайн-касса должна обслуживать несколько рабочих мест. Это актуально для небольших офисов, интернет-магазинов или точек выдачи заказов, где поток чеков распределен между несколькими сотрудниками. Особенно остро стоит вопрос, если основная конфигурация 1С является закрытой или не подлежит изменениям. Разберем подробно, как реализовать сетевой доступ к АТОЛ 30Ф, используя стандартные и альтернативные инструменты.

Вариант 1. Использование штатного Web-сервера АТОЛ

Начиная с 10-й версии драйвера ККТ, компания АТОЛ поставляет встроенный Web-сервер. Это решение позволяет превратить кассу в сетевое устройство, доступное по протоколу HTTP. Рассмотрим этот механизм подробнее.

Web-сервер представляет собой службу (daemon), написанную на Java, которая принимает входящие POST-запросы с заданиями в формате JSON. Проанализируем основные шаги по его настройке:

  1. Установка драйвера: На ПК, к которому касса подключена физически через USB, устанавливаем драйвер АТОЛ версии 10.x. При установке обязательно выбираем компонент «Web-сервер».
  2. Настройка службы: После установки необходимо запустить службу Atol ККТ Web-сервер. По умолчанию сервер слушает порт 16732.
  3. Конфигурация связи: Для АТОЛ 30Ф критически важна работа службы EthernetOverUSB (EoU). Убедимся, что в настройках драйвера канал связи установлен правильно, и служба EoU передает данные в ОФД, иначе касса может блокироваться при попытке печати.

Выясним причину возможных зависаний, о которых упоминают пользователи. При одновременной отправке большого количества чеков (более 20) Java-машина может испытывать дефицит памяти. Для оптимизации работы найдем файл конфигурации application.properties в папке с установленным сервером и попробуем увеличить лимиты выделяемой памяти. Также крайне важно использовать механизм GUID для каждого задания. Это позволит нам опрашивать статус чека, если ответ от сервера не пришел вовремя, избегая дублирования фискальных документов.

Пример структуры JSON-задания для печати чека может выглядеть так:


{
  "uuid": "550e8400-e29b-41d4-a716-446655440000",
  "request": [
    {
      "type": "sell",
      "taxationType": "osn",
      "ignoreNonFiscalPrint": true,
      "items": [
        {
          "type": "position",
          "name": "Товар 1",
          "price": 100.0,
          "quantity": 1,
          "amount": 100.0,
          "tax": { "type": "vat20" }
        }
      ],
      "payments": [
        { "type": "cash", "sum": 100.0 }
      ]
    }
  ]
}

Вариант 2. Прямое TCP/IP подключение через драйвер

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

На компьютере-сервере (где касса подключена физически) активируем в настройках драйвера службу fptr10_server. Проанализируем настройки на стороне клиента:

Вариант 3. Решение для неизменяемых конфигураций 1С

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

Разберем алгоритм интеграции через внешнюю компоненту:

  1. Создаем внешнюю обработку (.epf), которая будет перехватывать данные для печати.
  2. Используем метод 1С ПодключитьВнешнююКомпоненту для загрузки драйвера АТОЛ или реализации HTTP-клиента.
  3. Вместо вызова типовой процедуры печати чека, направляем данные по HTTP на адрес Web-сервера АТОЛ, развернутого на сервере.

Проанализируем пример кода для отправки запроса из 1С:


Соединение = Новый HTTPСоединение("192.168.1.100", 16732);
Запрос = Новый HTTPЗапрос("/requests");
Запрос.УстановитьТелоИзСтроки(ТекстJSON, КодировкаТекста.UTF8);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);

Если Ответ.КодСостояния = 201 Тогда
    // Задание принято, анализируем UUID
КонецЕсли;

Вариант 4. Стороннее программное обеспечение (KkmServer)

Существуют специализированные решения, такие как KkmServer. Это «прослойка» (middleware), которая устанавливается на компьютер с кассой и предоставляет удобный API для любых устройств в сети. Рассмотрим, почему это может быть эффективнее штатных средств:

Важные технические нюансы и ограничения

При организации совместной работы на АТОЛ 30Ф важно помнить о физических характеристиках устройства. Рассмотрим их подробнее:

Скорость печати и надежность: АТОЛ 30Ф — это модель начального уровня. У нее нет автоматического отрезчика, и скорость печати ниже, чем у старших моделей (например, 22ПТК или 25Ф). При интенсивной нагрузке из нескольких источников физическая очередь чеков может стать проблемой раньше, чем программные зависания.

Энергосбережение USB: Выясним одну из частых причин «отвала» кассы в сети. В настройках диспетчера устройств Windows для USB-концентратора, к которому подключена касса, необходимо снять галочку «Разрешить отключение этого устройства для экономии энергии». Если этого не сделать, при простое USB-порт «заснет», и Web-сервер потеряет связь с ККТ, что потребует перезапуска служб.

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

Таким образом, для реализации сетевой печати на АТОЛ 30Ф мы рекомендуем использовать Web-сервер АТОЛ 10 как наиболее бюджетный и современный способ, либо KkmServer для средних нагрузок с повышенными требованиями к стабильности очереди.

← На главную