Зачастую перед бизнесом встает задача оптимизации затрат на оборудование, и возникает естественное желание использовать одну кассу на два и более рабочих места (РМ). В рамках 1С:Розница такая задача технически выполнима, но сопряжена с рядом ограничений, связанных с архитектурой 1С и требованиями законодательства (54-ФЗ).
Для того чтобы 1С «увидела» одну кассу на разных компьютерах, необходимо обойти проблему монопольного захвата COM-порта или сетевого соединения. Рассмотрим основные методы решения:
1С:Розница существует механизм Подключаемое оборудование. При настройке в режиме Клиент-Сервер можно указать сетевой путь к ККТ, что позволяет нескольким экземплярам РМК обращаться к одному устройству.При реализации схемы «одна касса на два РМ» необходимо учитывать следующие критические моменты:
Конфликт блокировки: ККТ является монопольным устройством. Если первое рабочее место отправило команду на печать чека, второе рабочее место получит ошибку или будет ждать освобождения порта. В 1С:Розница при попытке одновременного обращения может возникнуть блокировка ККТ, что приведет к ошибке Оборудование занято.
Смена и фискальные данные: Согласно 54-ФЗ, кассовая смена открывается на конкретном фискальном накопителе (ФН). При использовании одной кассы 1С должна «понимать», что смена одна на весь аппарат. При смене рабочего места необходимо крайне осторожно подходить к операциям Открытие смены и Закрытие смены. Не рекомендуется допускать ситуацию, когда разные РМ пытаются параллельно управлять статусом смены.
Рассмотрим, как подготовить систему к работе:
Во-первых, определитесь с архитектурой подключения. Если вы используете оборудование, поддерживающее Ethernet, настраивайте подключение через TCP/IP напрямую в драйвере 1С. В настройках Кассы ККМ необходимо указать параметры подключения, идентичные для всех Рабочих мест.
Во-вторых, проработайте интерфейсную часть. Если планируется переключение кассы (например, до обеда работает одна, после обеда — другая), создайте удобный механизм выбора Кассы ККМ в РМК. Пример логики переключения может выглядеть так:
Процедура ПереключитьКассу(НоваяКасса)
// Проверка на закрытую смену
Если Не ПроверитьЗакрытиеСмены(ТекущаяКасса) Тогда
Предупреждение("Сначала закройте смену на текущем устройстве!");
Возврат;
КонецЕсли;
// Смена ссылки на ККТ в настройках текущего РМ
Константы.ОсновнаяКассаККМ.Установить(НоваяКасса);
КонецПроцедуры
Модели типа Меркурий 185Ф изначально проектировались как автономные кассы. Их протоколы обмена не рассчитаны на многопотоковую работу и серверные режимы современных драйверов 1С. При работе с маркированным товаром (Честный ЗНАК) возникают дополнительные риски: если связь с кассой прервется в момент передачи кода маркировки, статус товара может «зависнуть» в базе данных, что потребует ручного вмешательства программиста для исправления статусов ИС МП.
Если ваша задача — экономия, то использование программного сервера ККТ оправдано только при наличии современных ФР (например, АТОЛ или ШТРИХ-М с поддержкой Ethernet). В случае с устаревшими моделями:
Помните, что любая программная «сшивка» — это обход штатной логики 1С, который может перестать работать после очередного обновления платформы или драйверов оборудования.