При работе с программными продуктами 1С, в частности с 1С:Розница, пользователи часто сталкиваются с необходимостью изменения внешнего вида кассового чека. Например, клиент может попросить добавить в информативную часть чека артикул товара или удалить ненужные, на его взгляд, строки, чтобы чек не был слишком «километровым». Мы сталкиваемся с ситуацией, когда, несмотря на все внесенные изменения в шаблон чека ККМ в конфигурации 1С и его привязку к кассе, фискальный регистратор (ФР) упорно печатает свой стандартный чек по умолчанию, игнорируя наши усилия. Эмулятор в 1С при этом может показывать желаемый результат, что только усиливает недоумение. Давайте разберемся, почему так происходит и как мы можем обойти эти ограничения.
Первоочередной причиной, по которой фискальный регистратор игнорирует изменения в шаблонах 1С, является строгое регулирование фискальной части чека в соответствии с Федеральным законом № 54-ФЗ «О применении контрольно-кассовой техники при осуществлении расчетов в Российской Федерации». Современные контрольно-кассовые машины (ККТ), к которым относятся и фискальные регистраторы, являются онлайн-кассами и должны передавать определенный набор обязательных реквизитов в Федеральную налоговую службу (ФНС) через Оператора Фискальных Данных (ОФД).
Наименование, ИтоговаяЦена, Налог, Количество и так далее. Фискальный регистратор принимает эти данные, фискализирует их (то есть, записывает в фискальный накопитель и подписывает фискальным признаком), а затем форматирует их для печати согласно своей внутренней логике и прошивке. Именно поэтому он печатает свой «стандартный» шаблон для фискальной части.
Таким образом, мы видим, что напрямую изменить порядок вывода или содержимое обязательных фискальных строк (например, вместо «Номенклатура» вывести «Артикул + Номенклатура») в рамках фискальной части чека, как правило, невозможно из-за законодательных требований и устройства современных ККТ.
Возникает логичный вопрос: если нельзя изменить фискальную часть, то зачем в 1С:Розница (и других конфигурациях, таких как 1С:Управление нашей фирмой) существует функционал для создания и редактирования шаблонов чеков ККМ? Мы разберем, что эти шаблоны все же очень полезны и предназначены для настройки нефискальных частей документа.
В 1С:Розница мы находим эти настройки в разделе «Администрирование» → «Печатные формы, отчеты и обработки» → «Шаблоны этикеток, ценников и чеков ККМ». Здесь пользователи могут создавать новые шаблоны или редактировать существующие. Этот механизм позволяет нам добавлять в чек:
Главное понимание заключается в том, что 1С позволяет настраивать так называемые «шапку» (блок до обязательных фискальных реквизитов) и «подвал» (блок после фискальных итогов) чека. Именно эти нефискальные блоки мы можем изменять, добавляя туда произвольный текст или информацию, которая будет напечатана фискальным регистратором, но не будет являться частью фискальных данных, передаваемых в ОФД.
Теперь, когда мы понимаем ограничения, мы можем рассмотреть жизнеспособные подходы к решению нашей задачи по кастомизации информационной части чека.
Самый простой способ добавить дополнительную информацию – это использовать настраиваемые нефискальные блоки в шаблоне чека. Мы можем отредактировать шаблон таким образом, чтобы нужная нам информация выводилась либо до фискальных строк, либо после них. Это могут быть рекламные сообщения, информация о программе лояльности, контактные данные магазина или, например, режим работы.
Шаги по настройке:
Важно помнить, что этот подход ограничен информацией, которая не должна отображаться в каждой строке товара. Мы не сможем добавить артикул непосредственно рядом с наименованием товара в фискальной части, используя только этот метод.
Это наиболее гибкое и часто используемое решение, когда нам требуется вывести информацию, которая не может быть частью фискального чека или должна быть сгруппирована по товарам, как в нашем случае с «Артикул + Номенклатура».
Мы можем настроить печать отдельного нефискального документа, который будет выводиться фискальным регистратором после основного фискального чека. Такой документ называется «слип» или «товарный чек» (в контексте нефискальной печати). Этот слип полностью настраивается в 1С и позволяет нам вывести любую нужную информацию, не нарушая требований к фискальному чеку.
Как это работает для вывода «Артикул + Номенклатура»:
Для реализации этого метода, как правило, требуется небольшое программное допиливание в конфигурации 1С. Мы рассмотрим это подробнее в следующем пункте.
Для более глубокой кастомизации или для реализации печати отдельного нефискального слипа с динамическим содержимым, как в случае с выводом «Артикул + Номенклатура», нам может потребоваться внести изменения непосредственно в код 1С.
Мы будем работать с общими модулями, отвечающими за взаимодействие с оборудованием. В 1С:Розница ключевую роль в этом процессе играет общий модуль МенеджерОборудованияКлиентСервер и связанные с ним процедуры и функции, которые обрабатывают команды печати для ККТ.
Принцип действий:
ТаблицаТоваров)."[Артикул товара] [Наименование товара]".ДрайверККТ.НапечататьТекст(ТекстДляСлипа).Примерная структура вызова печати слипа после фискального чека может выглядеть следующим образом (псевдокод, для понимания принципа):
// ... код печати фискального чека
Если ОбъектыДрайверовОборудования.ФискальныйРегистратор.НапечататьЧек(ДанныеЧека) Тогда
// Фискальный чек напечатан успешно, теперь печатаем нефискальный слип
// 1. Формируем данные для слипа (например, таблица значений с Артикулом и Номенклатурой)
ТаблицаДанныхДляСлипа = Новый ТаблицаЗначений;
ТаблицаДанныхДляСлипа.Колонки.Добавить("Артикул");
ТаблицаДанныхДляСлипа.Колонки.Добавить("Наименование");
Для Каждого СтрокаТовара Из ДанныеЧека.Товары Цикл
НоваяСтрока = ТаблицаДанныхДляСлипа.Добавить();
НоваяСтрока.Артикул = СтрокаТовара.Номенклатура.Артикул; // Предполагаем, что Артикул доступен
НоваяСтрока.Наименование = СтрокаТовара.Номенклатура.Наименование;
КонецЦикла;
// 2. Генерируем печатную форму на основе шаблона 1С
МакетСлипа = ПолучитьМакет("МойНефискальныйСлип"); // Имя нашего шаблона в конфигурации
ОбластьМакета = МакетСлипа.ПолучитьОбласть("ОбластьСлипа");
ОбластьМакета.Параметры.Заполнить(ТаблицаДанныхДляСлипа); // Передаем данные в макет
// 3. Отправляем текст из макета на печать как нефискальный документ
ТекстДляПечати = "";
Для Каждого СтрокаСлипа Из ОбластьМакета.Вывести() Цикл // Итерация по строкам макета
ТекстДляПечати = ТекстДляПечати + СтрокаСлипа;
КонецЦикла;
ОбъектыДрайверовОборудования.ФискальныйРегистратор.НапечататьТекст(ТекстДляПечати);
Иначе
// Обработка ошибки печати фискального чека
КонецЕсли;
Обратите внимание, что такое программное вмешательство требует специфических знаний по разработке в 1С и может быть сопряжено с определенными рисками при обновлениях конфигурации. Всегда рекомендуется делать такие изменения через механизмы расширений, чтобы минимизировать риски.
В одном из сообщений форума упоминалось, что на определенном релизе 1С:Розница существовала подобная проблема с печатью, которая впоследствии была устранена. Мы рекомендуем проверить актуальность вашей версии 1С:Розница.
Действия:
Хотя этот пункт может не решить проблему напрямую, он исключает потенциальные ошибки платформы или конфигурации, которые могли бы влиять на процесс печати.
Мы выяснили, что прямая модификация фискальных строк чека ККМ через шаблоны 1С невозможна из-за требований 54-ФЗ и внутренней логики фискальных регистраторов. Однако мы имеем несколько эффективных способов для вывода дополнительной информации:
МенеджерОборудованияКлиентСервер, чтобы генерировать и отправлять произвольный текст на печать.Выбирайте решение исходя из специфики требуемой информации и ваших технических возможностей. В большинстве случаев, печать отдельного нефискального слипа является оптимальным компромиссом между желанием кастомизации и соблюдением законодательных требований.