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

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

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

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

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



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

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

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

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



Свежие комментарии