Как сформировать X-отчет и узнать остаток в кассе в 1С:Розница без фискального регистратора

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

При ведении розничной торговли на специальных налоговых режимах без применения кассового аппарата или при использовании нефискального принтера чеков пользователи часто сталкиваются со следующей проблемой: кассиру в течение дня требуется провести промежуточную сверку наличности и проанализировать продажи за текущую смену. Однако при вызове стандартной функции печати отчета без гашения (Х-отчета) из рабочего места кассира (РМК) программа выдает служебное сообщение о печати чека, но сам отчет на печать или на экран не выводится.

Выясним причину такого поведения типового функционала и разберем варианты решения задачи без предоставления кассиру полных административных прав.

Почему стандартный X-отчет не формируется в нефискальном режиме

Проанализируем механизм формирования фискальных отчетов. В фискальных регистраторах (ККТ) Х-отчет (отчет без гашения) рассчитывается аппаратно внутри защищенного модуля памяти устройства. Метод обработки обслуживания оборудования ПечатьОтчетаБезГашения лишь передает низкоуровневую команду принтеру и возвращает статус выполнения. Если реального фискального регистратора нет, а используется типовой драйвер-эмулятор или принтер чеков Windows, эмулятор не содержит внутренних счетчиков смены и не формирует расчетные данные. В результате команда подтверждается программно, но печатная форма не создается.

При этом кассир работает под профилем с ограниченными правами (роль Кассир), не имея прямого доступа к типовым отчетам и документам программы для самостоятельного подсчета итогов.

Способ 1. Подключение внешних отчетов с переходом в режим менеджера

Разберем по шагам быстрый способ предоставить кассиру доступ к информации о продажах и остатках денег в кассе без необходимости влезать в программный код конфигурации.

  1. Выгрузка типовых отчетов во внешние файлы. Зайдем в базу данных через Конфигуратор под учетной записью администратора. Откроем дерево метаданных (Конфигурация — Открыть конфигурацию), найдем ветку Отчеты — Продажи, нажмем правой кнопкой мыши и выберем пункт Сохранить как внешнюю обработку, отчет....
  2. Регистрация во внешней базе. Перейдем в режим «1С:Предприятие» и откроем меню Сервис — Внешние печатные формы и обработки — Внешние отчеты. Добавим сохраненный отчет. Аналогичным образом можно подключить универсальный отчет по регистру накопления ДенежныеСредстваККМ (или ДвиженияДенежныхСредствККМ).
  3. Разрешение выхода в режим менеджера. В справочнике Пользователи откроем карточку кассира, перейдем в Дополнительные права пользователя и активируем флаг разрешения переключения в режим управляемой формы/менеджера (по горячей клавише F11).
  4. Настройка быстрого доступа. Под пользователем кассира настроим командную панель: правой кнопкой мыши по панели команд — Настройка... — категория Все команды — перетащим пункт Внешние отчеты на панель для вызова в один клик.

Такой сценарий позволяет кассиру нажать F11, открыть отчет, сверить остаток денежных средств и вернуться обратно в РМК.

Способ 2. Вызов внешнего отчета напрямую из интерфейса РМК

Чтобы исключить необходимость выхода кассира из окна РМК в интерфейс программы, подключим специализированную обработку непосредственно к интерфейсу кассы.

  1. В режиме «1С:Предприятие» откроем справочник Настройки РМК.
  2. В настройках кнопочной панели назначим вызов внешнего отчета или обработки на свободную функциональную кнопку или горячую клавишу.
  3. При нажатии кнопки обработка формирует сводные данные и отображает их на экране поверх окна РМК.

Способ 3. Программная доработка эмулятора или создание собственной обработки

Рассмотрим подробнее техническую реализацию нефискального X-отчета. Для корректного отображения данных кассиру с ограниченными правами запрос в модуле отчета или обработки обслуживания должен выполняться с обходом ограничений RLS (прав доступа на уровне записей).

Посмотрим на пример логики формирования данных в модуле обработки:


// Включаем привилегированный режим для чтения регистров под правами кассира
УстановитьПривилегированныйРежим(Истина);

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

Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
Запрос.УстановитьПараметр("ТекущаяКасса", ПараметрыСеанса.ТекущаяКассаККМ);

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Если Выборка.Следующий() Тогда
    ТекущийОстаток = Выборка.ОстатокДС;
КонецЕсли;

УстановитьПривилегированныйРежим(Ложь);

При реализации собственного X-отчета источниками данных для расчета служат:

  1. Регистр накопления ДенежныеСредстваККМ — для получения наличного остатка с учетом внесенных и изъятых сумм.
  2. Документы ЧекККМ со статусом текущей смены (до формирования документа ОтчетОРозничныхПродажах) — для подсчета общей суммы продаж, возвратов и разделения оплат по типам (наличные, банковские карты).

Если доработать функцию ПечатьОтчетаБезГашения в обработке обслуживания торгового оборудования (эмуляторе), то при нажатии штатной кнопки Отчет без гашения в РМК программа сформирует табличный документ и сразу выведет его на нефискальный принтер чеков или на экран.

← На главную