Как настроить работу одной ККМ с двумя базами 1С на одном компьютере?

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

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

Проанализируем, почему это происходит и какие существуют пути решения этой проблемы, от технических "хитростей" до правильной организации бизнес-процессов.

Анализ ситуации: почему схема перестала работать?

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

Раньше, в конфигурациях постарше (например, 1С:Бухгалтерия 2.0), процедура открытия смены могла быть чисто программной. Это означает, что при выполнении операции "Открыть смену" в 1С программа делала соответствующую запись в своих регистрах, но не всегда отправляла физическую команду на саму ККМ. Касса оставалась "свободной" и не знала, что для одной из программ смена уже "открыта".

Это позволяло реализовать следующую схему:

  1. Пользователь открывает смену в старой 1С:Бухгалтерии 2.0. Смена открывается только внутри программы.
  2. Далее пользователь открывает смену в новой 1С:Бухгалтерии 3.0. Эта программа уже по современным стандартам отправляет команду на ККМ, и смена открывается на физическом устройстве.
  3. После этого чеки можно было печатать из обеих баз, так как ККМ была в рабочем состоянии.

После того как старая база была обновлена до версии 3.0, обе программы стали работать с кассой по единому, более строгому протоколу. Теперь каждая из них при открытии смены пытается монопольно "захватить" COM-порт, к которому подключена ККМ, и отправить на нее команду. Как только одна программа это сделала, для второй касса становится занята, и она справедливо сообщает, что смена не открыта (так как она была открыта из другого сеанса).

Таким образом, проблема не в поломке, а в переходе на корректный, стандартный механизм работы с оборудованием, который не предусматривает одновременное управление одной ККМ из разных приложений.

Варианты решения проблемы

Рассмотрим несколько подходов к решению этой задачи, от наименее до наиболее рекомендуемого.

Решение 1: Возврат к старому поведению через доработку конфигурации

Этот способ заключается в том, чтобы искусственно воспроизвести старое поведение системы с помощью программиста 1С. Суть доработки в следующем: в одной из баз (которую мы условно назовем "неглавной") нужно изменить код конфигурации так, чтобы операция открытия смены не отправляла команду на ККМ, а только имитировала это действие внутри 1С.

Плюсы:

Минусы:

Этот вариант можно рассматривать как временную меру, если другие способы по каким-то причинам неприменимы.

Решение 2: Использование специализированного ПО (мультиплексоры)

Для решения проблемы одновременного доступа к одному устройству существуют программы-посредники, которые называют серверами оборудования или мультиплексорами COM-портов.

Принцип работы следующий:

  1. На компьютер устанавливается специальная программа-сервер.
  2. Физически ККМ подключается к этому серверу.
  3. Обе базы 1С настраиваются на работу не с реальным COM-портом кассы, а с виртуальным портом, созданным этой программой.
  4. Все команды от обеих баз (открыть смену, напечатать чек) поступают в программу-сервер.
  5. Сервер выстраивает эти команды в единую очередь и последовательно отправляет их на ККМ, управляя доступом и предотвращая конфликты.

Такие решения могут быть платными, как, например, упомянутый в обсуждении "Модуль ККТ". Они требуют дополнительной настройки, но позволяют организовать совместную работу более цивилизованно, чем доработка конфигурации.

Плюсы:

Минусы:

Решение 3: Реорганизация бизнес-процесса (наиболее правильный способ)

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

Вариант А: Перенос всех кассовых операций в одну базу данных.

Это лучший вариант с точки зрения целостности учета и простоты поддержки. Если организация одна, то и все операции по ней логично вести в одной базе.

Как разделить потоки платежей в одной базе?

Этот подход полностью устраняет технические конфликты и, что самое важное, решает проблему со сведением данных. Z-отчет с ККМ всегда будет сходиться с данными в единой базе, что исключает ошибки и упрощает проверки.

Вариант Б: Покупка второй ККМ.

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

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

← На главную