В практике автоматизации розничной торговли часто возникает задача разделения потоков продаж на "официальные" (фискальные) и "внутренние" (управленческие). В конфигурациях, построенных на базе 1С:Розница 2.2 (включая 1С:Аптека), это требует понимания работы с торговым оборудованием и механизмами проведения документов. Рассмотрим подробно, как реализовать выбор режима печати чека в РМК, настроить корректное закрытие смены и организовать выборочный обмен данными с бухгалтерией.
Перед тем как приступать к программированию, проанализируем ситуацию. Нам необходимо, чтобы кассир в интерфейсе РМК мог нажать кнопку оплаты и выбрать: пробить полноценный фискальный чек или просто распечатать "товарный чек" (нефискальный документ) на том же самом аппарате Штрих-М. При этом важно, чтобы Z-отчет на кассовом аппарате содержал только фискальные суммы, а учет в 1С позволял разделять эти операции при выгрузке в 1С:Бухгалтерию 3.0.
Существует два основных подхода к решению этой задачи:
Кассы ККМ, привязанных к одному рабочему месту, но с разными настройками.Разберем, как работает печать на ККТ через БПО (Библиотеку подключаемого оборудования). Когда мы пробиваем обычный чек, 1С вызывает метод ФискализироватьЧек. Чтобы напечатать нефискальный документ на Штрих-М, нам нужно использовать методы печати текста.
Посмотрим на логику работы с драйвером. Для формирования нефискального чека на фискальном регистраторе последовательность команд должна быть следующей:
OpenNonFiscalDocument (или ОткрытьНефискальныйДокумент).PrintString (или ПечатьТекста).Проанализируем пример кода для работы с объектом драйвера:
// Пример упрощенной логики печати нефискального текста
ОбъектДрайвера.OpenNonFiscalDocument();
Для Каждого СтрокаТЧ Из СпТовары Цикл
ТекстСтроки = СтрокаТЧ.Номенклатура.Наименование + " " + СтрокаТЧ.Цена;
ОбъектДрайвера.StringForPrinting = ТекстСтроки;
ОбъектДрайвера.PrintString();
КонецЦикла;
ОбъектДрайвера.CloseNonFiscalDocument();
Важный момент: Не все современные онлайн-кассы (особенно с учетом законодательства Казахстана KZ) позволяют свободно печатать нефискальные документы без открытия смены или вне рамок фискального режима. Однако печать произвольного текста (слип-чеков) обычно поддерживается всеми моделями Штрих-М.
Этот метод позволяет избежать глубокого изменения кода драйверов. Разберем его по шагам:
1. Создание касс: В справочнике Кассы ККМ создаем две кассы. Первая — основная, с типом "Фискальный регистратор". Вторая — "управленческая", которую можно настроить как "Принтер чеков" (эмулятор) или привязать к тому же устройству, но с использованием другого драйвера (текстовая печать).
2. Доработка интерфейса РМК: В форме оплаты добавляем переключатель или две разные кнопки оплаты: "Оплата (ФИСК)" и "Оплата (НЕФИСК)".
3. Подмена кассы в документе: В момент проведения чека, если выбран нефискальный режим, программно меняем значение реквизита КассаККМ в документе ЧекККМ. Система увидит, что чек относится к кассе-эмулятору, и не будет пытаться вызвать методы фискализации. Вместо этого сработает стандартная печать товарного чека на принтер.
Выясним причину беспокойства автора темы по поводу Z-отчетов. Физический Z-отчет, который печатает сама касса при закрытии смены, формируется на основе данных из фискальной памяти (или ФН). Если мы печатали нефискальные чеки методом PrintString, суммы по ним не попадут в память ККТ и, следовательно, в железный Z-отчет. Это именно то, что требовалось заказчику для "регламентированного" учета.
В программе 1С ситуация иная. Документ ОтчетОРозничныхПродажах (ООРП) собирает данные из всех проведенных чеков. Чтобы разделить учет:
Рассмотрим подробнее реализацию требования по выборочному обмену поступлениями и продажами. Чтобы в Бухгалтерию предприятия попадали только нужные документы, выполним следующие шаги:
ПередаватьВБухгалтерию (тип Булево).
// Пример условия в правилах регистрации объектов
Если НЕ ПолучитьДополнительныйРеквизит(Объект, "ПередаватьВБухгалтерию") Тогда
Отказ = Истина;
КонецЕсли;
Проанализируем специфику оборудования, упомянутого в теме. Модели с индексом KZ работают с учетом местных налоговых требований. При использовании драйвера 4.9 следует помнить:
OpenNonFiscalDocument может требовать специфических прав доступа в настройках самого ФР.Подводя итог, можно сказать, что реализация двойного учета в 1С:Аптека возможна без критических изменений ядра системы. Наиболее стабильным вариантом будет использование механизма распределения продаж между двумя виртуальными кассами ККМ. Это позволит:
Отчет о розничных продажах.Для программиста, который "не шарит в оборудовании", этот путь наиболее безопасен, так как он опирается на стандартные объекты конфигурации 1С, а не на прямое управление портами и низкоуровневыми командами драйвера Штрих-М.