Как реализовать печать нефискального чека (пречека) в 1С:Розница 2?

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

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

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

Почему в стандартной «1С:Розница» нет кнопки «Пречек»?

Программа «1С:Розница» изначально проектировалась для классической потоковой торговли по схеме «пришел — выбрал — оплатил — получил чек». С введением жестких требований Федерального закона № 54-ФЗ фирма «1С» планомерно исключила из типовых решений механизмы простой печати нефискальных документов на фискальных регистраторах. Это сделано для минимизации рисков некорректного использования ККТ и сокрытия выручки.

В связи с этим в стандартном Рабочем месте кассира (РМК) функционал работы со столами, заказами и пречеками отсутствует. Однако технически решить эту задачу можно. Рассмотрим основные варианты реализации.

Вариант 1. Доработка программы через расширение (Сценарий «Отложенный чек»)

Это наиболее популярный и методологически правильный способ доработки «1С:Розница 2», не снимающий конфигурацию с поддержки. Мы можем создать расширение конфигурации (файл формата .cfe), которое добавит в РМК необходимую логику.

Проанализируем пошагово, как должен работать этот механизм:

  1. В форму РМК добавляется новая кнопка «Пречек».
  2. При нажатии на эту кнопку текущее наполнение корзины кассира программно записывается в стандартный документ ЧекККМ.
  3. Документу присваивается статус Отложен (или Отложен с резервом, чтобы зафиксировать ингредиенты или товары на складе).
  4. Программа формирует печатную форму (макет товарного чека) и отправляет ее на принтер.
  5. После оплаты кассир заходит в список отложенных чеков, выбирает нужный документ и пробивает обычный фискальный чек.

Рассмотрим пример кода на языке 1С, который может использоваться в обработчике нажатия кнопки «Пречек» для создания отложенного чека:


// Пример создания отложенного чека ККМ на основе данных корзины РМК
НовыйЧек = Документы.ЧекККМ.СоздатьДокумент();
НовыйЧек.Дата = ТекущаяДата();
НовыйЧек.СтатусЧека = Перечисления.СтатусыЧековККМ.Отложен;
НовыйЧек.КассаККМ = Объект.КассаККМ;
НовыйЧек.Организация = Объект.Организация;

// Заполняем табличную часть Товары
Для Каждого СтрокаТовара Из Объект.Товары Цикл
    НоваяСтрока = НовыйЧек.Товары.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТовара);
КонецЦикла;

Попытка
    НовыйЧек.Записать(РежимЗаписиДокумента.Запись);
    // Вызываем процедуру нефискальной печати
    ПечатьНефискальногоПречека(НовыйЧек.Ссылка);
    Сообщить("Пречек успешно сформирован и отложен.");
Исключение
    ВызватьИсключение "Не удалось сохранить отложенный чек: " + ОписаниеОшибки();
КонецПопытки;

Вариант 2. Печать на отдельный принтер чеков (нефискальный принтер)

Чтобы не задействовать фискальный накопитель ККТ для промежуточных отчетов, можно подключить к рабочему месту обычный недорогой термопринтер чеков (например, работающий по протоколу ESC/POS или через стандартный Windows-драйвер принтера).

Выясним преимущества такого подхода:

Вариант 3. Вывод нефискального текста через драйвер ККТ

Если покупка второго принтера нецелесообразна, можно использовать текущую онлайн-кассу для печати пречека. Современные ККТ (АТОЛ, Штрих-М) поддерживают методы построчной печати произвольного текста без открытия фискального чека.

Для реализации этого метода программист должен написать код взаимодействия с драйвером ККТ напрямую через API. Примерная схема работы выглядит так:

  1. Подключается внешняя компонента драйвера ККТ.
  2. Вызывается метод начала нефискального документа.
  3. В цикле передаются строки с наименованиями блюд, их количеством и ценой с помощью метода PrintText() драйвера.
  4. Вызывается метод отрезки ленты.

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

Отраслевые альтернативы: стоит ли «пилить» Розницу?

Как справедливо заметили участники обсуждения на форуме, адаптация учетной системы под специфику общепита — процесс трудоемкий. Если вашему клиенту требуются такие функции, как:

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

Рассмотрим основные альтернативные варианты:

  1. «1С:Фастфуд» или «1С:Ресторан» — данные конфигурации разработаны на той же технологической платформе «1С:Предприятие 8» и имеют интерфейс, полностью адаптированный под сенсорные экраны, работу с залами, столами и пречеками «из коробки».
  2. Интеграция «1С:Розница» (back-office) + Frontol (front-office) — надежная схема, при которой весь оперативный учет, калькуляция блюд и ведение склада происходят в «1С», а на кассовом терминале в кафе работает специализированная программа Frontol, в которой функции откладывания чеков и печати пречеков настраиваются без программирования.

Таким образом, если бюджет клиента крайне ограничен, оптимальным решением будет создание небольшого расширения для «1С:Розница 2» с использованием отложенных чеков и выводом печати на недорогой принтер чеков. Если же бизнес планирует развиваться, лучше сразу предложить специализированное решение, чтобы избежать бесконечных доработок не предназначенной для общепита конфигурации.

← На главную