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

тег 1162 шины выдает ошибку неверная длина кода (27) какой длинны код туда требуется? атол

тег 1162 шины выдает ошибку неверная длина кода (27) какой длинны код туда требуется? атол
Я
   evorle145
 
06.03.21 - 17:25
ШтрихкодМаркировкиНовый = "01" + СтруктураШтрихкодовМаркировки.gtin + "21" + СтруктураШтрихкодовМаркировки.serial;
            nomenclatureCode = КАС_ПреобразоватьВМассивБайт( ШтрихкодМаркировкиНовый );

Если ЗначениеЗаполнено(nomenclatureCode) Тогда
                //ТЕА Объект.Драйвер.setParam(Объект.Драйвер.LIBFPTR_PARAM_MARKING_CODE, nomenclatureCode);
                Объект.Драйвер.setParam(1162, nomenclatureCode);

            КонецЕсли;    

Пробовал сначала  Объект.Драйвер.setParam(Объект.Драйвер.LIBFPTR_PARAM_MARKING_CODE, nomenclatureCode); написала что параметр LIBFPTR_PARAM_MARKING_CODE неизвестен, походу версия платформы 2.5
потом пробовать стал просто Объект.Драйвер.setParam(1162, nomenclatureCode); но тут стал выдавать что неверная длинна кода
   evorle145
 
1 - 06.03.21 - 17:39
версия платформы 2.5
версия прошивки 12-8541
   Voronve
 
2 - 06.03.21 - 17:42
31
   evorle145
 
3 - 06.03.21 - 17:45
(2) что вы имеете ввиду? как я понимаю, раз у меня платформа 2.5 , то я должен в код  Объект.Драйвер.setParam(1162, nomenclatureCode);nomenclatureCode - вот сюда подсунуть код не преобразованный через  КАС_ПреобразоватьВМассивБайт( ШтрихкодМаркировкиНовый ); , а прям строку вставлять из этих 31 символов?
   evorle145
 
4 - 06.03.21 - 17:52
(2) хэх.. подставил строку длинной 31, и пробилось. Спасибо ВАМ, добрый человек!
   d4rkmesa
 
5 - 06.03.21 - 17:54
(4) Думаю, теперь можно на радостях начать писать слова "длина" правильно.
   evorle145
 
6 - 06.03.21 - 17:58
(5) стрДлинна(строка)
   d4rkmesa
 
7 - 06.03.21 - 18:01
   Исновая
 
8 - 06.03.21 - 18:14
Платформа причем...че там у тя за мешанина в голове
   Voronve
 
9 - 06.03.21 - 18:25
(4) Загляни в ОФД. Проверь
   evorle145
 
10 - 07.03.21 - 15:52
(9) в овд вот такая картина:

https://cdn1.savepice.ru/uploads/2021/3/7/80a8e327019b9813e8ddff8f619dd42d-full.jpg

а правильный код, который я отправлял в тег 1162 вот такой  0104680010061794212pwfO'C6qxpK!

то есть часть отрезало какого то фига "10061794212pwfO'C6qxpK!" и в честном знаке я этот чек так и не увидел
   Voronve
 
11 - 07.03.21 - 19:09
(10) В ОФД может быть обрезан код, признак "М" стоит, по идее ОФД должен передать данные в ЧЗ по розничной продаже.
Вопрос когда появятся изменения ...
   evorle145
 
12 - 07.03.21 - 20:13
(11) да признак то как раз мне кажется ничего не значит. Этот признак появился от того, что в коде в наименование написано : Наименование = [М] + Наименование
А вот то что код обрезан - вот то мне не понятно.. ведь в тэг я его 100% целым поместил.. Час ждал, в ЧЗ ничего не появилось(
   Voronve
 
13 - 07.03.21 - 20:27
(12) У тебя на картинке два М. Если тэг 1162 заполняется корректно, то сама касса выставляет М
То что ка картинке твой киз показан обрезанным - чтож делать, ты не влияешь на то как офд отдает данные пользователю на просмотр.
С утра посмотри в ЧЗ изменения и дерни ТП их.
   evorle145
 
14 - 07.03.21 - 20:32
(13) понял...
дело в том, что я в коде сам написал так:
   Объект.Драйвер.setParam(1162, nomenclatureCode); где nomenclatureCode это 0104680010061794212pwfO'C6qxpK!
понимаю, что отображается он обрезанным..
а [М] появилось от того что в обработке обслуживания атол есть кусок кода Наименование = [М] + Наименование .. а два М появилось потому что я ошибся и два раза в коде написал Наименование = [М] + Наименование , а затем это Наименование отправилось в  "Объект.Драйвер.Name = Наименование;"

ЧЗ смогу проверить уже только 9 ого числа... но вчера в ЧЗ ничего не появилось.. даже смену закрыл
   evorle145
 
15 - 07.03.21 - 20:35
(13) вот и прикол, в том что в обработке обслуживания написано, если отправлять код в новом формате, то нужно делать через
nomenclatureCode  = КАС_ПреобразоватьВМассивБайт( ШтрихкодМаркировкиНовый )
Объект.Драйвер.setParam(Объект.Драйвер.LIBFPTR_PARAM_MARKING_CODE, nomenclatureCode);

Драйвер атол поставил последний, версия платформы 2.5
версия прошивки 12-8541, и при таких версия мне выдало сообщение что  LIBFPTR_PARAM_MARKING_CODE - нет такого поля и чек пробит не будет. Тогда я сделал по старому, и просто строку подставил в этот тэг Объект.Драйвер.setParam(1162, nomenclatureCode); и чек пробился...
   evorle145
 
16 - 14.03.21 - 09:38
Ошибка найдена! Пишу решение для тех, кто возможно наткнется и совершит те же ошибки что и я.

Итак, обновляем прошивку кассы до примерно 12-8541 (если у вас чуть ниже, то вроде с 12-8400 должно работать)
Версия платформы не имеет значение. На 2.5 работает.
ОБЯЗАТЕЛЬНО обновляем драйвер кассы. Если АТОЛ то до 10.8.1 минимум! (Я совершил ошибку и обновил драйвер на локальной машине до это версии, а кассы работы через терминал, а на сервере драйвер стоял 10.4 и ниже приведенный код с ним не работал)

Правильный код для атола:
+ Code
Объект.Драйвер.setParam(Объект.Драйвер.LIBFPTR_PARAM_MARKING_CODE, nomenclatureCode); 
где nomenclatureCode принимает значение:
ШтрихкодМаркировкиНовый = "01" + СтруктураШтрихкодовМаркировки.gtin + "21" + СтруктураШтрихкодовМаркировки.serial;
            nomenclatureCode = ПреобразоватьВМассивБайт( ШтрихкодМаркировкиНовый );



Функция ПреобразоватьВМассивБайт(Данные, РезультатСтрокой = Истина) Экспорт
    Если НЕ ЗначениеЗаполнено(СокрЛП(Данные)) Тогда
        Возврат "";
    КонецЕсли;    
    РезультатБайтами = "";
    
    
    ИмяВрФайла = ПолучитьИмяВременногоФайла("txt");
    Текст = Новый ТекстовыйДокумент();
    Текст.УстановитьТекст(Данные);
    Текст.Записать(ИмяВрФайла,КодировкаТекста.ANSI);
    ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВрФайла);
    Если РезультатСтрокой Тогда
        РезультатБайтами = Строка(ДвоичныеДанные);
    Иначе
        РезультатБайтами = ДвоичныеДанные;
    КонецЕсли;    
   
    УдалитьФайлы(ИмяВрФайла);
    
    Возврат РезультатБайтами;
КонецФункции

gtin и serial определяются из разбора отсканированной строки (можно подсмотреть код в любой стандартной конфе или у меня если не найдете)

ну и букву [М] не забудьте вставить в наименование

ВСЕ. В честном знаке все появилось через 3 минуты после пробития чека (и продажа и возврат)
   d4rkmesa
 
17 - 14.03.21 - 13:33
(16) Браво.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.