Как организовать печать чеков в 1С на несколько ККТ в терминальном режиме с помощью KkmServer

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

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

Анализ проблемы: почему штатные средства не всегда эффективны

Рассмотрим ситуацию, типичную для многих компаний: на терминальном сервере работают N пользователей в одной информационной базе УТ 11. При этом в различных торговых точках установлены M кассовых аппаратов (например, модели РР-02Ф). Основные сложности, с которыми сталкиваются системные администраторы и программисты:

  1. Конфликты доступа: При попытке одновременной печати чека двумя пользователями на одну кассу через стандартный драйвер возникает ошибка "Порт занят".
  2. Особенности RDP: Проброс COM-портов или USB-устройств через терминальную сессию часто приводит к обрывам связи и зависанию службы печати.
  3. Смена пользователей: Необходимость постоянного открытия и закрытия кассовых смен под разными учетными записями 1С для каждой физической кассы.
  4. Ограничения оборудования: Если парк ККТ состоит не только из устройств АТОЛ, но и включает технику Штрих-М или РР-Электро (РР-02Ф), стандартные утилиты управления могут не иметь встроенных веб-серверов для удаленной работы.

Технологическая архитектура KkmServer как промежуточного звена

Проанализируем принцип работы KkmServer. Данное решение выступает в роли middleware (промежуточного слоя) между 1С и кассовым аппаратом. Вместо прямой работы с драйвером через БПО (библиотеку подключаемого оборудования), система отправляет высокоуровневые команды через HTTP/JSON запросы.

Разберем по шагам, что происходит при отправке чека:

  1. 1С формирует пакет данных в формате JSON.
  2. Этот пакет отправляется по протоколу HTTP на IP-адрес и порт, где запущена служба KkmServer.
  3. KkmServer принимает запрос, ставит его в очередь печати и последовательно транслирует низкоуровневые команды в протокол конкретной ККТ (в нашем случае РР-02Ф).
  4. После успешной печати сервер возвращает статус и данные фискального признака обратно в 1С.

Преимущества использования KkmServer для 1С

Проанализируем ключевые возможности, которые дает внедрение этого сервера в ИТ-контур предприятия:

1. Управление очередью печати. Это критически важная функция для высоконагруженных точек. Если несколько менеджеров одновременно нажимают кнопку "Пробить чек", KkmServer не выдаст ошибку блокировки порта, а корректно выстроит задания друг за другом.

2. Удаленная работа без VPN и проброса портов. Благодаря поддержке облачных прокси и возможности публикации сервера вовне, можно печатать чеки на кассе, находящейся в другом городе, имея лишь доступ к HTTP-порту сервера. Это полностью снимает проблемы нестабильности RDP-проброса.

3. Фоновая печать. Рассмотрим сценарий, когда пользователю 1С не нужно ждать физического окончания выхода чека из принтера. Программа отправляет JSON-пакет и мгновенно освобождает интерфейс для дальнейшей работы, что значительно повышает скорость обслуживания клиентов.

4. Поддержка различного оборудования. Хотя многие рекомендуют использовать АТОЛ из-за их штатного веб-сервера, KkmServer отлично справляется с протоколами Штрих-М, к которым относятся аппараты РР-02Ф. Он обеспечивает более стабильное соединение с "капризными" USB-интерфейсами за счет механизмов автоматического переподключения при обрывах связи.

Реализация взаимодействия: пример JSON-запроса

Для понимания того, как происходит общение между системами, посмотрим на пример структуры данных, которую генерирует 1С для передачи в KkmServer. Это позволяет гибко настраивать печать даже в нетиповых конфигурациях.


// Пример структуры команды для регистрации чека
{
  "Command": "RegisterCheck",
  "NumDevice": 0,
  "IsFiscalCheck": true,
  "TypeCheck": 0, // Продажа
  "CheckStrings": [
    {
      "Register": {
        "Name": "Товар тестовый",
        "Quantity": 1,
        "Price": 100.00,
        "Amount": 100.00,
        "Tax": 20
      }
    }
  ],
  "CashierName": "Иванов И.И.",
  "Payments": [
    {"TypeSign": 0, "Amount": 100.00} // Наличные
  ]
}

Использование подобных запросов позволяет абстрагироваться от версии БПО и платформы 1С, работая напрямую с веб-сервисом.

Нюансы настройки и эксплуатации

Несмотря на явные плюсы, разберем и возможные риски, которые необходимо учитывать системному администратору:

Выводы и рекомендации

Подводя итог, можно сказать, что KkmServer является отличным решением для задач "N пользователей и M касс", особенно когда используется оборудование, отличное от АТОЛ (например, РР-02Ф). Это позволяет:

  1. Стабилизировать работу ККТ в терминальных сессиях.
  2. Избавиться от проблем с блокировкой портов.
  3. Обеспечить высокую скорость работы пользователей за счет асинхронной печати.
  4. Упростить логирование и поиск причин "битых" чеков благодаря детальным логам JSON-запросов.

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

← На главную