Печать произвольного текста на фискальном регистраторе (не чек)

1. stYaku 27.09.19 15:17 Сейчас в теме
Здравствуйте коллеги!
Необходимо распечатать произвольную информацию на фискальном регистраторе.

Помещаю строки в массив и отправляю на печать:
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(Оповещение, ИдентификаторУстройства, "PrintText", Массив);

Все здорово, данные печатаются. Но перед моими данными печатается шапка(с названием организации, инн и прочее). Как я понимаю, это или драйвер или само устройство подкидывает.
Может кто знает как напечатать текст без "автоматической" шапки?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. _MavR_ 28.09.19 19:13 Сейчас в теме
Устройство подкидывает. Тест-драйвером в настройках покопайся. Но, с большой долей вероятности, сломаешь работу девайса как фискального регистратора
3. stYaku 30.09.19 08:27 Сейчас в теме
(2)
Тест-драйвером в настройках покопайся.

Это как?
4. _MavR_ 30.09.19 15:10 Сейчас в теме
Для тех же Штрихов или Атолов (за другие точно не скажу) есть тест-драйвер, он устанавливается с драйверами, им можно менять настройки самого кассового аппарата. Вот им и можно попробовать убрать шапку. Но для наччала почитай как им пользоваться для твоей модели и версии драйверов. Потому как если мозги кассе свернуть это прямой путь к сервисникам с соответствующей оплатой работ по восстановлению
5. FloNes 14 01.10.19 10:52 Сейчас в теме
Попробуй Функция "НапечататьСтроки" . Делаю так все работает Штрих-М. (посмотри Обработку ТОСервис в конфигураторе)

Функция ПечатьТекста(Идентификатор, МассивСтрокСлипЧека, ШиринаЧека) Экспорт

Обработка = Неопределено;
Объект = Неопределено;
Результат = ПолучитьОбъектДрайвера(Идентификатор, Обработка, Объект);

Если НЕ ЗначениеЗаполнено(Результат) Тогда
Результат = Обработка.НапечататьСтроки(Объект, МассивСтрокСлипЧека, ШиринаЧека);
мОписаниеОшибки = Объект.ОписаниеОшибки;
Иначе
мОписаниеОшибки = ПолучитьТекстОшибкиПодключенияТО("ФР");
КонецЕсли;

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

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

Функция ПолучитьОбъектДрайвера(Идентификатор, Обработка, Объект) Экспорт

Результат = мНетОшибки;

ТО = ПолучитьТО();

Оборудование = ТО.Найти(Идентификатор, "Идентификатор");
Если Оборудование = Неопределено Тогда
Результат = мОшибкаНеизвестно;
Иначе
Обработка = Оборудование.Обработка;
Объект = Оборудование.Объект;
КонецЕсли;

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

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


Данная функция осуществляет построчную печать произвольного нефискального чека. Применяется, например, для печати слип-чеков на ФР.

// Функция осуществляет построчную печать нефискального чека из переданного массива строк.
// (API v2.0)
//
// Параметры:
// Объект - <*>
// - Объект драйвера ФР.
//
// МассивСтрок - <Массив>
// - Массив строк для печати.
//
// Ширина - <Число>
// - Ширина чековой ленты.
//
// Возвращаемое значение:
// <ПеречислениеСсылка.ТООшибки*> - Результат выполнения операции.
//
Функция НапечататьСтроки(Объект, МассивСтрок, Ширина) Экспорт
6. stYaku 02.10.19 13:23 Сейчас в теме
(5) А какая у вас конфигурация и на чем печатаете (тип оборудования)?

У меня все на 8.3. Я пытаюсь сделать печать из УНФ 1.6, пробовал и из Розницы 2.2. Печатаю на оборудовании с типом "ККТ с передачей данных".

Обработку "ТОСервис" в конфигураторе не нашел, зато нашел на сайте 1С "Обработки обслуживания торгового оборудования". Как я понимаю они раньше использовались в предыдущих конфигурациях. Получается в новых конфигурациях вместо зоопарка обработок работа с драйвером происходит через общий модуль "ПодключаемоеОборудованиеУниверсальныйДрайверКлиент".

Посмотрел код из обработки обслуживания "ШтрихМККТсПередачейДанных". Там есть функция "НапечататьСтроки", которая на самом деле выглядит вот так:
Функция НапечататьСтроки(Объект, МассивСтрок, Ширина = 0) Экспорт

	СтрокаДляПечати = "";
	Для Каждого СтрокаТекста Из МассивСтрок Цикл
		СтрокаДляПечати = СтрокаДляПечати + СтрокаТекста + Символы.ПС;
	КонецЦикла;
	
	мВходныеПараметры.Очистить();
	мВходныеПараметры.Добавить(СтрокаДляПечати);

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

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

КонецФункции
Показать

Которая на самом деле вызывает туже функцию, что и мой код:
Результат = ОбъектДрайвера.НапечататьТекстовыйДокумент(ПараметрыПодключения.ИДУстройства, ТекстПечати);


В обработке обслуживания "ШтрихМФискальныеРегистраторы", вызывается функция:
Объект.Драйвер.НапечататьНефискСтроку(Объект.ИДУстройства, СтрокаТекста)

Но такой функции нет в драйверах для ККМ Онлайн.
7. FloNes 14 03.10.19 03:31 Сейчас в теме
Печатаю из "Управление торговлей", редакция 10.3 на ШТРИХ-М-01Ф и ККТ РР-02Ф (ккт с передачей данных).

Поищи может перед
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(Оповещение, ИдентификаторУстройства, "PrintText", Массив);

где-то выполняется команда
Результат = ОткрытьЧек(ОбъектДрайвера, Параметры, ПараметрыПодключения, Ложь, Ложь, ВыходныеПараметры);
Эта команда и отвечает за печать шапки в чеке


Код из 8.3. Управление торговлей, редакция 11 не совсем корректный пример другого не нашел. Если закомментировать Открытие и Закрытие чека то слип чек должен выйте на ккм без шапки.

// Осуществляет печать слип чека.
//
Функция ПечатьТекста(ОбъектДрайвера, Параметры, ПараметрыПодключения, СтрокаТекста, ВыходныеПараметры) Экспорт

	Результат  = Истина;

	// Открываем чек - вот эта команда печатает шапку на чек ее необходимо закомментировать
	//Результат = ОткрытьЧек(ОбъектДрайвера, Параметры, ПараметрыПодключения, Ложь, Ложь, ВыходныеПараметры);

	// Печатаем строки чека
	//Если Результат Тогда
		Для НомерСтроки = 1 По СтрЧислоСтрок(СтрокаТекста) Цикл
			ВыделеннаяСтрока = СтрПолучитьСтроку(СтрокаТекста, НомерСтроки);
			Если (Найти(ВыделеннаяСтрока, Символ(Параметры.КодСимволаЧастичногоОтреза)) > 0)
				Или (Найти(ВыделеннаяСтрока, "[отрезка]") > 0)
				Или (Найти(ВыделеннаяСтрока, "[spoiler]") > 0) Тогда
				ТаблицаОплат = Новый Массив();
				Результат = ЗакрытьЧек(ОбъектДрайвера, Параметры, ПараметрыПодключения, ТаблицаОплат, ВыходныеПараметры);
				Результат = ОткрытьЧек(ОбъектДрайвера, Параметры, ПараметрыПодключения, Ложь, Ложь, ВыходныеПараметры);
			Иначе
				Если НЕ НапечататьНефискальнуюСтроку(ОбъектДрайвера, Параметры, ПараметрыПодключения,
				                                     ВыделеннаяСтрока, ВыходныеПараметры) Тогда
					Прервать;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	//КонецЕсли;
	
	// Закрываем чек - ну и комментируем закрытие т.к. не открывали чек
	//Если Результат Тогда
		//ТаблицаОплат = Новый Массив();
	//	Результат = ЗакрытьЧек(ОбъектДрайвера, Параметры, ПараметрыПодключения, ТаблицаОплат, ВыходныеПараметры);
	//КонецЕсли;

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

КонецФункции
Показать
8. stYaku 04.10.19 11:32 Сейчас в теме
У меня не вызывается нигде "ОткрытьЧек/Закрыть чек".
Я могу просто распечатать строку через драйвер, шапка будет:
ОбъектДрайвера.НапечататьТекстовыйДокумент(ПараметрыПодключения.ИДУстройства, ТекстПечати);


То-есть у вас на "ККТ РР-02Ф", рабоатет "НапечататьНефискальнуюСтроку"?
9. FloNes 14 04.10.19 20:46 Сейчас в теме
Да в торговле 8.2 все работает. Проверю как работает в 8.3 отпишусь
10. user906423 12.01.24 11:24 Сейчас в теме
(9)Здравствуйте. Скажите, а вы печатаете произвольный текст на ФР? Опишу свою задачу: хочу иметь обработку или внешнюю печатную форму, в которой будет окно, куда можно написать любой текст, и по нажатию кнопки "печать", будет осуществляться печать на ФР. Понятно что нефискальных строк.
Вы осуществили так же?
11. FloNes 14 15.01.24 07:55 Сейчас в теме
(10) Да, через Функция "НапечататьСтроки" описанную выше
12. user906423 15.01.24 20:11 Сейчас в теме
(11) вы текст вводите в (СтрокаДляПечати = "";) или открывается графический вид и туда уже вводите текст?
13. FloNes 14 18.01.24 06:16 Сейчас в теме
(12)
СтрокаДляПечати

Не подскажу, этим проектом занимался давно уже не припомню всех мелочей, а доработок нет этих
Судя по коду СтрокаДляПечати = Это уже именно текстовая строка идет
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот