Вход | Регистрация
 

тег 1162 АТОЛ платформа 2.5 в ЧЗ не принимают, говорят код товара не верный

тег 1162 АТОЛ платформа 2.5 в ЧЗ не принимают, говорят код товара не верный
Я
   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();

Для атола я могу этот код использовать?
   d4rkmesa
 
1 - 11.03.21 - 15:25
(0) Нет, у Атола свой драйвер.
   Garykom
 
2 - 11.03.21 - 15:39
(0)
Также с этого релиза не рекомендуется использовать метод utilFormNomenclature() и поле nomenclature позиции в json-чеках (типа объект), т.к. обновились требования к формату реквизита 1162, которые драйвер поддерживать не будет. Разработчикам кассового ПО нужно пользоваться функционалом передачи данных марки со сканера напрямую в ККТ (в этом случае ККТ самостоятельно преобразует его в реквизит 1162 и запишет в ФН), или же формировать реквизит 1162 самостоятельно по рекомендациям ЦРПТ.


или сразу DM со сканера через LIBFPTR_PARAM_MARKING_CODE  загонять
или самостоятельно вычислять 1162 тег, поищи в инете готовый алгоритм

https://infostart.ru/1c/articles/1083931/
   Garykom
 
3 - 11.03.21 - 15:40
(2)+ маленькая тонкость как байты передать из 1С
делать по аналогии http://forum.foxclub.ru/read.php?29,819747
   Garykom
 
4 - 11.03.21 - 15:42
(3)   "При использовании COM-объекта ваш язык может не поддерживать получение из драйвера параметра типа bytearray. В этом случае можно использовать обходной вариант. Нужно запросить такой параметр через getParamStringHex(), он вернет строку с последовательностью байтов вида "01 02 FF AA". Далее, эту строку можно записать во входной параметр любого метода через методы setParamStrHex() или setNonPrintableParamStrHex(), и она запишется в драйвер как bytearray."
https://integration.atol.ru/api/#methods_setters_getters
   evorle145
 
5 - 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 минуты после пробития чека (и продажа и возврат)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.