ATOL драйвер 10.x
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
ATOL драйвер 10.x
Кажется, я понял, в чем дело. Но проверить смогу только в понедельник.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
ATOL драйвер 10.x
Ну если хорошо погуглить, то как говорится, можно и вакцину от короновируса купить.
Я просто могу сказать абсолютно точно: 10-ти и 12-ти значные ИНН прекрасно записываются в тег и передаются.
Никогда они ничем не дополнялись … Может там речь идёт о какой-то конкретной прошивке или модели КММ …
Ниже же есть мой пример чека из программы Админа - там и ИНН, и наименование покупателя.
Кажется проблема, та же, что и в прошлый раз … ?
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
ATOL драйвер 10.x
Если лень гуглить, ссылки ниже. Если у Вас прекрасно передаются, то это значит, что прошивка сама преобразует в нужный вид. У меня под ИНН объявлена строка с запасом на 20 символов вместо 12. Потом идут преобразования в utf8 и, как я понял, в драйвер и прошивку уходят все 20 символов, включая конечные пробелы. Прошивка видит, что длина превышена, тупо выдает ошибку и аннулирует чек. Это мое предположение, в понедельник проверю. Других вариантов не вижу.
http://forum.atol.ru/index.php?showtopic=37873
http://www.consultant.ru/cons/cgi/onlin ... b0ji2dgcoj
http://forum.atol.ru/index.php?showtopic=37873
http://www.consultant.ru/cons/cgi/onlin ... b0ji2dgcoj
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
ATOL драйвер 10.x
Вполне логичная причина проблемы. Именно поэтому в такой ситуации нужно сразу смотреть
лог-файл драйвера, в нём сразу видно что реально пишется в тег или команду.
Но только, если Вы что-то улучшали в классах Админа, потому-что там стоит Clip():
Код: Выделить всё
Atol10.SetParamStr PROCEDURE(LONG lParam, STRING sText)
R CStr
CODE
IF ~SELF.FlagLoaded THEN RETURN END
R.Set(CLIP(sText)) ! ВОТ ЗДЕСЬ ХВОСТ ПРОБЕЛОВ БУДЕТ ОТРЕЗАН
R.ASCIIToUnicode
libfptr_set_param_str(SELF.fptr, lParam, ADDRESS(R.CStr()))
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
ATOL драйвер 10.x
Таки да, у меня этот класс взят за образец, и clip() в аналогичном месте не стоит. Я понадеялся, видимо, что это дальше в классе работы с cstring учитывается. Класс чужой, у себя я на автомате подобные вещи учитываю в конечной точке преобразований, вот и сработал рефлекс.
Интернет можно не читать, но если плотно работаешь с кассами, базовые правила надо все же знать. Мне тоже лениво всякую чепуху читать от наших законодателей и их последователей. Пока что-то не потребуется конкретно.
Интернет можно не читать, но если плотно работаешь с кассами, базовые правила надо все же знать. Мне тоже лениво всякую чепуху читать от наших законодателей и их последователей. Пока что-то не потребуется конкретно.
C6/C11, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
ATOL драйвер 10.x
Цифры в UTF-8 можно не перекодировать, они так и останутся цифрами с той же длиной строки
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
ATOL драйвер 10.x
Это да, цифра - она и в Африке цифра.
Но, как говорил Админ: самое сложное было подобрать, чего туда записывать …
В классе АТОЛ 10 используется не UTF-8, а расширение до Unicode ...
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
ATOL драйвер 10.x
И решилось путём возвращения Clip() в метод Atol10.SetParamStr() ?
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
ATOL драйвер 10.x
Я заранее извиняюсь, но я всё-таки спрошу …
Только у меня метод открытия свойств окна драйвера:
работает через попу ? Причём с каждым обновлением драйвера ситуация ухудшается.
Окно открывается около минуты, при этом прикладную программу переклинивает намертво.
Это жутко бесит юзеров, а они - меня. Может быть это я что-то не то делаю ?
Только у меня метод открытия свойств окна драйвера:
Код: Выделить всё
If MyAtol.OpenDialog() = LIBFPTR_ERROR.
Окно открывается около минуты, при этом прикладную программу переклинивает намертво.
Это жутко бесит юзеров, а они - меня. Может быть это я что-то не то делаю ?
За теми кто отстал - не возвращаться. (С) Кодекс
- SergioRaguzini
- Старожил
- Сообщения: 236
- Зарегистрирован: 08 Декабрь 2009, 19:16
- Откуда: Краснодарский край
- Благодарил (а): 6 раз
ATOL драйвер 10.x
Привет Всем!
Сталкивался ли кто уже с маркировкой обуви для АТОЛ ДТО-10?
Из интернета нашел:
Судя по документации по ДТО-10 10.7.0.0 вроде как и тег 5408 передавать уже не надо...
Обувная марка ведь длинная, например:
010290000078733921%lRRHWM+"1mlj918029920GEgJiDhTthbw8VtvhOSaSMtn1A7KHKrVPMSo503W5mCjopv75VR9H4RG33M68brXZxYmj6MCwpHNShPyImpVg==
Взяв за основу приведенную выше дискуссию в этой теме Вячеслава и Игоря, пытаюсь понять - достаточно ли будет просто передать обувную марку (и вроде теперь сам драйвер поймет от чего эта марка от обуви или сигарет,духов и т.д.):
SELF.SetParamInt(LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT_OTHER)
SELF.SetParamByteArray(LIBFPTR_PARAM_MARKING_CODE,clip(SELF.AtolStrToByte('010290000078733921%lRRHWM+"1mlj918029920GEgJiDhTthbw8VtvhOSaSMtn1A7KHKrVPMSo503W5mCjopv75VR9H4RG33M68brXZxYmj6MCwpHNShPyImpVg==')))
if libfptr_registration(SELF.fptr) = LIBFPTR_ERROR
SELF.GetError
end
Прошу прокомментировать (м.б. есть какой-то нюанс), и если не затруднит поделиться несколькими строчками примера кода
Спасибо
Сталкивался ли кто уже с маркировкой обуви для АТОЛ ДТО-10?
Из интернета нашел:
Из того что прочитал из разных источником, кажется что видимо такое уже не актуально на сегодняшний день при работе через ДТО-10...MarkingType – равно 5408 для обуви
2. GTIN – равно 14-ти знаком после первых символов 01
3. SerialNumber – 13 символов после значения 21 (т.е. начиная с 19)
Судя по документации по ДТО-10 10.7.0.0 вроде как и тег 5408 передавать уже не надо...
Обувная марка ведь длинная, например:
010290000078733921%lRRHWM+"1mlj918029920GEgJiDhTthbw8VtvhOSaSMtn1A7KHKrVPMSo503W5mCjopv75VR9H4RG33M68brXZxYmj6MCwpHNShPyImpVg==
Взяв за основу приведенную выше дискуссию в этой теме Вячеслава и Игоря, пытаюсь понять - достаточно ли будет просто передать обувную марку (и вроде теперь сам драйвер поймет от чего эта марка от обуви или сигарет,духов и т.д.):
SELF.SetParamInt(LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT_OTHER)
SELF.SetParamByteArray(LIBFPTR_PARAM_MARKING_CODE,clip(SELF.AtolStrToByte('010290000078733921%lRRHWM+"1mlj918029920GEgJiDhTthbw8VtvhOSaSMtn1A7KHKrVPMSo503W5mCjopv75VR9H4RG33M68brXZxYmj6MCwpHNShPyImpVg==')))
if libfptr_registration(SELF.fptr) = LIBFPTR_ERROR
SELF.GetError
end
Прошу прокомментировать (м.б. есть какой-то нюанс), и если не затруднит поделиться несколькими строчками примера кода
Спасибо
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
ATOL драйвер 10.x
Нюанс действительно есть.
Если посмотреть описание формата строки с кодом маркировки GS1 (Yandex покажи !) - то в нём поля переменной длины должны
завершаться символом Chr(29), которые в Вашем примере отсутствует (например для поля после "21") … потому что его сожрал сканер.
За теми кто отстал - не возвращаться. (С) Кодекс
- SergioRaguzini
- Старожил
- Сообщения: 236
- Зарегистрирован: 08 Декабрь 2009, 19:16
- Откуда: Краснодарский край
- Благодарил (а): 6 раз
ATOL драйвер 10.x
Привет Всем!
"Обувное" направление для меня редкость, поэтому прошу извинить за тугодумие:
Но что смущает - судя по инф-и найденной через поиск Yandex и приведенной на
https://infostart.ru/journal/news/uchet ... i_1209448/
и имеющемуся там изображению (картинка, не текст) примера формирования кода есть непонятные моменты
я решил проверить разрядность и здесь привожу, уже разобранный по-символьно пример этой марки, сдвинув разряды чтобы удобнее было посчитать кол-во символов,
вижу противоречие(!), там на сайте написано, что исходя из спецификации GS в штриховой код DataMatrix включается:
похоже, что на сайте https://infostart.ru/journal/news/uchet ... i_1209448/
опечатка !!! - ключ проверки 4-знака !!! а не 14-ть как у них написано (блин,столько времени потерял пока не увидел в на другом сайте)
далее, вроде бы все понятно - для наглядности, можно значение сканированной обувной марки поместить в LOC:str_Scan и сформировать LOC:Mark для дальнейшего использования в качестве содержимого кода маркировки в чеке
LOC:str_Scan = '010290000078733921%lRRHWM+"1mlj918029920GEgJiDhTthbw8VtvhOSaSMtn1A7KHKrVPMSo503W5mCjopv75VR9H4RG33M68brXZxYmj6MCwpHNShPyImpVg=='
(правда, видимо, пример имеющегося у меня сканированного обувного кода, был сформирован без лидирующего признака FNC1)
! в первый SUB включаем 31 символ с учетом '01' и '21'
! во второй SUB включаем 31 символ с учетом '91'
! в третий SUB включаем 90 символов с учетом '92'
LOC:Mark = SUB(LOC:str_Scan, 1, 31) & CHR(29) & SUB(LOC:str_Scan, 32, 6) & CHR(29) & SUB(LOC:str_Scan, 38, 90)
тут идут ранее разные аттрибуты чека (название, кол-во и т.п.), а потом собственно код маркировки
SELF.SetParamInt(LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT_OTHER)
SELF.SetParamByteArray(LIBFPTR_PARAM_MARKING_CODE, CLIP(SELF.AtolStrToByte(LOC:Mark)))
if libfptr_registration(SELF.fptr) = LIBFPTR_ERROR
SELF.GetError
end
Прошу прокомментировать - это правильный вариант передачи маркировки обуви?
Спасибо
"Обувное" направление для меня редкость, поэтому прошу извинить за тугодумие:
Игорь, спасибо за совет!Игорь Столяров писал(а): ↑15 Июнь 2020, 23:15 Нюанс действительно есть.
Если посмотреть описание формата строки с кодом маркировки GS1 (Yandex покажи !) - то в нём поля переменной длины должны
завершаться символом Chr(29), которые в Вашем примере отсутствует (например для поля после "21") … потому что его сожрал сканер.
Но что смущает - судя по инф-и найденной через поиск Yandex и приведенной на
https://infostart.ru/journal/news/uchet ... i_1209448/
и имеющемуся там изображению (картинка, не текст) примера формирования кода есть непонятные моменты
я решил проверить разрядность и здесь привожу, уже разобранный по-символьно пример этой марки, сдвинув разряды чтобы удобнее было посчитать кол-во символов,
вижу противоречие(!), там на сайте написано, что исходя из спецификации GS в штриховой код DataMatrix включается:
но после 91, на картинке, ключ проверки явно не "14 знаков", а только 4<FNC1> + 01 + GTIN (14 знаков) + 21 + серийный номер (13 знаков) + <GS> + 91 + ключ проверки (14 знаков) + <GS> + 92 + криптоподпись (88 знаков)
похоже, что на сайте https://infostart.ru/journal/news/uchet ... i_1209448/
опечатка !!! - ключ проверки 4-знака !!! а не 14-ть как у них написано (блин,столько времени потерял пока не увидел в на другом сайте)
далее, вроде бы все понятно - для наглядности, можно значение сканированной обувной марки поместить в LOC:str_Scan и сформировать LOC:Mark для дальнейшего использования в качестве содержимого кода маркировки в чеке
LOC:str_Scan = '010290000078733921%lRRHWM+"1mlj918029920GEgJiDhTthbw8VtvhOSaSMtn1A7KHKrVPMSo503W5mCjopv75VR9H4RG33M68brXZxYmj6MCwpHNShPyImpVg=='
(правда, видимо, пример имеющегося у меня сканированного обувного кода, был сформирован без лидирующего признака FNC1)
! в первый SUB включаем 31 символ с учетом '01' и '21'
! во второй SUB включаем 31 символ с учетом '91'
! в третий SUB включаем 90 символов с учетом '92'
LOC:Mark = SUB(LOC:str_Scan, 1, 31) & CHR(29) & SUB(LOC:str_Scan, 32, 6) & CHR(29) & SUB(LOC:str_Scan, 38, 90)
тут идут ранее разные аттрибуты чека (название, кол-во и т.п.), а потом собственно код маркировки
SELF.SetParamInt(LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT_OTHER)
SELF.SetParamByteArray(LIBFPTR_PARAM_MARKING_CODE, CLIP(SELF.AtolStrToByte(LOC:Mark)))
if libfptr_registration(SELF.fptr) = LIBFPTR_ERROR
SELF.GetError
end
Прошу прокомментировать - это правильный вариант передачи маркировки обуви?
Спасибо
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
ATOL драйвер 10.x
Зачем Вы тратите своё время на чтение кто чего написал на заборе ?SergioRaguzini писал(а): ↑16 Июнь 2020, 11:17 но после 91, на картинке, ключ проверки явно не "14 знаков", а только 4
Посмотрите первоисточник: https://честныйзнак.рф/business/projects/footwear/marking_code/
За теми кто отстал - не возвращаться. (С) Кодекс