Как отредактировать вывод чека ККМ АТОЛ в 1С v7.7: выравнивание строк и настройка шаблонов

Программист 1С v7.7 1С:Комплексная автоматизация Торговля и дистрибуция
← На главную

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

В этой статье мы подробно разберем, как решить задачу редактирования вывода чека ККМ АТОЛ: как поднять нужную строку, выровнять её по правому краю и настроить корректное отображение информации на чековой ленте. Мы проанализируем разницу в подходах между программной доработкой 1С и настройкой самого фискального регистратора.

Выясняем причину: почему стандартные методы 1С 8.x не работают в 1С 7.7

В современных конфигурациях на платформе 1С 8.3 за формирование чеков отвечает Библиотека стандартных подсистем (БСП). Разработчики привыкли использовать готовые функции, такие как МенеджерОборудованияКлиентСервер.СформироватьТекстНефискальногоДокумента(). Однако в 1С 7.7 подобных механизмов и объектных моделей просто не существует.

В системе 1С 7.7 взаимодействие с ККМ АТОЛ чаще всего строится по одному из двух сценариев:

  1. Прямой построчный вывод через COM-объект драйвера. Программа 1С формирует текстовые строки в цикле и поочередно отправляет их на печать в кассу методами драйвера (например, старых ДТО 8/9 или новых ДТО 10).
  2. Формирование XML-пакета. 1С подготавливает XML-структуру установленного формата (в соответствии с требованиями стандартов ФФД) и передает её единым пакетом внешней компоненте драйвера ККТ.

Рассмотрим подробнее каждый из способов изменения внешнего вида чека в зависимости от выбранного метода интеграции, а также аппаратные возможности касс АТОЛ.

Способ 1. Программное форматирование строк в коде 1С 7.7 (Построчный вывод)

Если в вашей конфигурации 1С 7.7 печать чека реализована через построчную передачу данных в драйвер ККМ, то выравнивание текста по правому краю выполняется непосредственно в коде обработки обслуживания. Нам необходимо вручную рассчитать ширину печатной ленты и дополнить выводимую строку нужным количеством пробелов слева.

Стандартная чековая лента шириной 57 мм (которая используется в АТОЛ 30Ф) при стандартном мелком шрифте вмещает ровно 32 символа в одной строке. Проанализируем алгоритм выравнивания строки по правому краю:


// Функция дополняет строку пробелами слева для выравнивания по правому краю
Функция ВыровнятьСтрокуВправо(ИсходнаяСтрока, ШиринаЛенты = 32) Экспорт
    ОчищеннаяСтрока = СокрЛП(ИсходнаяСтрока);
    ДлинаСтроки = СтрДлина(ОчищеннаяСтрока);
    
    Если ДлинаСтроки >= ШиринаЛенты Тогда
        // Если строка длиннее или равна ширине ленты, возвращаем её как есть (или обрезанную)
        Возврат Лев(ОчищеннаяСтрока, ШиринаЛенты);
    КонецЕсли;
    
    КоличествоПробелов = ШиринаЛенты - ДлинаСтроки;
    Пробелы = "";
    Для Сч = 1 По КоличествоПробелов Цикл
        Пробелы = Пробелы + " ";
    КонецЦикла;
    
    Возврат Пробелы + ОчищеннаяСтрока;
КонецФункции

При отправке текста на кассовый аппарат этот алгоритм применяется к конкретной переменной, отвечающей за вывод строки. Например, при работе с объектом драйвера АТОЛ код вывода будет выглядеть следующим образом:


// Подготовка объекта драйвера ККМ (например, через ДТО 9 или 10)
ДрайверККМ.Caption = ВыровнятьСтрокуВправо("Итого: 1500.00", 32);
ДрайверККМ.PrintString();

Если вам требуется перенести (поднять) строку выше, вам необходимо найти в модуле вашей внешней обработки обслуживания (обычно это файлы с расширением .ert в каталоге ExtForms\Equip) цикл формирования строк чека и поменять местами вызовы методов печати соответствующих строк.

Способ 2. Редактирование XML-пакета чека в обработке 1С 7.7

Если ваша обработка 1С 7.7 общается с драйвером АТОЛ 10 через XML-пакеты, то прямое добавление пробелов в строки может не дать желаемого результата, так как драйвер сам занимается форматированием XML-элементов. В этом случае управление выравниванием передается через специальные XML-атрибуты.

Нам необходимо заглянуть в код формирования XML-схемы в обработке обслуживания. Для выравнивания текста по правому краю у тегов, отвечающих за вывод текстовых полей, должен быть установлен атрибут выравнивания. Посмотрим на пример структуры XML-элемента, который понимает современный драйвер:


// Пример формирования XML-строки с выравниванием по правому краю
ТекстДляПечати = "<text alignment=""Right"" wrap=""Word"">Ваш Текст Здесь</text>";

Изучите код формирования XML в вашей обработке 1С 7.7. Найдите место, где формируется структура чека, и добавьте атрибут alignment="Right" для тех строк, которые необходимо прижать к правому краю чека.

Способ 3. Аппаратная настройка чека через Редактор шаблонов АТОЛ (Template Editor)

Начиная с современных версий внутреннего ПО (прошивок) касс АТОЛ, логика формирования внешнего вида чека была перенесена непосредственно внутрь самого кассового аппарата. Касса получает от программы только «сырые» фискальные данные (номенклатуру, цену, количество, ставку НДС), а за визуальное расположение элементов отвечает встроенный шаблон чека.

Для тонкой настройки внешнего вида чека без изменения кода 1С мы можем использовать специализированную утилиту от производителя.

Разберем по шагам процесс редактирования шаблона в кассе:

  1. Скачайте и установите официальную утилиту Template Editor (Редактор шаблонов чеков АТОЛ) из центра загрузок АТОЛ. Эта программа поставляется вместе с актуальными версиями Драйвера ККТ.
  2. Подключите ваш кассовый аппарат к компьютеру и запустите «Тест драйвера ККТ», чтобы убедиться, что связь с кассой установлена. Закройте тест драйвера перед запуском редактора шаблонов, чтобы освободить COM-порт.
  3. В программе Template Editor выберите операцию чтения шаблона из ККТ. Утилита выгрузит текущую схему чека во встроенный визуальный редактор.
  4. В визуальном редакторе выделите необходимый блок чека (например, поле вывода скидки, итогов или налогов). Вы можете перетаскивать элементы мышкой, поднимая их выше по структуре чека, а в свойствах выбранного элемента на панели настроек установить выравнивание по правому краю.
  5. После внесения изменений загрузите отредактированный шаблон обратно в память ККТ.

Важное примечание по версиям платформ ККТ АТОЛ:

Критически важная настройка! Если вы просто загрузите измененный шаблон через Template Editor, ККТ продолжит печатать стандартный чек. Чтобы касса применила ваши настройки, необходимо включить соответствующий параметр в драйвере:

  1. Откройте утилиту «Тест драйвера ККТ» и перейдите в раздел «Свойства», затем нажмите кнопку «Параметры ККТ».
  2. В открывшемся дереве настроек найдите раздел «Основные».
  3. Найдите параметр «Использовать загружаемые шаблоны» и переведите его в состояние «Да» (или «Разрешить»).
  4. Нажмите кнопку «Применить» или «Сохранить», чтобы записать настройки в память кассы.

Способ 4. Редактирование шапки (клише) и подвала чека через параметры ККТ

Если строка, которую вам необходимо отредактировать (поднять выше, опустить или выровнять), не относится к товарным позициям или фискальным итогам, а является информационным сообщением (например, название вашей организации, адрес торговой точки, ИНН или приветственное сообщение «Спасибо за покупку!»), её вообще не нужно программировать в 1С или шаблонах шаблонизатора.

Эти данные настраиваются напрямую в текстовых полях клише кассового аппарата:

  1. Запустите «Тест драйвера ККТ», перейдите в Свойства -> Параметры ККТ.
  2. Найдите вкладку «Клише» (в некоторых версиях драйвера она называется «Параметры программирования» или «Печать»).
  3. Перед вами откроется список строк, которые касса автоматически печатает в начале чека (шапка) и в конце чека (подвал).
  4. Здесь вы можете свободно переносить текст между строками, удалять ненужные пустые строки, чтобы поднять текст выше, а также выравнивать строки пробелами непосредственно в текстовых полях драйвера. Касса сама запомнит этот формат и будет применять его ко всем последующим чекам, независимо от того, какие команды приходят из 1С 7.7.

Резюме и рекомендации

Для выбора оптимального пути решения проблемы проанализируйте характер строки, которую нужно отредактировать:

← На главную