Есть три способа:
- Если у вас 1С: Розница 2.2, то все стандартно.
- Редактирование шаблона через редактор шаблона от АТОЛ (только неизменяющийся текст)
- Программный вывод нужных полей из 1С.
Первый способ
Сначала я соответственно расскажу про существующий функционал 1С. В Розница 2.2 1С добавила функционал редактирование шаблонов чеков ККТ. Находится он в Администрирование – Печатные формы, отчеты и обработки – Шаблоны этикеток, ценников и чеков ККМ.
Как с этим работать?
Для начала нам нужно определить, какие поля нам понадобятся, в шаблоне нажимает «Редактировать СКД» и «Редактировать схему компоновки данных», добавляем, что нам нужно и сохраняем, не забываем на закладке поля перенести поле из доступных в выбранные.
После того как мы выбрали, что мы хотим дополнительно вывести в чек, записываем шаблон и нажимаем «Редактировать макет», мы можем загрузить два стандартных шаблона «по умолчанию» и «расширенный», первый это просто типовой вариант, а второй демонстрирует пример отредактированного шаблона.
В макете у нас уже есть возможность дабавить свои поля над таблицой товаров в чеке и под ней, а так же вывести, что мы хотим, нефискальным документом после чека, достаточно просто перетащить поля из возможных в то место, где мы хотим их видеть и отредактировать формат представления, можно добавить просто текстовую строку.
И посмотрим, какие же настройки есть у полей, думаю, тут по скриншоту все понятно: Имя поля это либо текст, либо наименование поля из доступных (при этом должен стоять флажок вычисляемое поле), префикс и постфикс позволяет вывести перед полем дополнительную фразу.
Еще немного информации можно найти здесь https://its.1c.ru/db/kkt#content:80:retail22
Вроде все замечательно и больше ничего не нужно, но что делать если компания работает не в 1С:Розница, только ради этого приобретать ее и настраивать обмены не очень удобно.
Второй способ
Второй вариант редактирование шаблона в самой ККТ. Этот способ подходит тем у кого не так много касс и нужно вывести какую нибудь шапку и подвал, т.е. фиксированный текст.
Атол выпустили редактор шаблонов ККТ.
К сожалению, при настройке я не делал скриншоты, поэтому позаимствую их из инструкции Атол.
После запуска редактора через меню – касса – настроить соединение подключаем нашу кассу как и в драйвере ККМ.
Нажимаем касса – прочитать из кассы, выбираем номер шаблона 1 или 2 и нажимаем загрузить.
Примерно так будет выглядеть наш шаблон
Редактировать шаблон через эту программу конечно не так просто, как в Розница 2.2, но все же не трудно.
Нажав на строку шаблона справа и слева есть кнопки «+» (добавить строку нижу) или «-» (удалить строку)
Справа у нас отображаются доступные поля и окно свойств поля.
Перемещение и добавление полей ведется в основном через окно свойств.
Выделив нужное нам поле в шаблоне или в списке доступных полей, нам нужно указать, в каком блоке оно будет находиться, на какой строке, начиная с какого символа, и его длину, после того, как мы все это укажем, оно отобразится в нашем шаблоне.
Для добавления произвольного текста, нужно добавлять поля «Свободная строка». После того, как мы разместили наше поле нам нужно указать, что же будет там выводиться, для этого в меню есть кнопка редактор строк.
В наименовании поля написан номер этой свободной строк: 1, 2, 3 и т.д. Для изменения надписи конкретного поля нужно отсчитать количество строк по номеру поля начиная с 7й строки, например, если у нас свободная строка 1, то ее текст находится в редакторе строк в строке 8.
После всех наших манипуляций можно протестироавть чек (меню – касса – тестовый чек) и загрузить шаблон и свободные строки в кассу (меню касса – тестовый чек).
Перед началом манипуляций советую сохранить шаблон чека через Файл – сохранить, что бы можно было востановить шаблон.
Более подробно об этом есть в руководстве пользователя редактора шаблонов.
Скачать редактор можно в центре загрузок Атол.
Минус этого способа в том, что загружать шаблон придется на каждую кассу, да и переменный текст так не добавишь, хотя в списке полей есть такие поля как «Пользовательский тег», возможно через них можно передавать свои данные, но каким способом это передавать в документации не указано. Буду рад если кто-то знает и дополнит эту статью такой информацией.
Третий способ
Ну и последний способ это доработка функционала 1С.
Программно есть возможность вывода своих строк так же как и в функционале редактора чеков в Рознице 2.2 т.е. до таблицы товаров, после нее и отдельным нефискальным документом.
Это ограничение есть потому, что 1С отправляет в ККТ xml файл с параметрами чека и соответственно никаких наших выдуманных переменных ККТ не воспримет.
Где это все можно добавить?
Я описываю свое решение на базе УТ 10.3, но думаю принцип формирования чека одинаковый во всех решениях 1С и отличается только тем где располагаются эти функции.
Нам понадобится функция ПодготовитьДанныеДляФискализацииЧека в Модуле объекта ЧекККМ.
(Для ут 11 это функция ПараметрыЧека в модуле формы ФормаДокументаРМК документа ЧекККМ)
В этой функции мы можем подменить значение которые 1С подставляет на свои (например заменить продавца или вывести другое наименование номенклатуры и пр.)
Ищем в это функции цикл перебора строк ТЧ Товары
// Товарные позиции
Для Каждого СтрокаТовара Из ЧекККМ.Товары Цикл
Если мы посмотрим в «Требования к разработке драйверов подключаемого оборудования 2.1», то увидим, что в таблице товаров передаваемы в ККТ могут быть не только товары но и текстовые строки и штрихкод, этим мы и воспользуемся.
Сначала нам нужно получить структуру нашей строки:
Для строки товаров это выглядит так
СтрокаЧека = МенеджерОборудованияКлиентСервер.ПараметрыФискальнойСтрокиЧека();
Для текста так
СтрокаЧека = МенеджерОборудованияКлиентСервер.ПараметрыТекстовойСтрокиЧека("Мой текст");
Если посмотреть стандартную функцию ПараметрыТекстовойСтрокиЧека, то видно, что 1с не дает нам возможности выполнить собственное выравнивание и установить перенос строки, но это можно поправить.
Вот так выглядит стандартная функция
Функция ПараметрыТекстовойСтрокиЧека(Текст = Неопределено) Экспорт
ПараметрыСтроки = Новый Структура();
ПараметрыСтроки.Вставить("ТекстоваяСтрока"); // Тип строки. Исходящий служебный параметр.
ПараметрыСтроки.Вставить("Текст", Текст); // Строка, Обязательно - текстовая строка
ПараметрыСтроки.Вставить("ПереносСтроки", Ложь); // Булево - Перенос строки, устанавливается значение по умочанию.
ПараметрыСтроки.Вставить("Выравнивание" , "Лево"); // Строка - Выравнивание текста, Значения: "Лево", "Право", "Центр".
Возврат ПараметрыСтроки;
КонецФункции
А вот немного отредактированная
Функция ПараметрыТекстовойСтрокиЧека(Текст = Неопределено, Выравнивание = "Лево", ПереносСтроки = Ложь) Экспорт
ПараметрыСтроки = Новый Структура();
ПараметрыСтроки.Вставить("ТекстоваяСтрока"); // Тип строки. Исходящий служебный параметр.
ПараметрыСтроки.Вставить("Текст", Текст); // Строка, Обязательно - текстовая строка
ПараметрыСтроки.Вставить("ПереносСтроки", ПереносСтроки); // Булево - Перенос строки, устанавливается значение по умочанию.
ПараметрыСтроки.Вставить("Выравнивание" , Выравнивание); // Строка - Выравнивание текста, Значения: "Лево", "Право", "Центр".
Возврат ПараметрыСтроки;
КонецФункции
Теперь добавляя текстовую строку мы можем указывать выравнивание и перенос.
Что бы добавить текстовую строку нам нужно написать следующее:
СтрокаЧека = МенеджерОборудованияКлиентСервер.ПараметрыТекстовойСтрокиЧека("Мой текст", "Центр", Ложь);
ОбщиеПараметры.ПозицииЧека.Добавить(СтрокаЧека);
Соответственно вместо «Мой текст» можно написать что угодно и используя произвольные данные из информационной базы.
Теперь определимся куда мы хотим добавить строку:
- До таблицы товаров
Для этого нам нужно добавить вставить наш код до цикла перебора товаров
СтрокаЧека = МенеджерОборудованияКлиентСервер.ПараметрыТекстовойСтрокиЧека("Мой текст", "Центр", Ложь);
ОбщиеПараметры.ПозицииЧека.Добавить(СтрокаЧека);
// Товарные позиции
Для Каждого СтрокаТовара Из ЧекККМ.Товары Цикл
- После таблицы товаров
Для этого вставим наш код после цикла
ОбщиеПараметры.ПозицииЧека.Добавить(СтрокаЧека);
КонецЦикла;
СтрокаЧека = МенеджерОборудованияКлиентСервер.ПараметрыТекстовойСтрокиЧека("Мой текст", "Центр", Ложь);
ОбщиеПараметры.ПозицииЧека.Добавить(СтрокаЧека);
МенеджерОборудованияКлиентСервер.ПровестиФорматоЛогическийКонтроль(ОбщиеПараметры);
- При выводе каждого товара
В этом случае мы добавляем наш код внутри цикла, до или после товара будет выводится наша строка определяется тем когда вы добавите код,сразу после начала цикла или перед его завершением.
На этом все, надеюсь эта статья была понятной и кому нибудь пригодится, буду рад если кто-то сможет что-то дополнить или поделиться опытом. Спасибо.