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

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

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

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

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

Драйвер атол поставил последний, версия платформы 2.5
версия прошивки 12-8541, и при таких версия мне выдало сообщение что  LIBFPTR_PARAM_MARKING_CODE - нет такого поля и чек пробит не будет. Тогда я сделал по старому, и просто строку подставил в этот тэг Объект.Драйвер.setParam(1162, nomenclatureCode); и чек пробился...
16 evorle145
 
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 минуты после пробития чека (и продажа и возврат)
17 d4rkmesa
 
14.03.21
13:33
(16) Браво.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.