|
тег 1162 АТОЛ платформа 2.5 в ЧЗ не принимают, говорят код товара не верный | ☑ | ||
---|---|---|---|---|
0
evorle145
11.03.21
✎
15:23
|
Маркировка шин
версия платформы 2.5 версия прошивки 12-8541 в коде пишу: Объект.Драйвер.setParam(1162, nomenclatureCode); где nomenclatureCode = "0104680010061794212pwfO'C6qxpK!" то есть корректный код из 31 символа Так как версия 2.5, а не 5 то вот такой код не работает: Объект.Драйвер.setParam(Объект.Драйвер.LIBFPTR_PARAM_MARKING_CODE, nomenclatureCode); где nomenclatureCode - тот же код и 31 символа но преобразованный В ЧЗ чеки не ушел, ответили что первые символы не верные: https://cdn1.savepice.ru/uploads/2021/3/7/80a8e327019b9813e8ddff8f619dd42d-full.jpg говорят у тебя стоят какие то 12337 , а должно быть 17485 Подскажите плиз как тут верно написать? нашел для штриха: Объект.Драйвер.MarkingType = 17485; Объект.Драйвер.SerialNumber = СокрЛП(serial); Объект.Драйвер.GTIN = СокрЛП(gtin); //СокрЛП(Формат(Число(gtin),"ЧГ=")); Объект.Драйвер.FNSendItemCodeData(); Для атола я могу этот код использовать? |
|||
1
d4rkmesa
11.03.21
✎
15:25
|
(0) Нет, у Атола свой драйвер.
|
|||
2
Garykom
гуру
11.03.21
✎
15:39
|
(0)
Также с этого релиза не рекомендуется использовать метод utilFormNomenclature() и поле nomenclature позиции в json-чеках (типа объект), т.к. обновились требования к формату реквизита 1162, которые драйвер поддерживать не будет. Разработчикам кассового ПО нужно пользоваться функционалом передачи данных марки со сканера напрямую в ККТ (в этом случае ККТ самостоятельно преобразует его в реквизит 1162 и запишет в ФН), или же формировать реквизит 1162 самостоятельно по рекомендациям ЦРПТ. или сразу DM со сканера через LIBFPTR_PARAM_MARKING_CODE загонять или самостоятельно вычислять 1162 тег, поищи в инете готовый алгоритм https://infostart.ru/1c/articles/1083931/ |
|||
3
Garykom
гуру
11.03.21
✎
15:40
|
(2)+ маленькая тонкость как байты передать из 1С
делать по аналогии http://forum.foxclub.ru/read.php?29,819747 |
|||
4
Garykom
гуру
11.03.21
✎
15:42
|
(3) "При использовании COM-объекта ваш язык может не поддерживать получение из драйвера параметра типа bytearray. В этом случае можно использовать обходной вариант. Нужно запросить такой параметр через getParamStringHex(), он вернет строку с последовательностью байтов вида "01 02 FF AA". Далее, эту строку можно записать во входной параметр любого метода через методы setParamStrHex() или setNonPrintableParamStrHex(), и она запишется в драйвер как bytearray."
https://integration.atol.ru/api/#methods_setters_getters |
|||
5
evorle145
14.03.21
✎
09:37
|
Ошибка найдена! Пишу решение для тех, кто возможно наткнется и совершит те же ошибки что и я.
Итак, обновляем прошивку кассы до примерно 12-8541 (если у вас чуть ниже, то вроде с 12-8400 должно работать) Версия платформы не имеет значение. На 2.5 работает. ОБЯЗАТЕЛЬНО обновляем драйвер кассы. Если АТОЛ то до 10.8.1 минимум! (Я совершил ошибку и обновил драйвер на локальной машине до это версии, а кассы работы через терминал, а на сервере драйвер стоял 10.4 и ниже приведенный код с ним не работал) Правильный код для атола: Объект.Драйвер.setParam(Объект.Драйвер.LIBFPTR_PARAM_MARKING_CODE, nomenclatureCode); где nomenclatureCode принимает значение: ШтрихкодМаркировкиНовый = "01" + СтруктураШтрихкодовМаркировки.gtin + "21" + СтруктураШтрихкодовМаркировки.serial; nomenclatureCode = ПреобразоватьВМассивБайт( ШтрихкодМаркировкиНовый ); Функция ПреобразоватьВМассивБайт(Данные, РезультатСтрокой = Истина) Экспорт Если НЕ ЗначениеЗаполнено(СокрЛП(Данные)) Тогда Возврат ""; КонецЕсли; РезультатБайтами = ""; ИмяВрФайла = ПолучитьИмяВременногоФайла("txt"); Текст = Новый ТекстовыйДокумент(); Текст.УстановитьТекст(Данные); Текст.Записать(ИмяВрФайла,КодировкаТекста.ANSI); ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВрФайла); Если РезультатСтрокой Тогда РезультатБайтами = Строка(ДвоичныеДанные); Иначе РезультатБайтами = ДвоичныеДанные; КонецЕсли; УдалитьФайлы(ИмяВрФайла); Возврат РезультатБайтами; КонецФункции gtin и serial определяются из разбора отсканированной строки (можно подсмотреть код в любой стандартной конфе или у меня если не найдете) ну и букву [М] не забудьте вставить в наименование ВСЕ. В честном знаке все появилось через 3 минуты после пробития чека (и продажа и возврат) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |