Имя: Пароль:
1C
 
тег 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 минуты после пробития чека (и продажа и возврат)
Ошибка? Это не ошибка, это системная функция.