Как настроить работу одного ККТ Атол 55Ф с двумя базами 1С: Розница 8.3 и ТиС 7.7 на одном рабочем месте

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

В практике автоматизации розничной торговли часто возникает ситуация, когда на одном рабочем месте необходимо совместить работу двух информационных баз. Например, когда алкогольная продукция учитывается в современной 1С:Розница 8.3, а сопутствующие товары или оптовые отгрузки продолжают вестись в проверенной временем 1С 7.7 Торговля и Склад (ТиС). При этом бюджет ограничен, и покупка второго фискального регистратора (ККТ) нецелесообразна. Рассмотрим подробнее, как заставить обе системы бесконфликтно работать с одним аппаратом Атол 55Ф.

Анализ основных технических проблем

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

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

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

Решение 1: Настройка драйвера для совместного доступа

Чтобы обе базы могли отправлять чеки на печать, нам нужно научить их освобождать соединение с кассой сразу после завершения операции. Выясним причину блокировок в настройках драйвера Атол 10.х или 8.х.

В 1С 8.3 Розница перейдем в раздел Администрирование — Подключаемое оборудование. В настройках вашего ККТ Атол установим флаг «Отключаться после каждой операции» (в некоторых версиях — «Освобождать порт»). Теперь 1С будет подключаться к кассе только на те несколько секунд, пока печатается чек, и сразу отпускать устройство.

В 1С 7.7 ТиС логика работы с внешней компонентой (обычно FPrnM1C.dll или аналогичные) должна быть аналогичной. Если используется старая обработка обслуживания, убедимся, что метод DeviceEnabled = 0 вызывается сразу после печати чека.

Решение 2: Программный обход открытия и закрытия смен

Самый сложный момент — это процедура открытия и закрытия смены. Касса Атол позволяет пробивать чеки, если смена уже открыта (даже другой программой), но 1С требует, чтобы в её внутренней базе документ КассоваяСмена также имел статус «Открыта».

Рассмотрим вариант, когда «главной» базой является 1С:Розница 8.3 (здесь открывается и закрывается реальная смена на ККТ), а 1С 7.7 работает как «ведомая».

Для 1С 8.3, чтобы принудительно открыть смену в базе данных без обращения к фискальному регистратору (если, например, физически она уже открыта из 7.7), можно использовать следующий фрагмент кода:


Запрос = Новый Запрос;
Запрос.УстановитьПараметр("КассаККМ", КассаККМ);
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Запрос.УстановитьПараметр("СменаОткрыта", Перечисления.СтатусыКассовойСмены.Открыта);
Запрос.Текст = "ВЫБРАТЬ
               | КассоваяСмена.Ссылка КАК Ссылка
               |ИЗ
               | Документ.КассоваяСмена КАК КассоваяСмена
               |ГДЕ
               | КассоваяСмена.КассаККМ = &КассаККМ
               | И НАЧАЛОПЕРИОДА(КассоваяСмена.Дата, ДЕНЬ) = НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)
               | И КассоваяСмена.Статус = &СменаОткрыта";

Выборка = Запрос.Выполнить.Выбрать();
Если Выборка.Следующий() Тогда
    ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
    ДокОбъект.ФискальноеУстройство = КассаККМ.ПодключаемоеОборудование;
    ДокОбъект.Записать();
Иначе
    // Если смена в базе не найдена, создаем её программно, минуя драйвер ККТ
    НоваяСмена = Документы.КассоваяСмена.СоздатьДокумент();
    НоваяСмена.Дата = ТекущаяДата();
    НоваяСмена.КассаККМ = КассаККМ;
    НоваяСмена.Статус = Перечисления.СтатусыКассовойСмены.Открыта;
    НоваяСмена.Записать();
КонецЕсли;

Проанализируем ситуацию для 1С 7.7 ТиС. В этой конфигурации за работу с кассой отвечает обработка обслуживания (обычно fr_comm.ert или atoldrv.ert). Найдем в коде функцию ОткрытьСмену() и ЗакрытьСмену(). Нам необходимо закомментировать прямой вызов метода драйвера OpenSession() и CloseSession(), оставив только изменение внутреннего состояния базы 1С. В этом случае ТиС будет считать, что смена открыта, и позволит пробивать чеки.

Решение 3: Использование Web-сервера АТОЛ (современный подход)

Если вы используете 10-ю версию драйвера АТОЛ, наиболее надежным способом будет настройка через Web-сервер. В этом случае драйвер запускается как служба, которая сама управляет очередью чеков. Программы 1С подключаются к кассе не по COM-порту, а по протоколу HTTP (через локальный IP-адрес 127.0.0.1).

Посмотрим на преимущества этого метода:

Важные замечания по учету и ФФД

Важный момент: При закрытии смены (Z-отчет) в 1С:Розница будет распечатан бумажный отчет с общей выручкой по кассе (из ФН). Однако документ Отчет о розничных продажах в самой 1С:Розница будет содержать только те товары, которые были проданы именно через эту базу. Продажи из 1С 7.7 в этот отчет не попадут.

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

  1. Сначала закрываем смену в 1С 7.7 (в режиме «без снятия Z-отчета» или с подавлением команды ККТ), чтобы база зафиксировала продажи и списала остатки со складов.
  2. Затем закрываем смену в 1С 8.3 с выполнением реальной команды закрытия на ККТ.

Юридический аспект: Убедитесь, что обе базы используют одинаковый формат фискальных данных (рекомендуется ФФД 1.2 для актуальных версий Атол 55Ф). Если одна база будет передавать старые теги, а другая новые, касса может заблокироваться до конца смены из-за конфликта форматов. Рекомендуем обновить компоненты печати в 1С 7.7 до актуальных версий, поддерживающих работу с онлайн-кассами по новым требованиям.

Таким образом, объединение двух баз на одном устройстве вполне реально. Оптимальным выбором будет использование Web-сервера драйвера АТОЛ и небольшая корректировка кода в части управления статусами смен в конфигурациях 1С.

← На главную