В этой статье разберем нетипичную, но встречающуюся на практике ситуацию: на одном компьютере установлены две информационные базы 1С, и к ним подключен один кассовый аппарат (ККМ). Такая схема могла успешно работать годами, но после обновления одной из конфигураций перестала. Чеки пробиваются только в той базе, в которой была открыта смена, а вторая база выдает ошибку.
Проанализируем, почему это происходит и какие существуют пути решения этой проблемы, от технических "хитростей" до правильной организации бизнес-процессов.
Основной вопрос, который возникает: почему раньше все работало, а после обновления — сломалось? Ответ кроется в изменении механизмов работы с торговым оборудованием в новых версиях 1С.
Раньше, в конфигурациях постарше (например, 1С:Бухгалтерия 2.0), процедура открытия смены могла быть чисто программной. Это означает, что при выполнении операции "Открыть смену" в 1С программа делала соответствующую запись в своих регистрах, но не всегда отправляла физическую команду на саму ККМ. Касса оставалась "свободной" и не знала, что для одной из программ смена уже "открыта".
Это позволяло реализовать следующую схему:
После того как старая база была обновлена до версии 3.0, обе программы стали работать с кассой по единому, более строгому протоколу. Теперь каждая из них при открытии смены пытается монопольно "захватить" COM-порт, к которому подключена ККМ, и отправить на нее команду. Как только одна программа это сделала, для второй касса становится занята, и она справедливо сообщает, что смена не открыта (так как она была открыта из другого сеанса).
Таким образом, проблема не в поломке, а в переходе на корректный, стандартный механизм работы с оборудованием, который не предусматривает одновременное управление одной ККМ из разных приложений.
Рассмотрим несколько подходов к решению этой задачи, от наименее до наиболее рекомендуемого.
Этот способ заключается в том, чтобы искусственно воспроизвести старое поведение системы с помощью программиста 1С. Суть доработки в следующем: в одной из баз (которую мы условно назовем "неглавной") нужно изменить код конфигурации так, чтобы операция открытия смены не отправляла команду на ККМ, а только имитировала это действие внутри 1С.
Плюсы:
Минусы:
Этот вариант можно рассматривать как временную меру, если другие способы по каким-то причинам неприменимы.
Для решения проблемы одновременного доступа к одному устройству существуют программы-посредники, которые называют серверами оборудования или мультиплексорами COM-портов.
Принцип работы следующий:
Такие решения могут быть платными, как, например, упомянутый в обсуждении "Модуль ККТ". Они требуют дополнительной настройки, но позволяют организовать совместную работу более цивилизованно, чем доработка конфигурации.
Плюсы:
Минусы:
Самым верным и стабильным решением является отказ от самой идеи использования одной ККМ из двух разных учетных систем. Проблему нужно решать не на техническом, а на организационном уровне.
Вариант А: Перенос всех кассовых операций в одну базу данных.
Это лучший вариант с точки зрения целостности учета и простоты поддержки. Если организация одна, то и все операции по ней логично вести в одной базе.
Как разделить потоки платежей в одной базе?
Этот подход полностью устраняет технические конфликты и, что самое важное, решает проблему со сведением данных. Z-отчет с ККМ всегда будет сходиться с данными в единой базе, что исключает ошибки и упрощает проверки.
Вариант Б: Покупка второй ККМ.
Если по каким-то веским причинам ведение операций в двух разных базах является абсолютной необходимостью, то самым простым и надежным техническим решением будет покупка второго кассового аппарата. Каждая база будет работать со своим выделенным устройством. Это полностью исключит конфликты доступа и позволит вести учет независимо.
Подведем итог. Хотя технически можно заставить одну ККМ работать с двумя базами 1С, это всегда будет компромиссное и потенциально проблемное решение. Мы настоятельно рекомендуем пересмотреть сам бизнес-процесс и перейти к ведению всех кассовых операций в единой информационной базе. Это сделает вашу учетную систему более надежной, прозрачной и простой в обслуживании.