Подключение принтеров чеков для печати чеков? УТ11
Клиент захотел иметь возможность печати чеков на принтер чеков.
Вдохновившись статьей про подключение принтеров чеков в УТ, попробовал повторить.
Ничего в коде не менял, просто в элементе справочника «Настройки РМК» поменял:
- Выбрал нужное рабочее место в поле «Рабочее место»
- В табличной части Кассы выбрал кассу организации и подключаемое оборудование принтера чеков на этом рабочем месте.
- В табличной части «Кассы ККМ» выбрал кассу ККМ и подключаемое оборудование принтера чеков на этом рабочем месте.

Сама касса ККМ имеет тип «Фискальный регистратор».
После этого оборудование подключилось:

Но при пробитии чека или открытии смены возникала ошибка:

Я пробовал остановиться в модуле ОборудованиеЧекопечатающиеУстройства и в параметрах операции сбросить галочку «Автономная ККТ» или «Принтер чеков»:

Но тогда получаю ошибку:
При открытии смены произошла ошибка.
Смена не открыта на фискальном устройстве.
Дополнительное описание:
Ошибка вызова метода драйвера <НапечататьТекстовыйДокумент>.
Значение не является значением объектного типа (Количество)
{ОбщийМодуль.ПодключаемоеОборудованиеДрайверКлиент.Модуль(1851)}:Если ДанныеОперации.Свойство("ТестовыеЧеки") И ДанныеОперации.ТестовыеЧеки.Количество() > 0 Тогда
{ОбщийМодуль.ПодключаемоеОборудованиеДрайверКлиент.Модуль(1999)}:РезультатВыполнения = Ждать ПечатьТекста(ОбъектДрайвера, ПараметрыПодключения, ДанныеОперации);
{ОбщийМодуль.ПодключаемоеОборудованиеДрайверКлиент.Модуль(25)}:РезультатВыполнения = Ждать ОткрытьСмену(ОбъектДрайвера, ПараметрыПодключения, ДанныеОперации);
{ОбщийМодуль.ПодключаемоеОборудованиеДрайверКлиент.Модуль(1044)}:Результат = Ждать ВыполнениеКоманды(ПараметрыПодключения, Команда, ДанныеОперации);
{ОбщийМодуль.МенеджерОборудованияКлиент.Модуль(1942)}:ОбработчикДрайвера.НачатьВыполнениеКоманды(ОписаниеОповещения, ПодключенноеУстройство, Команда, ДанныеОперации);
{ОбщийМодуль.МенеджерОборудованияКлиент.Модуль(2098)}:ВыполнениеКомандыОбработчика(ПодключенноеУстройство, ПараметрыВыполнениеКоманды);
{ОбщийМодуль.ОборудованиеЧекопечатающиеУстройстваКлиент.Модуль(149)}:МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(Оповещение, ИдентификаторКлиента, ИдентификаторУстройства,
{ОбщийМодуль.РозничныеПродажиКлиент.Модуль(133)}:ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьОткрытиеСменыНаФискальномУстройстве(
{ОбщийМодуль.РозничныеПродажиКлиент.Модуль(67)}:ВыполнитьОбработкуОповещения(ОповещениеЗавершенияОперации, Неопределено);
{ОбщийМодуль.РозничныеПродажиКлиент.Модуль(1034)}:ОткрытьКассовуюСмену(
{mngcore/MessageBox.clf(4)}:Close(-100);
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
В общем подумал, что проще самому формировать текст чека, делать чек проведенным и отправлять на Win-принтер. Менее затратно. Правда, если это не Win-принтер, может имеет смысл и «побороться».
UPD: В итоге сделал формирование текста чека программно:
&НаСервере Процедура пчккм_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) Привязка = Элементы.ФормаПробитьЧек; ИмяКоманды = "пчккм_Предчек"; Команда = ЭтаФорма.Команды.Добавить(ИмяКоманды); Команда.Заголовок = "Предчек"; Команда.Действие = ИмяКоманды; //Команда.Картинка = БиблиотекаКартинок.ИмяКартинки; Команда.Отображение = ОтображениеКнопки.КартинкаИТекст; КнопкаФормы = ЭтаФорма.Элементы.Вставить(ИмяКоманды, Тип("КнопкаФормы"),Привязка.Родитель, Привязка); КнопкаФормы.ИмяКоманды = ИмяКоманды; Привязка = Элементы.ШапкаПраво; ИмяЭлемента = "пчккм_НапечатанПредчек"; Элемент = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ПолеФормы"), Привязка); Элемент.Вид = ВидПоляФормы.ПолеФлажка; Элемент.ПутьКДанным = "Объект.пчккм_НапечатанПредчек"; Элемент.ТолькоПросмотр = Не РольДоступна("АдминистраторСистемы"); КонецПроцедуры &НаКлиенте Процедура пчккм_Предчек(Команда) Экспорт Если НЕ Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение)) Тогда Возврат; КонецЕсли; Р = пчккм_ПредчекНаСервере(); Если НЕ Р.ОК Тогда ПоказатьПредупреждение(, "Предчек не пробит, ошибка: " + Р.Текст); Возврат; КонецЕсли; ОповещениеПриЗавершении = Новый ОписаниеОповещения("пчккм_ПечатьТекстаЗавершение", ЭтотОбъект); ПараметрыОперации = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыПечатиТекста(Р.ТекстЧека); ДополнительныеПараметры = Неопределено; //ФискальноеУстройство = ЭтаФорма.Оборудование[0].Ссылка; //ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьПечатьТекста(ОповещениеПриЗавершении, УникальныйИдентификатор, ФискальноеУстройство, ПараметрыОперации, ДополнительныеПараметры); ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьПечатьТекста(ОповещениеПриЗавершении, УникальныйИдентификатор, Неопределено, ПараметрыОперации); КонецПроцедуры &НаКлиенте Процедура пчккм_ПечатьТекстаЗавершение(РезультатВыполнения, Параметры) Экспорт Если РезультатВыполнения.Результат Тогда Объект.пчккм_НапечатанПредчек = истина; Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение)); Иначе ПоказатьПредупреждение(, "Ошибка: " + РезультатВыполнения.ОписаниеОшибки); КонецЕсли; КонецПроцедуры &НаСервере Функция пчккм_ПредчекНаСервере() Экспорт Р = Новый Структура("ОК, Текст", ложь, ""); Основание = Объект.ДокументОснование; Если ТипЗнч(Основание) <> ТИп("ДокументСсылка.ЗаказНаряд") Тогда Р.Текст = "Предчек возможен только на основании заказа-наряда"; Возврат Р; КонецЕсли; СуммаВсего = 0; ТекстЧека = ""; Для Каждого Строка ИЗ Основание.Товары Цикл ТекстЧека = ТекстЧека + Строка(Строка.Номенклатура) + " " + Строка(Строка.Цена) + " * " + Строка(Строка.Количество) + " " + Строка(Строка.ЕдиницаИзмерения) + " = " + Строка(Строка.СуммаВсего) + Символы.ПС; СуммаВсего = СуммаВсего + Строка.СуммаВсего; КонецЦикла; Для Каждого Строка ИЗ Основание.Автоработы Цикл ТекстЧека = ТекстЧека + Строка(Строка.Авторабота) + " " + Строка(Строка.Цена) + " * " + Строка(Строка.Количество) + " " + "шт." + " = " + Строка(Строка.СуммаВсего) + Символы.ПС;; СуммаВсего = СуммаВсего + Строка.СуммаВсего; КонецЦикла; ТекстЧека = ТекстЧека + "Сумма итого: " + Строка(СуммаВсего) + Символы.ПС; Р.Вставить("ТекстЧека", ТекстЧека); Сообщить(ТекстЧека); Р.ОК = Истина; Возврат Р; КонецФункции
Правда, PDF-принтер и PDF-24 принтеры не показывают текст чека (у них и при подключении оборудования тест чека не проходит), можно увидеть только на реально принтере чеков:

Среда: 11.5.21.125




Добрый день? получилось побороть проблему?
нет, написал код, чтобы печатал не фискальные строки на принтер. Несложный получился.