В практике автоматизации розничной торговли часто возникает ситуация, когда на одном рабочем месте необходимо совместить работу двух информационных баз. Например, когда алкогольная продукция учитывается в современной 1С:Розница 8.3, а сопутствующие товары или оптовые отгрузки продолжают вестись в проверенной временем 1С 7.7 Торговля и Склад (ТиС). При этом бюджет ограничен, и покупка второго фискального регистратора (ККТ) нецелесообразна. Рассмотрим подробнее, как заставить обе системы бесконфликтно работать с одним аппаратом Атол 55Ф.
Прежде чем переходить к настройке, проанализируем ситуацию и выделим два критических барьера, которые мешают совместной работе:
Разберем по шагам, как решить эти проблемы с использованием программных и административных методов.
Чтобы обе базы могли отправлять чеки на печать, нам нужно научить их освобождать соединение с кассой сразу после завершения операции. Выясним причину блокировок в настройках драйвера Атол 10.х или 8.х.
В 1С 8.3 Розница перейдем в раздел Администрирование — Подключаемое оборудование. В настройках вашего ККТ Атол установим флаг «Отключаться после каждой операции» (в некоторых версиях — «Освобождать порт»). Теперь 1С будет подключаться к кассе только на те несколько секунд, пока печатается чек, и сразу отпускать устройство.
В 1С 7.7 ТиС логика работы с внешней компонентой (обычно FPrnM1C.dll или аналогичные) должна быть аналогичной. Если используется старая обработка обслуживания, убедимся, что метод DeviceEnabled = 0 вызывается сразу после печати чека.
Самый сложный момент — это процедура открытия и закрытия смены. Касса Атол позволяет пробивать чеки, если смена уже открыта (даже другой программой), но 1С требует, чтобы в её внутренней базе документ КассоваяСмена также имел статус «Открыта».
Рассмотрим вариант, когда «главной» базой является 1С:Розница 8.3 (здесь открывается и закрывается реальная смена на ККТ), а 1С 7.7 работает как «ведомая».
Для 1С 8.3, чтобы принудительно открыть смену в базе данных без обращения к фискальному регистратору (если, например, физически она уже открыта из 7.7), можно использовать следующий фрагмент кода:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("КассаККМ", КассаККМ);
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Запрос.УстановитьПараметр("СменаОткрыта", Перечисления.СтатусыКассовойСмены.Открыта);
Запрос.Текст = "ВЫБРАТЬ
| КассоваяСмена.Ссылка КАК Ссылка
|ИЗ
| Документ.КассоваяСмена КАК КассоваяСмена
|ГДЕ
| КассоваяСмена.КассаККМ = &КассаККМ
| И НАЧАЛОПЕРИОДА(КассоваяСмена.Дата, ДЕНЬ) = НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)
| И КассоваяСмена.Статус = &СменаОткрыта";
Выборка = Запрос.Выполнить.Выбрать();
Если Выборка.Следующий() Тогда
ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
ДокОбъект.ФискальноеУстройство = КассаККМ.ПодключаемоеОборудование;
ДокОбъект.Записать();
Иначе
// Если смена в базе не найдена, создаем её программно, минуя драйвер ККТ
НоваяСмена = Документы.КассоваяСмена.СоздатьДокумент();
НоваяСмена.Дата = ТекущаяДата();
НоваяСмена.КассаККМ = КассаККМ;
НоваяСмена.Статус = Перечисления.СтатусыКассовойСмены.Открыта;
НоваяСмена.Записать();
КонецЕсли;
Проанализируем ситуацию для 1С 7.7 ТиС. В этой конфигурации за работу с кассой отвечает обработка обслуживания (обычно fr_comm.ert или atoldrv.ert). Найдем в коде функцию ОткрытьСмену() и ЗакрытьСмену(). Нам необходимо закомментировать прямой вызов метода драйвера OpenSession() и CloseSession(), оставив только изменение внутреннего состояния базы 1С. В этом случае ТиС будет считать, что смена открыта, и позволит пробивать чеки.
Если вы используете 10-ю версию драйвера АТОЛ, наиболее надежным способом будет настройка через Web-сервер. В этом случае драйвер запускается как служба, которая сама управляет очередью чеков. Программы 1С подключаются к кассе не по COM-порту, а по протоколу HTTP (через локальный IP-адрес 127.0.0.1).
Посмотрим на преимущества этого метода:
Важный момент: При закрытии смены (Z-отчет) в 1С:Розница будет распечатан бумажный отчет с общей выручкой по кассе (из ФН). Однако документ Отчет о розничных продажах в самой 1С:Розница будет содержать только те товары, которые были проданы именно через эту базу. Продажи из 1С 7.7 в этот отчет не попадут.
Следовательно, процедуру закрытия смены нужно проводить в обеих базах по очереди:
Юридический аспект: Убедитесь, что обе базы используют одинаковый формат фискальных данных (рекомендуется ФФД 1.2 для актуальных версий Атол 55Ф). Если одна база будет передавать старые теги, а другая новые, касса может заблокироваться до конца смены из-за конфликта форматов. Рекомендуем обновить компоненты печати в 1С 7.7 до актуальных версий, поддерживающих работу с онлайн-кассами по новым требованиям.
Таким образом, объединение двух баз на одном устройстве вполне реально. Оптимальным выбором будет использование Web-сервера драйвера АТОЛ и небольшая корректировка кода в части управления статусами смен в конфигурациях 1С.