Дополнительные поля в чеке в новом РМК УНФ 3.0

Я использовал тестовую кассу без оборудования. На ней можно неплохо обкатать работу с чеками.

Попытка найти место формирования чека по коду

К сожалению, у меня не было отладки на сервере, поэтому просто найти место создания чека было сложно.

В форме РабочееМестоКассира.ФормаРМК формирование чека происходит в процедуре ФискализироватьЧек.

Далее идет вызов РаспределеннаяФискализация.ДобавитьЧекВОчередьЧековККТ, но там записываются данные чека в регистр сведений ОчередьЧековККТ — в поле записи регистра ДанныеЧека добавляется структура ПараметрыЧекаККТ.

Чеки фискализируются в РаспределеннаяФискализацияКлиент.ФискализацияЧековВОчереди, но где именно создается чек, я по коду не нашел.

В итоге я решил найти поиском по вызову поиск строки «Документы.ЧекККМ.СоздатьДокумент()» и это принесло плоды.

Я нашел процедуру ОбщегоНазначенияРМКУНФ.ЗаписатьЧекККМПередПробитием где создавался чек.

Добавление своих реквизитов

К счастью, свои реквизиты можно добавить в форму РМК практически автоматом, просто добавив эти реквизиты в форму с таким же именем. В процедуре ОбщегоНазначенияРМКУНФ.ЗаписатьЧекККМПередПробитием есть замечательная строка, которая обеспечивает эту автоматизацию:

Важный нюанс: отложенный чек заполняется тоже в форме РМК вызовом ОборудованиеЧекопечатающиеУстройстваКлиентСервер.СоздатьОтложенныйЧек и, видимо, есть процедура для восстановления этого чека. Но там тоже есть вызов ЗаполнитьЗначенияСвойств, так что все должно тоже работать автоматом.

Реализация задачи

Создал вручную группу для размещения двух своих флажков:

Также добавил реквизиты для них в форму:

Также добавил реквизиты обработки:

Поля создаю кодом:


&НаСервере
Процедура дор_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	Привязка = ЭтаФорма.Элементы.дор_Флажки;
	
	Элемент = ЭтаФорма.Элементы.Вставить("дор_НеНачислятьБонусы", Тип("ПолеФормы"), Привязка);
	Элемент.Вид = ВидПоляФормы.ПолеФлажка;
	Элемент.ПутьКДанным = "дор_НеНачислятьБонусы";
	Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
	
	Элемент = ЭтаФорма.Элементы.Вставить("дор_ИсточникСайт", Тип("ПолеФормы"), Привязка);
	Элемент.Вид = ВидПоляФормы.ПолеФлажка;
	Элемент.ПутьКДанным = "дор_ИсточникСайт";
	Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;

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

Выглядит это так:

Пробовал создавать напрямую реквизиты, но они почему-то не показываются в форме. Всю голову сломал, функциональных опций нет, прав тоже, где-то говорят, что это глюк платформы.

Поэтому именно так. И добавляю еще в модуль ОбщегоНазначенияРМКУНФ обработчики событий по копированию этих реквизитов из формы в реквизиты объекта обработки:


&Перед("ЗаписатьЧекККМПередПробитием")
Процедура дор_ЗаписатьЧекККМПередПробитием(Форма, Отказ, ТекстОшибки, СистемаНалогообложения)
	Форма.Объект.дор_НеНачислятьБонусы = Форма.дор_НеНачислятьБонусы;
	Форма.Объект.дор_ИсточникСайт = Форма.дор_ИсточникСайт;
КонецПроцедуры

&Перед("СоздатьОтложенныйЧек")
Процедура дор_СоздатьОтложенныйЧек(Форма, ЧекСоздан)
	Форма.Объект.дор_НеНачислятьБонусы = Форма.дор_НеНачислятьБонусы;
	Форма.Объект.дор_ИсточникСайт = Форма.дор_ИсточникСайт;
КонецПроцедуры

&Перед("ЗаполнитьДанныеИзОтложенногоЧека")
Процедура дор_ЗаполнитьДанныеИзОтложенногоЧека(Форма, ОтложенныйЧек)
	Форма.дор_НеНачислятьБонусы = ОтложенныйЧек.дор_НеНачислятьБонусы;
	Форма.дор_ИсточникСайт = ОтложенныйЧек.дор_ИсточникСайт;
КонецПроцедуры

В итоге галочки переносятся из формы РМК:

И отложенные чеки тоже работают корректно.

Среда: УНФ 3.0.6.200 Объем: 1.5 час.

image_pdfimage_print

fixin

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

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

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

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