Эквайринг от Сбербанка: сбои в работе

1. bmf 05.09.16 07:23 Сейчас в теме
Есть несколько магазинов, где одна, где больше касс. На каждой кассе есть терминал verifone vx805 (где com, где USB). На всех кассах, кроме одной, бывает ситуация: набирается товар в чек, нажимается оплата картой, в окне авторизации на сумму нажимают enter, далее окно от эквайринга, клиент вставляет карту, вводит pin, проходит оплата, и выходит ОДИН слип, окон про ошибки нет, у клиента деньги списались. У кассира окно с набранными товарами, чек кассовый не выходит.
Причем это бывает очень иногда, буквально раз в два-три дня. В чем причина? Я так понимаю что пока эквайринг передает данные для второго слипа 1С:Розница воспринимает это как отмену оплаты. Может встречался кто с таким поведением?

Скоро открывать магазин типа супермаркет. Такое поведение эквайринга раздражае, а в суупермаркете будет просто критичным. Вот и думаю: а может ну ее эту 1С:Розница и поставить фронт от Атола или другое ПО.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
95. AlexCherdakov 20 19.12.17 07:30 Сейчас в теме
(94) раньше был в настройках подключаемого оборудования в 1с, сейчас их там нет для онлайн касс...
96. user747253 03.05.18 12:38 Сейчас в теме
Добрый день! Нашлось ли у кого-нибудь решение проблемы с зависанием при пробитии чеков по безналичной оплате? Штрих М02Ф, Эквайринг от СБ, 1С Розница, на 2 кассах одинаковые проблемы. Увеличение таймаута не помогло.
97. AlexCherdakov 20 03.05.18 12:56 Сейчас в теме
(96) целый ворох решений кому-то что-то из этого помогает, я например волшебного решения пока не нашел, но используя все методы стабильность повышается в разы...
Опишите ваше "зависание" подробнее
98. user747253 03.05.18 20:34 Сейчас в теме
(97) Проблема точно такая же как и у автора в первом посте.
100. AlexCherdakov 20 04.05.18 05:27 Сейчас в теме
(98)варианты которые снижают вероятность появления таких "ошибок"
1. обучение кассиров (поверьте большинство таких случаев именно неумение читать и думать)
2. подключение по ком порту или доппитание
3. винда ХР
4. замена терминалов на другую модель
5. стабильный интернет
6. если есть возможность снизить скорость печати ФР и увеличить таймаут

и напомню подобные проблемы могут возникать и при вполне объяснимых "железных" сбоях
короче решения у меня нет
106. tezdal 29 05.06.18 16:33 Сейчас в теме
(98) (1) (100)
(8) можно сделать изящнее.
в модуле
ПодключаемоеОборудованиеУниверсальныйДрайверКлиент
есть такая процедура

ПечатьТекста
которая по сути своей и отвечает за печать слип чеков.

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


Что мы тут видим, а видим мы тут простите б**ядство. Эти асинхронные вызовы с печатью чека, это реально от лукавого.

Что мы сделали у себя

Править надо этот участок

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


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


Согласен затычка не лучшая, но проще если оплата прошла закрыть чек и распечатать копию последнего слипа, штатной кнопкой.
Чем то что реализованно в 1С, выводится окно отмены, на терминала надпись отмена, надо вставить карту и ввести пин. У меня девочки тупо закрывали это окно.
Поэтому следуя логике, если мы провалились в данную процедуру, то следовательно банковская операция у нас прошла => Нам в принципе плевать на этот слип, деньги поступили и надо закрыть чек, далее распечатать копию слип чека банка.


у нас полет нормальный 3 месяца, пользоваться нужно осторожно.
Не ковырял где еще используется эта процедура.
Можно отбиться условиями конечно, было откровенно лень.
AlexCherdakov; +1 Ответить
107. AlexCherdakov 20 06.06.18 08:36 Сейчас в теме
(106) спасибо за еще одну "дырку", хотя 1С правы в таком случае правильнее отменять оплату, но учитывая уровень персонала на магазинах ваше решение лучше.
Но есть как минимум еще две "дыры", первая закрыть крестиком окно сложной оплаты во время работы с драйверами сбера (например когда клиент вводит пинкод), во втором случае при ошибке сбера и повторной попытке оплаты этого же чека сразу запускается оплата по карте минуя запуск формы сложной оплаты.
Ну и в третьих для уменьшения временного окна возникновения различных "сбоев" нужно сделать оплату по безналу минуя лишние нажатия и подтверждения кассиром, сразу обращаемся к сберу на полную сумму чека если оплата прошла сразу печатаем все необходимые чеки и закрываем документ. Все руки не доходят...
109. tezdal 29 06.06.18 09:12 Сейчас в теме
(107)
(107)
Но есть как минимум еще две "дыры", первая закрыть крестиком окно сложной оплаты во время работы с драйверами сбера (например когда клиент вводит пинкод), во втором случае при ошибке сбера и повторной попытке оплаты этого же чека сразу запускается оплата по карте минуя запуск формы сложной оплаты.
Ну и в третьих для уменьшения временного окна возникновения различных "сбоев" нужно сделать оплату по безналу минуя лишние нажатия и подтверждения кассиром, сразу обращаемся к сберу на полную сумму чека если оплата прошла сразу печатаем все необходимые чеки и закрываем документ. Все руки не доходят...

Если оплата прошла, драйвер сбера вернет результат = истина, в этот момент если же что то произошло при печати то следуя логике 1С мы в этот же "результат" вернем ложь, вообще не понимаю этого подхода, неужели штатно нельзя реализовать все разными переменными,


Терминал = *****ВыполнениеКоманды(бла бла бла);

Если Терминал Тогда
	Пошла процедура печати слип чека
КонецЕсли

Возврат Терминал;

Показать


В нашем же случае, при ошибке печати, мы все равно вернем истину (та что пришла с терминала)
и в таблицу оплат добавится "Банковская карта" 1000 рублей
кассир может закрыть форму сложной оплаты,но т.к. введены платежи при повторном открытии они будут там продолжать висеть.

Полностью убрать вызов формы сложной оплаты идея хорошая, но зачастую бывает смешанная оплата, 2мя картами или же нал + карта.

(108) Уточните про проведут отмену? Если что то случилось с лентой, то 1С должно быть плевать на эту ленту, мы оплату с человека уже взяли, она зафиксированна.

В случае замятия бумаги на терминал не подается команда отмены транзакции, мы просто закрываем чек. и печатаем последний слип.
110. AlexCherdakov 20 07.06.18 11:05 Сейчас в теме
(109)
Уточните про проведут отмену? Если что то случилось с лентой, то 1С должно быть плевать на эту ленту, мы оплату с человека уже взяли, она зафиксированна.

не могу сейчас подтвердить свое предположение в отладчике, у меня для тестов есть только ФР а он идет по другой ветке кода, но все равно прелагаю рассмотреть ситуацию:
нажимаем оплату по ПК ждем пока попросит вставить карту выключаем ККМ проводим оплату выходит ошибка и терминал просит снова вставить карту!!! вставляем проходит отмена оплаты
....
заморочился подключил ККМ, если ПараметрыПодключения.ТипОборудования = "ФискальныйРегистратор" то при внесении аналогичных вашей правки будет баг описанный выше, а если ПараметрыПодключения.ТипОборудования = "ККТ" Или ПараметрыПодключения.ТипОборудования = "ПринтерЧеков" тогда все ок, возможно я просто недоразобрался в ветке с ТипОборудования = "ФискальныйРегистратор" ну да и фиг с ним...

ЗЫ одна из причин почему может не распечататься слип - недопустимые символы у меня затычка такая: СтрокаТекста=ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(СтрокаТекста,"[отрезка]");
с вашей правкой она не принципиальна
111. tezdal 29 07.06.18 12:20 Сейчас в теме
(110) я поэтому и писал) что пользоваться надо аккуратно. у меня ККТ оборудование, таких случаев не возникает.
112. AlexCherdakov 20 07.06.18 12:38 Сейчас в теме
(109)и еще проблемка если во время снятия Z выключим ФР то с вашей правкой отчет о розничных продажах сформируется а смена не закроется ни в 1С ни в ФР, к чему это приведет в дальнейшем не берусь говорить, всякие обмены там обработки страшные при обновлениях и т.п.
113. tezdal 29 07.06.18 14:19 Сейчас в теме
(112) вопрос, почему отчет сформируется?
какое отношение имеет "ПечатьТекста" в Универсальном Драйвере? к Z отчету выполняемому на драйвере Конкретного оборудования.
Если бы Z отчет снимался командой
Команда = "PrintText"
я бы понял.
Z отчет команду имеет помоему
Команда = "CloseShift"


эта заглушка всего лишь меняет логику работы внутри процедуры печати текста
т.е. слипа, а не глобально во всех модулях рубит к чертям все проверки во всех режимах ККТ
108. AlexCherdakov 20 06.06.18 08:46 Сейчас в теме
(106)И еще вопрос а если кассиры все-же проведут отмену, чек будет считаться оплаченным? баг?
99. пользователь 04.05.18 05:26
Сообщение было скрыто модератором.
...
114. tezdal 29 07.06.18 14:22 Сейчас в теме
// Печать слип чека
	ИначеЕсли Команда = "PrintText" ИЛИ Команда = "ПечатьТекста"  Тогда
		СтрокаТекста = ВходныеПараметры[0];
		Результат = ПечатьТекста(ОбъектДрайвера, Параметры, ПараметрыПодключения, СтрокаТекста, ВыходныеПараметры);




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


каким образом у вас этот участок кода отвечает за Z отчет?
115. AlexCherdakov 20 08.06.18 06:09 Сейчас в теме
(114) да, вы правы, если ошибка при печати Zотчета то ОРП формируется в любом случае, это стандартная логика работы 1С. Меня ввела в заблуждение печать сверки с банком перед Zотчетом. Все еще раз проверил с вашей правкой в момент закрытия смены тоже лучше, если вдруг произойдет ошибка только при печати сверки с банком то все отработает отлично(что собственно логично т.к. ПечатьТекста )) ).
Переношу вашу правку на свою рабочую базу, еще раз спасибо
116. tezdal 29 08.06.18 10:21 Сейчас в теме
Да не за что) грызем наш кактус потихоньку, плачем колемся, но а куда деваться)))
1С и логика разошлись в разные стороны с времен ввода УФ, Ассинхронные вызовы туда же.
117. AlexCherdakov 20 10.08.18 12:09 Сейчас в теме
Установили винду десятку, при оплате картой лаг между подтверждением суммы и запуском драйверов сбера 10-20 секунд. Решение отключать защитник виндовс
119. alexnv1976 09.08.19 12:51 Сейчас в теме
у меня как раз 10, но мы поменяли после грозы роутер, вопрос - если 1с видит термина, а банк нет, где всеенти настройки
120. AlexCherdakov 20 09.08.19 13:25 Сейчас в теме
(119)
pinpad.ini
но лучше вызвать спеца сбера, тем более что банк запрещает лезть в его программы
118. alexnv1976 09.08.19 12:44 Сейчас в теме
Ребята, у меня проблемы с ККТ (нормально не видит порты на усби-сом), сразу проблема либо в подключении скана, либо пишет нет связи ккт ком-порты все назначены.Ума не приложу чем проблема
121. AlexCherdakov 20 09.08.19 13:27 Сейчас в теме
(118)ниче не понял из вашего объяснения но похоже не установлены драйвера раз в списке усб нет компортов атола, ставьте драйвера и через их программу ищите ккт потом настраивайте в 1с
122. independ 1526 09.08.19 14:05 Сейчас в теме
(118) поменять usb-шнурок, запретить энергосбережение для usb устройств, проверить заземление, отключить проверку цифровой подписи драйвера
124. Suslik088 11.05.21 00:06 Сейчас в теме
(4)странная ошибка... А причем тут Сбер? Судя по всему умирает комп... Отвал интерфейсов.
125. Suslik088 11.05.21 00:08 Сейчас в теме
(4)странная ошибка... А причем тут Сбер? Судя по всему умирает комп... Отвал интерфейсов.
126. azino7 5 24.09.21 12:29 Сейчас в теме
1с Розница 2.3.8.27
Платформа 8.3.18.1483
Платформу пробовал 8.3.19.1229, тоже самое
Эквайринг сбербанка(тех.спец. сбера говорят что в логах по эквайрингу никаких ошибок, драйвера обновленные), Фискальный регистратор ЭЛВЕС ФР
В течении дня происходит сбой при пробитии чека по эквайрингу. Выходит ошибка Программа "1cv8c" не работает. Возникшая проблема привела к прекращению работы программы.
Банковский чек выходит, оплата проходит, а кассовый не выходит. После перезагрузки программы, чека нигде нету, в журнале регистраций 1с по чеку никаких записей нету
127. insurgut 207 08.10.21 08:20 Сейчас в теме
Проблема актуальная на данный момент. Розница 2.3.9.42, платформа 8.3.18.1208. Тайм-аутов никаких у Атол ККТ нет. В настройках сбера тоже ничего похожего на увеличение тайм-аута не нашел.

Внес доработки из данной темы (замена недопустимых символов, а так же "всегда Истина" при печати текста на ККТ), неделю поработаем, проверим, отпишусь о результатах.
128. azino7 5 21.10.21 14:02 Сейчас в теме
Решили проблему откатом сберовских драйверов и прошивкой терминала на прошлую версию.
Оставьте свое сообщение

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