Можно ли без доработки 1С:Розница 2.3 подключить одну сетевую ККТ на два рабочих места?

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

В сфере розничной торговли часто возникает задача оптимизации расходов на кассовое оборудование. Покупка отдельного фискального регистратора (ККТ) для каждого кассира может быть экономически нецелесообразной, особенно если поток клиентов распределен неравномерно или рабочие места находятся в непосредственной близости друг от друга. В этой статье мы подробно рассмотрим, как решить задачу совместного использования одного сетевого фискального регистратора (например, семейства «Штрих-М», «Элвес» или «Атол») на двух рабочих местах в программе 1С:Розница 2.3 без программирования и изменения типовой конфигурации.

В чем заключается главная архитектурная сложность в 1С?

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

В конфигурации 1С:Розница 2.3 любое подключаемое оборудование жестко привязано к справочнику Рабочие места. Каждому физическому компьютеру программа автоматически присваивает уникальный идентификатор (он формируется на основе сетевого имени ПК, данных пользователя операционной системы и внутренних параметров Windows).

Если мы настроим два независимых рабочих места (например, ПК-1 и ПК-2), система потребует завести для каждого из них отдельную карточку в справочнике Кассы ККМ. Здесь мы и сталкиваемся с конфликтом кассовых смен:

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

Выяснив первопричину проблемы, рассмотрим два практических и проверенных способа обойти это ограничение стандартными средствами.

Способ А: Использование единого Рабочего места в 1С (Штатный обход)

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

Для реализации этого метода нам нужно синхронизировать уникальный идентификатор клиента (ClientID) на обоих компьютерах. Проанализируем по шагам, как это сделать:

  1. Настройте подключение ККТ по сети (TCP/IP) на первом компьютере (ПК-1) в стандартном режиме и убедитесь, что чеки пробиваются.
  2. Закройте 1С на обоих компьютерах.
  3. На ПК-1 перейдите в папку хранения настроек платформы 1С. Обычно этот файл располагается по следующему пути:
    C:\Users\<Имя_Пользователя>\AppData\Roaming\1C\1cv8\ (или в подкаталогах локальных настроек).
    Нам нужен конфигурационный файл с расширением .pfl (чаще всего это 1cv8.pfl или 1cv8u.pfl).
  4. Внутри этого файла хранится зашифрованный параметр, отвечающий за генерацию ClientID рабочего места. Ниже представлен пример того, как выглядит структура хранения параметров в файле:

{
{"ConnectUID",
{"u", "8f89bc21-01da-4589-9bca-c723f81e39a2"}
},
{"MachineUID",
{"u", "d3b07384-d113-4415-a6a1-a678b88d223c"}
}
}
  1. Скопируйте этот файл настроек с ПК-1 и перенесите его на ПК-2 в аналогичную директорию (с заменой существующего файла). Перед заменой обязательно сделайте резервную копию оригинального файла на ПК-2!
  2. Запустите 1С на ПК-2. Теперь программа определит это рабочее место точно так же, как и ПК-1. Подключение к ККТ на ПК-2 настраивается по тому же сетевому IP-адресу кассы.

Важное ограничение метода: Если к компьютерам подключено другое торговое оборудование, которое должно работать раздельно (например, разные банковские терминалы эквайринга или разные модели сканеров штрихкодов), этот способ не подойдет. Так как рабочее место в системе теперь одно на двоих, все настройки периферии станут общими для обоих компьютеров.

Способ Б: Использование системных утилит драйвера (Сервер ККТ)

Если нам необходимо сохранить независимость рабочих мест (например, для разделения остального оборудования), лучшим решением станет вынос взаимодействия с кассой на уровень операционной системы с использованием специализированного ПО разработчиков ККТ.

Разберем, как это реализовать для аппаратов семейства «Штрих-М» / «Элвес»:

  1. В комплекте поставки драйверов ККТ найдите и установите утилиту «Сервер ФР» (производства Штрих-М).
  2. Подключите ККТ к одному из компьютеров (например, по USB или COM-порту) или напрямую в локальную сеть. Запустите службу «Сервер ФР» на этом компьютере. Данная утилита транслирует обращения к кассе по сети.
  3. На обоих компьютерах в настройках торгового оборудования 1С укажите тип подключения не к локальному порту, а выберите сетевое подключение через запущенный «Сервер ФР», указав его IP-адрес и порт.

Альтернативным и крайне стабильным решением является использование стороннего программного обеспечения, например, KkmServer. Данная программа работает как веб-служба:

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

Настройка таймаута: как избежать зависаний и ошибок «Порт занят»

Одновременная отправка чеков с двух компьютеров — ситуация стандартная. Если кассиры нажмут кнопку оплаты одновременно с разницей в доли секунды, велика вероятность возникновения ошибки блокировки порта драйвера.

Чтобы исключить «фризы» работы интерфейса и ошибки печати, выполните следующие настройки в свойствах подключения ККТ на обоих компьютерах:

  1. Откройте параметры свойства драйвера кассы (через «Тест драйвера» или непосредственно в форме настройки оборудования в 1С).
  2. Найдите параметр «Таймаут» (Timeout). По умолчанию производители часто устанавливают значение в районе 1000–3000 мс (1–3 секунды).
  3. Увеличьте это значение до 5000–10000 мс (5–10 секунд).

Рассмотрим, как это работает на практике. Если ККТ в данный момент занята печатью чека для первого компьютера, второй компьютер при отправке запроса не выдаст моментальную ошибку «Порт занят» или «Касса не отвечает». Благодаря увеличенному таймауту драйвер второго компьютера перейдет в режим ожидания ответа. Как только первый чек будет полностью напечатан и порт освободится, касса мгновенно и без сбоев начнет печать второго чека. Кассир на втором рабочем месте заметит лишь незначительную паузу в 1–2 секунды перед началом печати чека.

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

← На главную