В розничной торговле чек является главным документом, подтверждающим факт покупки. Часто перед разработчиками и администраторами систем 1С встает задача изменить его внешний вид: добавить логотип, вывести информацию о скидках, бонусах, изменить шрифт или убрать лишние нефискальные строки. При работе с конфигурацией 1С:Розница 2.3 и популярными фискальными регистраторами семейства Штрих-М (например, Элвес-ФР, Штрих-М-01Ф и др.) этот процесс имеет свои особенности.
Основная сложность, с которой сталкиваются начинающие специалисты, — это непонимание того, где именно формируется макет: в самой программе 1С или внутри кассового аппарата (ККТ). В этой статье мы подробно разберем весь процесс настройки чека от А до Я. Мы выясним, как разделить зоны ответственности между 1С и драйвером ККТ, как правильно спроектировать шаблон в программе, как настроить таблицы фискального регистратора и как протестировать полученный результат без подключения реальной кассы.
Прежде чем приступать к изменению макета, необходимо четко уяснить, как именно данные выводятся на чековую ленту. Согласно требованиям федерального закона 54-ФЗ, онлайн-касса не является обычным принтером документов. Вы не можете отправить на нее произвольный графический файл или сверстанный табличный документ 1С. Программа передает на кассу структурированный XML-пакет с фискальными данными (номенклатура, цена, сумма, ставка НДС, ИНН организации и т.д.). Кассовый аппарат самостоятельно обрабатывает эти данные и формирует фискальную часть чека.
Таким образом, весь чек ККМ можно разделить на две принципиальные части:
Рассмотрим по шагам все возможные способы модификации чека.
Если нам необходимо вывести дополнительную текстовую информацию (например, информацию о скидках, накопленных бонусах, кассире) в шапке или подвале чека, мы можем воспользоваться встроенным редактором шаблонов 1С.
Выполним следующие действия по шагам:
ДисконтнаяКарта, НачисленоБонусов, Кассир, СуммаСкидки). Мы можем перетаскивать эти поля в макет чека (в верхнюю или нижнюю часть нефискальных строк).Теперь созданный шаблон необходимо привязать к конкретной кассе ККМ, иначе программа продолжит отправлять на кассу стандартные нефискальные блоки. Для этого:
Очень часто пользователи хотят уменьшить высоту чека, изменить межстрочный интервал, сделать шрифт более мелким (для экономии бумаги) или убрать пустые строки. Настройка шаблонов в 1С здесь не поможет, так как эти параметры полностью контролируются самим фискальным регистратором. В этом случае нам понадобится утилита Тест драйвера ККТ от компании «Штрих-М».
Для настройки параметров печати выполним следующие действия:
Таблица 1: «Тип и режим кассы»
Здесь содержатся системные настройки работы принтера чеков. Нас интересуют следующие параметры:
1, касса будет печатать рекламные строки из таблицы текстов в конце каждого чека. Если установить значение 0, печать рекламы будет отключена, что сократит длину чека.0 заголовок (название магазина, адрес) печатается непосредственно при открытии и формировании текущего чека. При значении 1 клише печатается заранее, сразу после отрезания предыдущего чека. Это экономит время при обслуживании следующего покупателя.1) заставляет фискальный регистратор принудительно использовать более узкий и компактный шрифт для всех фискальных строк, что позволяет существенно экономить чековую ленту.Таблица 4 (или 3 в зависимости от модели): «Текст в чеке» (Клише)
Эта таблица содержит строки, которые касса печатает автоматически в начале и в конце чека.
Таблица 8: «Настройка шрифтов»
Если чековая лента узкая (например, 57 мм), стандартный шрифт может казаться слишком крупным, из-за чего длинные наименования товаров переносятся на несколько строк, увеличивая расход бумаги. В этой таблице можно задать более мелкий масштаб шрифта (например, шрифт под номером 5 или 6) для фискальных строк, оставив крупный шрифт только для итоговых сумм чека.
Что делать, если стандартного конструктора макетов 1С:Розницы не хватает для реализации сложных условий (например, выводить специфические штрихкоды, купоны на скидку только при покупке определенных товаров или динамически рассчитывать сложные скидки прямо в подвале чека)? В этом случае потребуется изменить алгоритм формирования чека в кодовой базе 1С с помощью механизма расширений.
Вся логика работы с кассовым оборудованием и формированием XML-пакетов для ККТ в решениях на базе БСП (Библиотеки стандартных подсистем) и БПО (Библиотеки подключаемого оборудования) сосредоточена в общих модулях. Рассмотрим основные объекты, которые нам необходимо проанализировать:
МенеджерОборудованияКлиентСервер — содержит методы подготовки XML-данных для передачи на драйвер ККТ.МенеджерОборудованияВызовСервераПереопределяемый — используется для переопределения стандартных алгоритмов заполнения фискальных документов.Для программного изменения состава нефискальных строк мы можем перехватить процедуру формирования текста чека. Создадим расширение конфигурации и добавим в него общий модуль, в котором переопределим функцию формирования нефискального документа. Посмотрим на пример кода, который добавляет индивидуальный блок информации о гарантии в конец чека:
&ВОбходе("МенеджерОборудованияКлиентСервер")
Процедура Расш_СформироватьТекстНефискальногоДокумента(ПараметрыДокумента, ТекстЧека) Экспорт
// Вызываем оригинальный обработчик, чтобы заполнить стандартные нефискальные строки
ПродолжитьВызов(ПараметрыДокумента, ТекстЧека);
// Добавляем собственный блок информации в конец чека
ТекстЧека.ДобавитьСтроку("==================================");
ТекстЧека.ДобавитьСтроку(" СРОК ГАРАНТИИ НА ТОВАР - 14 ДНЕЙ ");
ТекстЧека.ДобавитьСтроку(" Сохраняйте данный чек для возврата ");
ТекстЧека.ДобавитьСтроку("==================================");
КонецПроцедуры
Используя данный метод, мы можем гибко анализировать состав товаров в документе ЧекККМ и динамически выводить на печать любую текстовую информацию, полностью управляя нефискальным пространством чековой ленты. При необходимости можно воспользоваться готовым расширением для печати произвольного текста и штрихкодов в чеке ККТ.
Одной из главных проблем для разработчика является отсутствие физического фискального регистратора под рукой в момент написания кода или настройки макета. Постоянно пробивать тестовые чеки на боевой кассе клиента невозможно — это приведет к расхождению кассовых смен и отправке некорректных данных в ОФД и налоговую службу.
Для решения этой проблемы в системе 1С предусмотрен встроенный программный эмулятор. Проанализируем, как его настроить и использовать для проверки нашего макета чека:
Теперь мы можем открыть интерфейс кассира (РМК) или создать документ ЧекККМ вручную и нажать кнопку Пробить чек. Вместо отправки команды на реальный аппарат программа 1С выведет на экран интерактивное графическое окно эмулятора. В этом окне с точностью до символа будет показано, как именно будет выглядеть напечатанный чек на бумажной ленте выбранной ширины. Вы сможете сразу увидеть:
После того как на эмуляторе макет будет доведен до идеального состояния, вы сможете без опасений перенести изменения в рабочую базу клиента, привязать созданный шаблон к реальной физической кассе Штрих-М и запустить систему в промышленную эксплуатацию.