При ведении розничной торговли на специальных налоговых режимах без применения кассового аппарата или при использовании нефискального принтера чеков пользователи часто сталкиваются со следующей проблемой: кассиру в течение дня требуется провести промежуточную сверку наличности и проанализировать продажи за текущую смену. Однако при вызове стандартной функции печати отчета без гашения (Х-отчета) из рабочего места кассира (РМК) программа выдает служебное сообщение о печати чека, но сам отчет на печать или на экран не выводится.
Выясним причину такого поведения типового функционала и разберем варианты решения задачи без предоставления кассиру полных административных прав.
Проанализируем механизм формирования фискальных отчетов. В фискальных регистраторах (ККТ) Х-отчет (отчет без гашения) рассчитывается аппаратно внутри защищенного модуля памяти устройства. Метод обработки обслуживания оборудования ПечатьОтчетаБезГашения лишь передает низкоуровневую команду принтеру и возвращает статус выполнения. Если реального фискального регистратора нет, а используется типовой драйвер-эмулятор или принтер чеков Windows, эмулятор не содержит внутренних счетчиков смены и не формирует расчетные данные. В результате команда подтверждается программно, но печатная форма не создается.
При этом кассир работает под профилем с ограниченными правами (роль Кассир), не имея прямого доступа к типовым отчетам и документам программы для самостоятельного подсчета итогов.
Разберем по шагам быстрый способ предоставить кассиру доступ к информации о продажах и остатках денег в кассе без необходимости влезать в программный код конфигурации.
Продажи, нажмем правой кнопкой мыши и выберем пункт Сохранить как внешнюю обработку, отчет....ДенежныеСредстваККМ (или ДвиженияДенежныхСредствККМ).F11).Такой сценарий позволяет кассиру нажать F11, открыть отчет, сверить остаток денежных средств и вернуться обратно в РМК.
Чтобы исключить необходимость выхода кассира из окна РМК в интерфейс программы, подключим специализированную обработку непосредственно к интерфейсу кассы.
Рассмотрим подробнее техническую реализацию нефискального X-отчета. Для корректного отображения данных кассиру с ограниченными правами запрос в модуле отчета или обработки обслуживания должен выполняться с обходом ограничений RLS (прав доступа на уровне записей).
Посмотрим на пример логики формирования данных в модуле обработки:
// Включаем привилегированный режим для чтения регистров под правами кассира
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Движения.КассаККМ КАК КассаККМ,
| СУММА(Движения.Сумма) КАК ОстатокДС
|ИЗ
| РегистрНакопления.ДенежныеСредстваККМ.Остатки(&ТекущаяДата, КассаККМ = &ТекущаяКасса) КАК Движения
|СГРУППИРОВАТЬ ПО
| Движения.КассаККМ";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
Запрос.УстановитьПараметр("ТекущаяКасса", ПараметрыСеанса.ТекущаяКассаККМ);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ТекущийОстаток = Выборка.ОстатокДС;
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
При реализации собственного X-отчета источниками данных для расчета служат:
ДенежныеСредстваККМ — для получения наличного остатка с учетом внесенных и изъятых сумм.ЧекККМ со статусом текущей смены (до формирования документа ОтчетОРозничныхПродажах) — для подсчета общей суммы продаж, возвратов и разделения оплат по типам (наличные, банковские карты).Если доработать функцию ПечатьОтчетаБезГашения в обработке обслуживания торгового оборудования (эмуляторе), то при нажатии штатной кнопки Отчет без гашения в РМК программа сформирует табличный документ и сразу выведет его на нефискальный принтер чеков или на экран.