Об 1С:Розница, которая задавала слишком много вопросов при оплате картой

Клиенту не понравилось, что 1С:Розница задает слишком много вопросов при оплате платежной картой, эквайринг не подключен к кассе. Он захотел сэкономить энергию и внимание продавца, чтобы меньше кнопок нажимать можно.

В типовой реализации нажимается:
1. Кнопка «Платежная карта»
2. Появляется окно Авторизация операции, где уже стоит сумма чека, нужно нажать Enter
3. Появляется окно «Операция оплаты на терминале прошла успешно», нужно ответить Да
4. Возвращается опять в окно Авторизация операции, хотя сумма оплачена полностью, нужно нажать Enter

Мне сомнителен шаг 4, зачем показывать это окно, если целиком оплачено. Мне сомнителен также шаг 2, можно же сразу показать в одном окне Сумму для авторизации, текст в окне «введите сумму», вопрос «сумма прошла» и кнопки Да, Нет, Отмена.

Первоначально я спрашивал про тему автоматического подтверждения оплаты картой на Мисте, но мне не посоветовали ничего утешительного.

Поэтому возьмем дело в свои руки. Займемся вивисекцией — будем нажимать нужные кнопки автоматом.

Первое окно — общая форма ввода числа ФормаВводаЧисла обработки РМКУправляемыйРежим:

Нажимаем Enter сразу при открытии:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Если АвторизацияЭТ Тогда
		// Проверка и подключение считывателей МК.
		ПоддерживаемыеТипыПО = Новый Массив();
		ПоддерживаемыеТипыПО.Добавить("СчитывательМагнитныхКарт");
		ОповещенияПриПодключении = Новый ОписаниеОповещения("ПодключитьОборудованиеЗавершение", ЭтотОбъект);  
		МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПоТипу(,ЭтотОбъект, ПоддерживаемыеТипыПО);
		
	КонецЕсли;
	
	//Осипов 2022-01-05 для автоподверждения эквайринга
	Если АвторизацияЭТ Тогда
		ПодключитьОбработчикОжидания("_АвтоподверждениеЭквайринга", 0.1, Истина);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура _АвтоподверждениеЭквайринга() Экспорт
	//Осипов 2022-01-05 для автоподверждения эквайринга
	КомандаEnter(Неопределено);
КонецПроцедуры

Следующее окно — общая форма ФормаРМКУправляемаяИнформацииОбОшибке:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Если Элементы.КомандаОтветНет.КнопкаПоУмолчанию Тогда
		ЭтаФорма.ТекущийЭлемент = Элементы.КомандаОтветНет;
	КонецЕсли;
	
	//Осипов 2022-01-05 для автоподверждения эквайринга
	Если Найти(Элементы.ДекорацияТекстИнформации.Заголовок,"Требуется выполнить операцию оплаты на эквайринговом терминале") <> 0 Тогда
		ПодключитьОбработчикОжидания("_АвтоподверждениеЭквайринга", 0.1, Истина);
	КонецЕсли;

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

&НаКлиенте
Процедура _АвтоподверждениеЭквайринга() Экспорт
	//Осипов 2022-01-05 для автоподверждения эквайринга
	КомандаОтветДа(Неопределено);
КонецПроцедуры

Следующее окно — общая форма ФормаСложнойОплаты:

&НаКлиенте
Процедура ОповещениеОткрытьФормуВопросаУспехОперацииНаЭквайринговомТерминале(РезультатОткрытияФормы, ДополнительныеПараметры) Экспорт
	
	Если НЕ РезультатОткрытияФормы = Неопределено Тогда
		Если ВРЕГ(РезультатОткрытияФормы) = "ДА" Тогда
			ДополнительныеПараметры.ПараметрДействия.НомерСсылкиОперации = "";
			ДополнительныеПараметры.ПараметрДействия.НомерЧекаЭТ         = "";
			ЗавершитьОплатуПлатежнойКартойЧерезЭквайринговыйТерминалОкончание(ДополнительныеПараметры.ПараметрДействия);
		КонецЕсли;
	КонецЕсли;
	
	ПриЗавершенииОплатуПлатежнойКартойЧерезЭквайринговыйТерминал(ДополнительныеПараметры.ПараметрДействия)
	
	//Осипов 2022-01-05 для автоподверждения эквайринга
	; 
	Если ТекущиеВидыОплат.Итог("Сумма") = ИтогПоОрганизации И ТекущиеВидыОплат.Количество()> 0 И СокрЛП(ТекущиеВидыОплат[0].ВидОплаты) = "Платежная карта" Тогда
		КомандаEnter(Неопределено); //Автоматом нажимаем команду Enter
	КонецЕсли;

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

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

Последнее окно я не хотел автоматом закрывать, нажимать Enter программно, но клиенту так понравилось что оплата происходит нажатием одной кнопки (быстрее чем налом, там две надо нажать), что я решил оставить так как есть.

Среда: Розница для Беларуси, редакция 2.2. Локализация для Республики Беларусь: СООО «1С-Минск». (2.2.11.2)

Платформа: 8.3.12.1790

Объем: 1 час.

fixin

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

Читайте также:

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

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