При работе с торговым оборудованием на устаревших платформах, таких как 1С:Предприятие 7.7 (например, в конфигурации «Комплексная разметка 7.7»), программисты и системные администраторы часто сталкиваются с техническими ограничениями при попытке изменить внешний вид фискального чека. Современные кассовые аппараты, такие как АТОЛ 30Ф, работают по совершенно иным стандартам, нежели те, под которые изначально проектировалась платформа 7.7.
В этой статье мы подробно разберем, как решить задачу редактирования вывода чека ККМ АТОЛ: как поднять нужную строку, выровнять её по правому краю и настроить корректное отображение информации на чековой ленте. Мы проанализируем разницу в подходах между программной доработкой 1С и настройкой самого фискального регистратора.
В современных конфигурациях на платформе 1С 8.3 за формирование чеков отвечает Библиотека стандартных подсистем (БСП). Разработчики привыкли использовать готовые функции, такие как МенеджерОборудованияКлиентСервер.СформироватьТекстНефискальногоДокумента(). Однако в 1С 7.7 подобных механизмов и объектных моделей просто не существует.
В системе 1С 7.7 взаимодействие с ККМ АТОЛ чаще всего строится по одному из двух сценариев:
Рассмотрим подробнее каждый из способов изменения внешнего вида чека в зависимости от выбранного метода интеграции, а также аппаратные возможности касс АТОЛ.
Если в вашей конфигурации 1С 7.7 печать чека реализована через построчную передачу данных в драйвер ККМ, то выравнивание текста по правому краю выполняется непосредственно в коде обработки обслуживания. Нам необходимо вручную рассчитать ширину печатной ленты и дополнить выводимую строку нужным количеством пробелов слева.
Стандартная чековая лента шириной 57 мм (которая используется в АТОЛ 30Ф) при стандартном мелком шрифте вмещает ровно 32 символа в одной строке. Проанализируем алгоритм выравнивания строки по правому краю:
// Функция дополняет строку пробелами слева для выравнивания по правому краю
Функция ВыровнятьСтрокуВправо(ИсходнаяСтрока, ШиринаЛенты = 32) Экспорт
ОчищеннаяСтрока = СокрЛП(ИсходнаяСтрока);
ДлинаСтроки = СтрДлина(ОчищеннаяСтрока);
Если ДлинаСтроки >= ШиринаЛенты Тогда
// Если строка длиннее или равна ширине ленты, возвращаем её как есть (или обрезанную)
Возврат Лев(ОчищеннаяСтрока, ШиринаЛенты);
КонецЕсли;
КоличествоПробелов = ШиринаЛенты - ДлинаСтроки;
Пробелы = "";
Для Сч = 1 По КоличествоПробелов Цикл
Пробелы = Пробелы + " ";
КонецЦикла;
Возврат Пробелы + ОчищеннаяСтрока;
КонецФункции
При отправке текста на кассовый аппарат этот алгоритм применяется к конкретной переменной, отвечающей за вывод строки. Например, при работе с объектом драйвера АТОЛ код вывода будет выглядеть следующим образом:
// Подготовка объекта драйвера ККМ (например, через ДТО 9 или 10)
ДрайверККМ.Caption = ВыровнятьСтрокуВправо("Итого: 1500.00", 32);
ДрайверККМ.PrintString();
Если вам требуется перенести (поднять) строку выше, вам необходимо найти в модуле вашей внешней обработки обслуживания (обычно это файлы с расширением .ert в каталоге ExtForms\Equip) цикл формирования строк чека и поменять местами вызовы методов печати соответствующих строк.
Если ваша обработка 1С 7.7 общается с драйвером АТОЛ 10 через XML-пакеты, то прямое добавление пробелов в строки может не дать желаемого результата, так как драйвер сам занимается форматированием XML-элементов. В этом случае управление выравниванием передается через специальные XML-атрибуты.
Нам необходимо заглянуть в код формирования XML-схемы в обработке обслуживания. Для выравнивания текста по правому краю у тегов, отвечающих за вывод текстовых полей, должен быть установлен атрибут выравнивания. Посмотрим на пример структуры XML-элемента, который понимает современный драйвер:
// Пример формирования XML-строки с выравниванием по правому краю
ТекстДляПечати = "<text alignment=""Right"" wrap=""Word"">Ваш Текст Здесь</text>";
Изучите код формирования XML в вашей обработке 1С 7.7. Найдите место, где формируется структура чека, и добавьте атрибут alignment="Right" для тех строк, которые необходимо прижать к правому краю чека.
Начиная с современных версий внутреннего ПО (прошивок) касс АТОЛ, логика формирования внешнего вида чека была перенесена непосредственно внутрь самого кассового аппарата. Касса получает от программы только «сырые» фискальные данные (номенклатуру, цену, количество, ставку НДС), а за визуальное расположение элементов отвечает встроенный шаблон чека.
Для тонкой настройки внешнего вида чека без изменения кода 1С мы можем использовать специализированную утилиту от производителя.
Разберем по шагам процесс редактирования шаблона в кассе:
Важное примечание по версиям платформ ККТ АТОЛ:
Критически важная настройка! Если вы просто загрузите измененный шаблон через Template Editor, ККТ продолжит печатать стандартный чек. Чтобы касса применила ваши настройки, необходимо включить соответствующий параметр в драйвере:
Если строка, которую вам необходимо отредактировать (поднять выше, опустить или выровнять), не относится к товарным позициям или фискальным итогам, а является информационным сообщением (например, название вашей организации, адрес торговой точки, ИНН или приветственное сообщение «Спасибо за покупку!»), её вообще не нужно программировать в 1С или шаблонах шаблонизатора.
Эти данные настраиваются напрямую в текстовых полях клише кассового аппарата:
Для выбора оптимального пути решения проблемы проанализируйте характер строки, которую нужно отредактировать:
.ert), применив функцию ручного дополнения строки пробелами до стандартной ширины в 32 символа.