Форум OlegON > Программы и оборудование для автоматизации торговли > Маркировка

Статусы проверки кодов маркировки на чеке. : Маркировка

04.05.2024 16:08


30.03.2023 20:15
volk13
 
Цитата:
student с этого и надо было начинать
в принципе - я согласен, но.. - если сразу по подобным вопросам посылать к документации, то чем я тогда буду лучше Капитана О. ?
;)
а так - хоть какая-то "зацепка" и мотивация попробовать, и если не получится - обратиться уже к документации (он же полный программный код не выдал, может у него и есть уже "LIBFPTR_MCT12_AUTO", и прочие необходимые параметры.. )

я вот так думаю, - что лучше хотя-бы "намекнуть", чем просто "послать" к докам
31.03.2023 05:11
Woaeiz
 
Цитата:
volk13 1. зачем преобразовывать в BASE64, если в ДТО 10.9.4.5 Атола есть методы передачи кода маркировки без преобразования?
2. полный код "проблемного" блока сообщите (без лишних преобразований, а как есть)
У меня 1С, робот-очередь для фискализации чеков. Марки бьёт - никаких проблем, но проверки\подтверждения на 1.2 не могу победить для блоков. Чисто логически, разница между маркой пачки и блока именно в GS1 и наличии FNC, полагаю проблема именно в формате.

Получена с сканера,
скрытое

GS1
скрытое

Документацию читал, пробовал разбивать штрихкод и склеивать его с непечатным FNC и последующей конвертацией в base64 - всё равно код 5.
31.03.2023 05:33
Woaeiz
 
Я и полез в ДТО чтобы быстрее задебажить формат, но методом научного тыка - ни один формат не подошёл.
Из документации АТОЛа я пробовал следующий,

скрытое

Потом подключил документацию ЦРПТ о структуре DM GS1 блока,

скрытое

Убрал у себя всё после 4-значного кода проверки [93], расскидал GS1 и получилось, код 15 для base64.

скрытое

Буду работать со сканером и преобразованием марки после передачи штрихкода в 1С, но перспектива выстраивать для каждой группы товаров свою маску подготовки штрихкода с непечатаемым GS1 - не радостная.
31.03.2023 07:58
volk13
 
Цитата:
Woaeiz Получена с сканера,
010460043994000521HMuLciA(8005)150000(93)UzsE(240)14987395
сканер не может самостоятельно заключать в скобки идентификаторы применения (AI), это делает ваша программа, так что это - не со сканера, а уже преобразованный КМ (добавлены принудительно скобки)

Правильная комбинация (которую должен выдать сканер) следующая :
010460043994000521HMuLciA 8005150000 93UzsE 24014987395 (только пробелов быть не должно, пробелы я специально для наглядности поставил, вместо пробелов - должны стоять символы GS, в 1С - это Симв(29) )
Я проверил этот КМ (без преобразований, но с правильно расставленными GS) - проверку в ЧЗ он проходит, выдаёт 15.

Т.е. для 1С - данный КМ должен выглядеть так в строковом выражении (никаких <FNC1> спереди не нужно, всё лишнее убрать):
"010460043994000521HMuLciA"+Симв(29)+"8005150000"+Симв(29)+"93UzsE"+Симв(29)+"24014987395"
(предварительно для надёжности - можно удалить символы GS, чтобы они не задвоились, т.е. предварительно сделать: СтрЗаменить(КМ, Симв(29), ""); )

И всё же, выше в этой теме было показано, как можно без лишних преобразований отправлять правильно сформированный КМ, но дело ваше, если вам больше нравятся лишние преобразования.
Лично я - против подобных лишних преобразований.
31.03.2023 08:10
volk13
 
Не могу советовать как лучше (т.к. не знаю ваших предпочтений и алгоритмов), но как вариант:

если у вас КМ имеет на входе вашей очереди уже преобразованную структуру, типа 010460043994000521HMuLciA(8005)150000(93)UzsE(240)14987395, то получить правильный КМ можно например так:

КМ = СтрЗаменить(СтрЗаменить(СтрЗаменить(КМ, "(8005)", Симв(29)+"(8005)"), "(93)", Симв(29)+"(93)"), "(240)", Симв(29)+"(240)");

;)
31.03.2023 08:14
Woaeiz
 
Спасибо, я разобрался. Прочитал ещё спецификацию по GS, не все AI имеют флаг переменной длинны :)

Наиболее универсальный вариант собрал вокруг стандартных подсистем 1С,

ИсходныйШК = "(01)04600439940005(21)HMuLciA(8005)150000(93)UzsE(240)14987395";
ПараметрыШтрихкодаGS1СоСкобками = ШтрихкодыУпаковокКлиентСервер.ПараметрыШтрихкодаGS1СоСкобками(ИсходныйШК);
КМ = ШтрихкодыУпаковокКлиентСервер.ШтрихкодGS1(ПараметрыШтрихкодаGS1СоСкобками .Результат, Ложь, Символ(29));
ШтрихкодВBase64= ШтрихкодированиеИСКлиентСервер.ШтрихкодВBase64(КМ);

Только для DM GS1, если DM не GS - просто кодирую сразу в base64.
31.03.2023 08:17
volk13
 
Кстати, если вам интересны логи проверки НЕпреобразованного вашего КМ из ДТО 10, то вот:

Цитата:
2023.03.31 07:44:00.683 T: T:00000B50 INFO [FiscalPrinter] > LIBFPTR_PARAM_MARKING_CODE_TYPE (65826) = 256
2023.03.31 07:44:00.683 T: T:00000B50 INFO [FiscalPrinter] > LIBFPTR_PARAM_MARKING_CODE (65760) = "010460043994000521HMuLciA800515000093UzsE24014987395"
2023.03.31 07:44:00.683 T: T:00000B50 INFO [FiscalPrinter] > LIBFPTR_PARAM_MARKING_CODE_STATUS (65846) = 1
2023.03.31 07:44:00.683 T: T:00000B50 INFO [FiscalPrinter] > LIBFPTR_PARAM_MARKING_PROCESSING_MODE (65852) = 0
2023.03.31 07:44:00.683 T: T:00000B50 INFO [FiscalPrinter] > LIBFPTR_PARAM_MARKING_WAIT_FOR_VALIDATION_RESULT (65845) = 1
2023.03.31 07:44:00.683 T: T:00000B50 INFO [FiscalPrinter] libfptr_begin_marking_code_validation()
2023.03.31 07:44:01.294 T: T:00000B50 INFO [FiscalPrinter] output > U@0;010460043994000521HMuLciA[1Dh]8005150000[1Dh]93UzsE[1Dh]24014987395;╙[07h][01h][00h][01h]6[08h][01h][00h][00h];
2023.03.31 07:44:01.304 T: T:00000B50 INFO [Transport] send fiscal (0C) 0C 40 55 40 30 3B 30 31 30 34 36 30 30 34 33 39 39 34 30 30 30 35 32 31 48 4D 75 4C 63 69 41 1D 38 30 30 35 31 35 30 30 30 30 1D 39 33 55 7A 73 45 1D 32 34 30 31 34 39 38 37 33 39 35 3B D3 07 01 00 01 36 08 01 00 00 3B (73 bytes total)
2023.03.31 07:44:01.544 T: T:00000B50 INFO [Transport] recv fiscal (0C) 0C 30 30 30 3B 31 3B (7 bytes total)
2023.03.31 07:44:01.544 T: T:00000B50 INFO [FiscalPrinter] input < 0;1;
2023.03.31 07:44:01.564 T: T:00000B50 INFO [FiscalPrinter] < LIBFPTR_PARAM_MARKING_CODE_VALIDATION_RESULT (65847) = 0
2023.03.31 07:44:01.564 T: T:00000B50 INFO [FiscalPrinter] < LIBFPTR_PARAM_MARKING_CODE_OFFLINE_VALIDATION_ERROR (65848) = 1
2023.03.31 07:44:01.564 T: T:00000B50 INFO [FiscalPrinter] libfptr_get_marking_code_validation_status()
2023.03.31 07:44:01.564 T: T:00000B50 INFO [FiscalPrinter] output > UA
2023.03.31 07:44:01.574 T: T:00000B50 INFO [Transport] send fiscal (0D) 0D 40 55 41 (4 bytes total)
2023.03.31 07:44:01.584 T: T:00000B50 INFO [Transport] recv fiscal (0D) 0D 30 30 30 3B 30 3B 30 3B 3B 30 3B (12 bytes total)
2023.03.31 07:44:01.584 T: T:00000B50 INFO [FiscalPrinter] input < 0;0;0;;0;
2023.03.31 07:44:01.584 T: T:00000B50 INFO [FiscalPrinter] < LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY (65850) = false
2023.03.31 07:44:04.108 T: T:00000B50 INFO [FiscalPrinter] libfptr_get_marking_code_validation_status()
2023.03.31 07:44:04.108 T: T:00000B50 INFO [FiscalPrinter] output > UA
2023.03.31 07:44:04.108 T: T:00000B50 INFO [Transport] send fiscal (0E) 0E 40 55 41 (4 bytes total)
2023.03.31 07:44:04.118 T: T:00000B50 INFO [Transport] recv fiscal (0E) 0E 30 30 31 3B 30 3B 31 35 3B 42 08 04 00 11 65 26 64 39 08 01 00 00 D5 07 01 00 0F 3D 08 01 00 01 34 08 01 00 05 3B 31 3B (41 bytes total)
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] input < 1;0;15;B[08h][04h][00h][11h]e&d9[08h][01h][00h][00h]╒[07h][01h][00h][0Fh]=[08h][01h][00h][01h]4[08h][01h][00h][05h];1;
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] < LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY (65850) = true
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] < LIBFPTR_PARAM_IS_REQUEST_SENT (65878) = true
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] < LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION (65887) = "Ошибок нет"
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] < LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR (65849) = 0
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] < 2106 (2106) = 15
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] < LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT (65886) = 15
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] < 2114 (2114) = 11 65 26 64
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] < 2105 (2105) = 00
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] < 2005 (2005) = 0F
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] < 2109 (2109) = 01
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] < 2100 (2100) = 05
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] < LIBFPTR_PARAM_TLV_LIST (65858) = "2114;2105;2005;2109;2100"
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] libfptr_accept_marking_code()
2023.03.31 07:44:04.118 T: T:00000B50 INFO [FiscalPrinter] output > UB1;
2023.03.31 07:44:04.118 T: T:00000B50 INFO [Transport] send fiscal (0F) 0F 40 55 42 31 3B (6 bytes total)
2023.03.31 07:44:04.188 T: T:00000B50 INFO [Transport] recv fiscal (0F) 0F 30 30 31 35 3B (6 bytes total)
2023.03.31 07:44:04.188 T: T:00000B50 INFO [FiscalPrinter] input < 15;
2023.03.31 07:44:04.188 T: T:00000B50 INFO [FiscalPrinter] Чтение таблицы КМ (1 элементов)
2023.03.31 07:44:04.188 T: T:00000B50 INFO [FiscalPrinter] 1. [CRC = 1470152638, 2106 = 15] 30 31 30 34 36 30 30 34 33 39 39 34 30 30 30 35 32 31 48 4D 75 4C 63 69 41 1D 38 30 30 35 31 35 30 30 30 30 1D 39 33 55 7A 73 45 1D 32 34 30 31 34 39 38 37 33 39 35
2023.03.31 07:44:04.188 T: T:00000B50 INFO [FiscalPrinter] < 2106 (2106) = 15
2023.03.31 07:44:04.188 T: T:00000B50 INFO [FiscalPrinter] < LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT (65886) = 15
31.03.2023 08:19
Woaeiz
 
Цитата:
volk13 Кстати, если вам интересны логи проверки НЕпреобразованного вашего КМ из ДТО 10, то вот:
Всё ок, спасибо)
Часовой пояс GMT +3, время: 16:08.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.