|
Ошибка D3h от ККМ при проверке Честный знак | ☑ | ||
---|---|---|---|---|
0
proglib
28.01.25
✎
18:54
|
При печати чека на ККМ при проверке в честном знаке касса возвращает ошибку "D3h. Код товара не распознан".
Причем если марка на которую возвращается ошибка первая, то ошибки нет. Ошибка только когда марка не первая. В чем может быть дело? |
|||
1
pablo_escobar
28.01.25
✎
19:43
|
(0) xml чека при ошибке нужно посмотреть. скидка в чеке есть?
|
|||
2
proglib
29.01.25
✎
11:24
|
xml проверки:
<?xml version="1.0" encoding="UTF-8"?> <RequestKM GUID="bd965267-621d-4728-9738-60f3d60ea2ab" WaitForResult="True" NotSendToServer="False" MarkingCode="MDEwNDYyMDIzMDExMDAyNTIxNXBQPTUuTUNGaDFtUh05MzgyQXc=" PlannedStatus="1"/> xml ответа: <?xml version="1.0"?> <ProcessingKMResult GUID="bd965267-621d-4728-9738-60f3d60ea2ab" Result="true" ResultCode="15" StatusInfo="1" HandleCode="0"/> Ошибку возвращает код: Результат = ОбъектДрайвера.ПодтвердитьКМ(ПараметрыПодключения.ИДУстройства, ИдентификаторЗапроса, ?(Выбытие, 0, 1) ); ИдентификаторЗапроса равен bd965267-621d-4728-9738-60f3d60ea2ab Описание ошибки: D3h, Код товара не распознан |
|||
3
MWWRuza
29.01.25
✎
13:05
|
А вот это что такое вообще: MDEwNDYyMDIzMDExMDAyNTIxNXBQPTUuTUNGaDFtUh05MzgyQXc
Это не код марки. По структуре видно. Сюда, должен передаваться код марки "как есть", как со сканера прилетает. Или сканируют "что-то не то", или сканер так настроен - возможно, это фрагмент кода марки из нее "вырезан". Приложите фотку марки, которая в этом чеке была, посмотрим что это такое, как ее нормальный сканер прочитает. (1) В данном случае, скидка тут вообще ни при чем. Тут явно "кривой" код марки. PS И ТС как большинство, путает, где ошибка возникла - в РР или кассе, при проверке через ОИСМ. Тот идентификатор запроса - это ЧЗ возвращает, при проверке по РР. Там скорее всего отрицательный результат (будет в нем так-же, что марка не найдена, если конечно, там такой-же код на проверку по РР передавался, а не полный, как со сканера прилетел, и позже он был "изуродован" где-то в недрах программы), но запрос отрабатывает, раз его ИД вернулся. А вот то, что касса ошибку выдает - это следствие попытки проверить "кривую марку" средствами ККТ в ОИСМ, ККТ не может распознать, что ему подсунули, и падает в ошибку... |
|||
4
arsik
29.01.25
✎
12:54
|
+(3) Разбинарь строку
|
|||
5
MWWRuza
29.01.25
✎
13:09
|
(4) Ну, да, возможно и в этом причина. Марка должна передаваться "как есть", а тут, очень похоже, что ее в base64 закодировали. В этом месте не нужно этого делать.
|
|||
6
MWWRuza
29.01.25
✎
13:23
|
+(4) и (5) - Вот такая марка там: 0104620230110025215pP=5.MCFh1mR9382Aw
Абсолютно нормальная: ![]() Где-то Вы перестарались, лишнее преобразование в Base64 делаете. Это - "НАПИТОК ГАЗИРОВАННЫЙ COCA-COLA CLASSIC В СТЕКЛЯННОЙ БУТЫЛКЕ 0.33 " (последнее - не из ЧЗ, а из базы ОлегОН по ЕАН, выделенному из кода марки. Можно получить наименование и из ЧЗ по GTIN, другим запросом, но лень... :-) ) |
|||
7
MWWRuza
29.01.25
✎
13:31
|
Ну, хотя... Чего лень - нужно было то, всего залезть под стол и токен поменять, там другой стоял. Первый запрос по РР, для него не нужен "физический" токен-ключ, там токен из ЛК ЧЗ.
А вот этот запрос уже по API из ЧЗ: ![]() Это как карточка продукта в ЧЗ заведена производителем. К этим запросам доступ только по ЭЦП... |
|||
8
MWWRuza
29.01.25
✎
13:39
|
Хорошо "сунулся", заметил у себя косяк...
Вот это надо "починить": ![]() У меня там функция "перевода месаг ЧЗ на человеко-читаемый язык". Добавить туда эти значения. Блин, и внизу еще одно: "tnVedEaesGroup"... Просто, когда делал, соковой продукции еще не было и такое не попадалось. |
|||
9
MWWRuza
29.01.25
✎
14:02
|
Вот так правильно:
![]() |
|||
10
proglib
29.01.25
✎
15:45
|
(3) Конфа Ут11.5 код стандартный.
Если бы проблема была в коде марки тогда бы все было легко. Проблема в том, что иногда проверка этой марки (0104620230110025215pP=5.MCFh1mR) проходит, а иногда нет. Точнее если позиция первая - проходит, когда пятая нет. Такое ощущение, что дело в ККМ. |
|||
11
proglib
29.01.25
✎
16:26
|
Попробовал в запрос подсунуть код марки незашифрованный (0104620230110025215pP=5.MCFh1mR):
<?xml version="1.0" encoding="UTF-8"?> <RequestKM GUID="66d47fce-2076-4924-88b9-44da8357c728" WaitForResult="True" NotSendToServer="False" MarkingCode="0104620230110025215pP=5.MCFh1mR" PlannedStatus="1"/> Выдает ошибку: D3h, Код товара не распознан. Все правильно у 1с сделано, код правильный передает. |
|||
12
arsik
29.01.25
✎
16:32
|
(11) Так ты наверно символ который невидимы не передал.
ASCII 232 (FNC1) и ASCII 29 (GS) |
|||
13
pablo_escobar
29.01.25
✎
16:35
|
(5) Все там правильно передается. Это требования компоненты от 1С. https://its.1c.ru/db/metod8dev#content:4829:hdoc:requestkm
|
|||
14
pablo_escobar
29.01.25
✎
17:07
|
(10) так что насчет скидки? У меня такое было когда скидка, и форматно логический контроль, чтобы привести ценасоскидкой*количество = суммапостроке (допускается отклонение не более 1 копейки), делил строку на две, соответственно на ККТ отправлялись 2 одинаковые марки на проверку в рамках одной сессии(чека).
|
|||
15
proglib
29.01.25
✎
18:11
|
Скидок нет.
До скидок и не доходит, ошибка на этапе проверки КМ. (14) |
|||
16
MWWRuza
30.01.25
✎
00:37
|
(13) А, ну, получается да:
"MarkingCode Да string Код контрольной марки Кодируется текстом в кодировке Base64." Это извращение в драйвере (компоненте) по технологии 1С-совместимо... В нативных драйверах передается строкой "как есть". Тогда, х.з... Может драйвер обновить надо? Кстати, а что за ККТ -? На уровне драйвера 1С, не понять - они все едины со стороны 1С... Вот это: <RequestKM GUID="66d47fce-2076-4924-88b9-44da8357c728" Похоже, ИД запроса по РР... Кстати, а что он возвращает? Не его ИД, а результат, если его в отладчике поймать? Ну, хотя, в первом сообщении - "ResultCode="15"" Это похоже на ответ ОИСМ, что с маркой все ОК... Трудно понять без контекста. |
|||
17
pablo_escobar
30.01.25
✎
08:47
|
(16) тут речь про проверку средствами ККТ-ОФД-ОИСМ. РР здесь совсем нет. <RequestKM GUID="66d47fce-2076-4924-88b9-44da8357c728" - https://its.1c.ru/db/metod8dev#content:4829:hdoc:chapter270
через компоненту 1С, проверка делается 3-мя методами последовательно: ЗапросКМ(RequestKM), ПолучитьРезультатыЗапросаКМ(GetProcessingKMResult), ПодтвердитьКМ (ConfirmKM). |
|||
18
proglib
30.01.25
✎
10:33
|
(16) Результат = ОбъектДрайвера.ПодтвердитьКМ(ПараметрыПодключения.ИДУстройства, ИдентификаторЗапроса, ?(Выбытие, 0, 1) );
В результате ошибка. Отладкой не посмотреть это процедура драйвера - внешней компоненты. |
|||
19
MWWRuza
30.01.25
✎
11:32
|
(17) через компоненту 1С
Тогда все, я молчу... Я сам делал только через нативные драйвера, без компоненты 1С. Для Штрихов, АТОЛов, Спарка-130. А там все немного не так. А через компоненту в паре мест у меня работают типовые "Розницы", лазить туда не приходилось, оно и так заработало, "из коробки" :-) . |
|||
20
MWWRuza
30.01.25
✎
17:23
|
С телеги "Злой ЦТОшник":
Виктор, [30.01.2025 15:18] Всем привет. Есть атол 11 и ПО Мой склад. Прошивка на Атоле самая последняя. Проблема такая, при сканировании маркированного товара, проверка в ЧЗ и ККТ проходит отлично, но если отсканировать быстро 2 или 3 маркий, первая проходит проверку в ККТ, остальные выходят с ошибкой. Но в ЧЗ все так же все хорошо и проверено. Может кто сталкивался? Виктор, [30.01.2025 15:18] Тайминги уже пробовал менять, не помогает Виктор, [30.01.2025 15:19] Хотя может есть какие то волшебные Alfa Dog, [30.01.2025 15:20] Не сканировать быстро :) Виктор, [30.01.2025 15:21] Ну быстро, тоже относительно, разница во времени должна быть сек 10-20 Не ваша ситуация, часом? |
|||
21
proglib
30.01.25
✎
17:50
|
(20) Тоже такое подозрение возникло. Но почему на одном и том же коде?
Написали в штрих, посмотрим что ответят. |
|||
22
pablo_escobar
31.01.25
✎
09:22
|
(20) (21) Похожее поведение было у меня на Розница 3. При сканировании нескольких марок первая нормально проверялась, какая то из последующих выдавала ошибку. Дело было в том, что в типовой Рознице (в остальных типовых так же) проверка осуществлялась описаниями оповещения и обработчиком ожидания. Выше я уже писал, что проверка состоит из 3-х методов и если подтверждение предыдущей марки не успело завершиться и отсканировали новую, то новая могла перетереть контекст операции предыдущей марки. Причем в отладке это поймать не удавалось, так как время в отладчике позволяло успешно провериться маркам. После того как сделал вызов ПолучитьРезультатыЗапросаКМ() последовательным, а не через ПодключитьОбработчикОжидания() проблема ушла.
|
|||
23
arsik
31.01.25
✎
09:38
|
(22) А нельзя было марки перед пробитием проверять все скопом? А не при сканировании?
|
|||
24
pablo_escobar
31.01.25
✎
10:07
|
(23) можно, то же самое происходило
|
|||
25
proglib
31.01.25
✎
10:15
|
(23) В моей ситуации нельзя. Проверка идет средствами ККТ, там проверка по одной.
(21) Мож кто знает как увеличить таймаут проверки кодов на кассовом аппарате? |
|||
26
arsik
31.01.25
✎
10:24
|
(25) В атоле вот такое есть. Но у нас редкие продажи маркированного товара
https://atol-kassa.ru/kkt-atol-nastrojka-parametrov-raboty-s-ism-informaczionnaya-sistema-markirovki/
|
|||
27
pablo_escobar
31.01.25
✎
10:27
|
(25) так перед пробитием тоже по одной проверяется и из за асинхронности иногда эти проверки пересекаются. Даже еще с большей вероятностью, так как при сканировании есть хоть какая то пауза.
|
|||
28
proglib
31.01.25
✎
11:37
|
(26) Спасибо!
Такое описание бы для штриха. Если что драйвер 5.18.0.1068 |
|||
29
proglib
04.02.25
✎
18:54
|
В штрихе сказали что вот эта проблема:
https://teletype.in/@shtrih-support/fnbug |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |