Печатаем «копию» чека на принтере чеков автоматом Розница/УНФ 3.0

В Рознице/УНФ 3.0 в настройках рабочего места кассира появилась новая опция «Печатать копии чека при пробитии чека ККМ»:

Можно это использовать, если мы делаем чек пробитым без фискализации, как я уже писал раньше.

В форме РабочееМестоКассира.ФормаРМК анализируется этот параметр:

Также интересен код в другой процедуре ПробитьЧекНаКлиентеЗавершение этой формы:

Копия чека пробивается в ОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент.ВыполнитьКомандуЗавершение:

Параметры тут простые, УстройствоПечати можно взять из реквизита формы рабочего места кассира ПринтерЧеков. Соответствие пустое.

Конечно, было бы наивным ожидать от 1С отдельной функции, которая бы пробивало копию чека, у нее слишком «лапшевидный» и «плохо изолируемый» код, но можно вызвать команду ВыполнитьКомандуЗавершение с нужными параметрами.

Вот такая настройка не работает, т.к. в ОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент.ВыполнитьКомандуЗавершение товарный чек печатается только на бумажный принтер:

Но в 1С есть неожиданно процедура печати товарного чека, хотя в нее и не передается вид печати товарного чека:

Поэтому можно вызвать печать товарного чека на принтере так (после вызова ПробитьЧекНаКлиентеЗавершение):

&НаКлиенте
Процедура НеФискализироватьЧек(Контекст, ДополнительныеДанные,  СистемаНалогообложения)
	
	ИмяИдентификатора = НСтр("ru = 'Обработка.РабочееМестоКассира.ФискализироватьЧек'");
	ФиксироватьСОшибкой = Ложь;
	АвтозавершениеЗамера = Ложь;
	ПараметрыПакетнойОперации = Неопределено;
	
	ИдентификаторЗамераПробитияЧека = ОценкаПроизводительностиКлиент.ЗамерВремени(ИмяИдентификатора,
		ФиксироватьСОшибкой, АвтозавершениеЗамера);
	
	ОбщегоНазначенияРМККлиентПереопределяемый.ЗаполнитьДополнительныеДанныеДляПробитияЧека(ЭтотОбъект,
		ДополнительныеДанные);
	ОбщиеПараметры = ДанныеДляПробитияЧека(Контекст, ДополнительныеДанные, СистемаНалогообложения);
	ОбновитьРеквизитыФормыПослеПодготовкиДанныхДляЧека(ДополнительныеДанные);
	
	ОбщиеПараметры.Электронно = НЕ ДополнительныеДанные.ПечататьБумажныйЧек;
	
	ДанныеКПередачеВДисплейПокупателя.ЧекФискализации = ОбщиеПараметры.ДокументОснование;
	
	РезультатВыполнения = Новый Структура;
	РезультатВыполнения.Вставить("ОписаниеОшибки", "");
	РезультатВыполнения.Вставить("Результат", Истина);
	РезультатВыполнения.Вставить("РезультатПакетнойОперации", Неопределено);
	РезультатВыполнения.Вставить("ТипПакетнойОперации", ПредопределенноеЗначение("Перечисление.ТипыПакетнойОперацииВОчередиЧеков.ПустаяСсылка"));
	РезультатВыполнения.Вставить("ФискализированныйЧек", ОбщиеПараметры.ДокументОснование); 
	
	ПробитьЧекНаКлиентеЗавершение(РезультатВыполнения, Параметры);  
	
	Если 
		РезультатВыполнения.Свойство("Результат") И РезультатВыполнения.Результат И
		РезультатВыполнения.Свойство("ФискализированныйЧек") И ЗначениеЗаполнено(РезультатВыполнения.ФискализированныйЧек) Тогда
		ПредСпособФормированияТоварногоЧека = СпособФормированияТоварногоЧека;
		СпособФормированияТоварногоЧека = 2; //на принтере чеков
		//Напечатает только если принтер чеков заполнен
		НапечататьТоварныйЧекПоФискальномуЧеку(РезультатВыполнения.ФискализированныйЧек);                                                          
		//Восстанавливаем предыдущий способ
		СпособФормированияТоварногоЧека = ПредСпособФормированияТоварногоЧека;
		
	КонецЕсли;

	
КонецПроцедуры

Среда: 3.0.12.261 Объем: 1.5 час

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

Добавить комментарий

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