Печать на ККТ текстового документа из УТ 10.3

Показан способ печати нефискальных, произвольного текстового содержания документов на кассах-онлайн на примере 1С:Управление торговлей 10.3.

Иногда кассиру, оператору требуется напечатать для клиента какой-либо текстовый документ, например, предварительный заказ. Удобно это делать на контрольно-кассовой технике, которая уже установлена на рабочем месте. При работе с фискальными регистраторами (ФР) обычно это не вызывает сложностей. Рассмотрим вариант печати нефискального документа на ККТ для УТ 10.3.

На самом деле в конфигурации УТ 10.3 на уровне общих модулей уже все необходимое есть, остается это правильно собрать и исполнить, но при этом в обработках обслуживания торгового оборудования для ККТ с передачей данных, по крайней мере для Штрих-м и Атол, нет необходимых функций.  Итак, из конфигурации нам понадобиться следующие ключевые процедуры/функции:

  • ПодключаемоеОборудованиеУниверсальныйДрайверКлиент.ВыполнитьКоманду — универсальная процедура для подачи команды на ККТ, в частности нам понадобится для печати команда PrintTextDocument;
  • МенеджерОборудованияКлиентСервер.ПараметрыТекстовойСтрокиЧека — для формирования строк для печати на ленте;
  • Остальное можно уже делать по аналогии с печатью чека на ККТ из документ ЧекККМ процедуры модуля документа ПровестиИРаспечататьЧек.

Для единообразия дополним существующую обработку обслуживания ККТ функцией печати текстового документа:

Функция НапечататьТекстовыйДокумент(Объект, ПараметрыЧека, ШиринаСтроки = 32) Экспорт

ПолучитьПараметрыККТ(Объект);

мПараметрыПодключения.Вставить("ПараметрыРегистрации", Объект.ВыходныеПараметры);
мПараметрыПодключения.Вставить("ШиринаСтроки", ШиринаСтроки);

мВходныеПараметры.Очистить();
мВходныеПараметры.Добавить(ПараметрыЧека);

РезультатВыполнения = ПодключаемоеОборудованиеУниверсальныйДрайверКлиент.ВыполнитьКоманду("PrintTextDocument",
мВходныеПараметры, мВыходныеПараметры, Объект.Драйвер, мПараметрыУстройства, мПараметрыПодключения);

Если Не РезультатВыполнения Тогда
Результат = мОшибкаНеизвестно;
Объект.ОписаниеОшибки = мВыходныеПараметры[1];
Иначе
Результат = мНетОшибки;
Объект.Вставить("ВыходныеПараметры", мВыходныеПараметры);
КонецЕсли;

Возврат Результат;

КонецФункции

Получаем примерно такой псевдокод для печати из конфигурации с нашей обновленной обработкой обслуживания:

ПозицииЧека = Новый Массив;

Для Каждого СтрокаДляПечати Из СтрокиКПечати Цикл

// Формируем строку для печати в нужной структуре
СтрокаЧека = МенеджерОборудованияКлиентСервер.ПараметрыТекстовойСтрокиЧека(СтрокаДляПечати);
СтрокаЧека.Выравнивание = "Лево"; // Выравнивание на ленте, возможные значения: "Лево", "Право", "Центр"
ПозицииЧека.Добавить(СтрокаЧека);

КонецЦикла;

ДанныеДляПечати = Новый Массив;
ДанныеДляПечати.Добавить(ПозицииЧека);

// вызываем нашу добавленную функцию в обработку обслуживания
ОбработкаОбслуживания.НапечататьТекстовыйДокумент(ОбъектДрайвера, ДанныеДляПечати, ?(КассаККМ.ШиринаЛенты = 0, 32, КассаККМ.ШиринаЛенты)); // КассаККМ - ссылка на справочник КассыККМ, к которому подключен ККТ, соедржащий реквизит для ручного задания ширины ленты.

 

Тестировалось на Управление торговлей 10.3.47.3. Учитывая, что общие модули — часть БПО, то такой же механизм подойдет для печати и на УТ 11 в части всевдокода и общих модулей. ККТ использовался Штрих-LIGHT-01Ф.

Во вложение доработанная обработка обслуживания для Штрих-м (Атол по аналогии можно сделать) и внешняя печатная форма к документу Заказ покупателя, которая печатает заказ на ККТ.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *