Вход | Регистрация
    1  2   
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Передача тэгов маркируемой продукции

v7: Передача тэгов маркируемой продукции
Я
   kupec
 
05.10.21 - 11:32
Доброго дня, кто то делал для ШТРИХа передачу маркировки по молочке?
Для табака у меня сделано вот так

            FR.Password=ПарольККМ(Кассир);
            //Тип маркировки товара.
            FR.MarkingType=17485;    
            //Код маркировки товара.
            FR.GTIN=Лев(ИДМаркировка,14);                                                                  
            FR.SerialNumber=Сред(СокрЛП(ИДМаркировка),15,7);                          
            FR.FNSendItemCodeData();                              

А для молочки как делать? Передавать все символы которые до символа с кодом 29, начиная с 17 символа?, так как первые 16 это GTIN и есть?
   Злопчинский
 
1 - 05.10.21 - 12:20
гтин не 16. гтин 12/13/14
   kupec
 
2 - 05.10.21 - 12:33
0104607004892936215yQnIO #29 93FXLQ #13 
т.е. вот от этого ШК отделяю первые 2 символа - 01 и остальное как раз и получается 14 символьный GTIN?
   Злопчинский
 
3 - 05.10.21 - 12:34
типа да
   kupec
 
4 - 05.10.21 - 12:38
ну и получается тогда что после откидываем 21 и перед #29 первые символы (6 штук) это и есть серийник?
   victuan1
 
5 - 05.10.21 - 17:22
(0) Я делал. Для какой версии ФФД нужно?
   victuan1
 
6 - 05.10.21 - 17:24
ГТИН всегда 14 символов (для всех товарных групп), а Серийник у молочки всегда 6 символов:
"01 + GTIN (14 chars) + 21 + СерийныйНомер (6 chars) + 93 + КодПроверки (4 chars)"
   victuan1
 
7 - 05.10.21 - 17:26
Пример 1:

Считанная бинарная последовательность: 010460043993125621JgXJ5.T\u001d8005112000\u001d930001\u001d923zbrLA==\u001d24014276281.

Символ FNC1 по стандарту GS1 в примере обозначается как «\u001d».

Выделенная последовательность для передачи в значение реквизита «код товара» (тег 1162): 04600439931256 & JgXJ5.T & 112000.

04600439931256 - представляется в виде 6-байтного hex: 04h 2Fh lFh 96h 81h 78h.

JgXJ5.T - кодируется в набор байт hex, интерпретируя символы согласно ASCII таблицы: 4Ah 67h 58h 4Ah 35h 2Eh 54h.

112000 - кодируется в набор байт hex, интерпретируя символы согласно ASCII таблицы: 31h 31h 32h 30h 30h 30h.

Значение реквизита «код товара» (тег 1162): 44h 4Dh 04h 2Fh 1Fh 96h 81h 78h 4Ah 67h 58h 4Ah 35h 2Eh 54h 31h 31h 32h 30h 30h 30h.
   kupec
 
8 - 06.10.21 - 10:16
(5) сейчас все кассы 1.05 или 1.1, в течении дня сегодня будут менять на одной из касс на 1.2, так что на данный момент актально для двух вариантов.
   NorthWind
 
9 - 06.10.21 - 10:22
(2) 0104607004892936215yQnIO #29 93FXLQ #13 
дело в том, что если у вас AI фиксированного размера (а 01, если я верно помню, всегда 14, т.е. фиксированная), то FNC1 необязателен.
Так что в данном случае у вас
(01)04607004892936
(21)5yQnIO #29 93FXLQ #13
   NorthWind
 
10 - 06.10.21 - 10:23
в молочке, наверно, еще дата изготовления как минимум должна быть. Тут только EAN13 и серийник от честного знака...
   victuan1
 
11 - 07.10.21 - 06:33
(10) Нет, не будет даты изготовления в КМ. Отказались от нее в ЧЗ.
   victuan1
 
12 - 07.10.21 - 07:07
(9) Не совсем так:
Если ФФД 1.05/1.1 то в ОФД должно уйти: 4607004892936 5yQnIO
Если ФФД 1.2, то в ОФД уходит: 01 04607004892936 215yQnIO #29 93FXLQ

Буквально в конце сентября я прошел проверочные испытания по молочке своего ПО в Честном ЗНАКе именно по этому сценарию (по другим сценариям мое ПО не аккредитовали бы).
   kupec
 
13 - 08.10.21 - 10:05
(12) каким же образом мне используя 1.2 передать тэги? Сейчас сделано вот так

 FR.Password=ПарольККМ(Кассир);
            //Тип маркировки товара.

            FR.MarkingType=17485;    
            //Код маркировки товара.

            FR.GTIN=Лев(ИДМаркировка,14);                                                                  
            FR.SerialNumber=Сред(СокрЛП(ИДМаркировка),15,7);                          
            FR.FNSendItemCodeData();        

Но почему то теперь это не проходит, ругается драйвер

Код ошибки 51 Некорректные параметры в команде
   victuan1
 
14 - 08.10.21 - 11:40
(13) Эти методы для ФФД 1.05/1.1.
Для 1.2 всё по другому.
   victuan1
 
15 - 08.10.21 - 11:45
Чтобы понять насколько всё сложно и заморочено в плане маркировки на ФФД 1.2, почитайте схемы интеграции:
http://fs.atol.ru/_layouts/15/atol.templates/Handlers/FileHandler.ashx?guid=59712437-d622-458c-a0e5-98e4e5e2cdfb&webUrl=

Это для Атола, но у Штрих-м аналогично (т.к ФН-М тот же самый).
   kupec
 
16 - 08.10.21 - 11:48
Правильно ли я понимаю, что перед тем как продать маркированный товар необходимо его сначала проверить через драйвер. И после получения ответа только совершать передачу тэга?
   victuan1
 
17 - 08.10.21 - 11:48
У меня несколько дней ушло только на переписку с техподдержкой Штрих-М, чтобы понять как всё это увязать в коде для их драйвера. Некоторые вещи не документированы в их документации.
Например, кто знает как пользоваться методом FNUserAttribute? Манулов по этому методу ноль.
   victuan1
 
18 - 08.10.21 - 11:48
(16) Правильно.
   kupec
 
19 - 08.10.21 - 11:50
(18) т.е. без проверки вообще никак не обойтись?
   victuan1
 
20 - 08.10.21 - 11:54
(19) Никак, т.к. железно зашито на уровне ФН-М. Я пробовал.
   kupec
 
21 - 08.10.21 - 12:27
ну вот допустим считанный код вот такой
0104601216012779215XIPBe<0x1D>931eil
FNCheckItemBarcode
Что передавать в BarCode ? Весь целиком или только GTIN?
   kupec
 
22 - 08.10.21 - 12:31
я что не пробую проверять у меня на все один ответ
Статус локальной проверки    : 0
  "код маркировки не может быть проверен фискальным накопителем с использованием ключа проверки КП"
Результат локальной проверки : 1, КМ данного типа не подлежит проверке в ФН
Распознанный тип КМ          : 255, неизвестное значение
   kupec
 
23 - 08.10.21 - 12:33
Статус локальной проверки    : 0
  "код маркировки не может быть проверен фискальным накопителем с использованием ключа проверки КП"
Результат локальной проверки : 1, КМ данного типа не подлежит проверке в ФН
Распознанный тип КМ          : 5, КМ со значением кода проверки длиной 4 символа, не подлежащим проверке в ФН
Код ответа ФН на команду онлайн-проверки: 0, Ошибок нет
Результат проверки КМ        : 15
  "код маркировки проверен"
  "результат проверки КП КМ положительный"
  "проверка статуса ОИСМ выполнена"
  "от ОИСМ получены сведения, что планируемый статус товара корректен"
  "результат проверки КП КМ и статуса товара сформирован ККТ, работающей в режиме передачи данных"
Реквизиты ответа сервера     : 42 08 04 00 4C 10 60 61 39 08 01 00 00 D5 07 01 00 0F 3D 08 01 00 01 34 08 01 00 05

Вот что удалось получить
   victuan1
 
24 - 08.10.21 - 14:09
(21) Весь целиком, а последовательность <0x1D> нужно перед этим заменить на символ с кодом 29:
КМ = СтрЗаменить(КМ,"<0x1D>",Симв(29));

(23) Результат проверки КМ        : 15
означает, что всё хорошо, [М+]
   kupec
 
25 - 08.10.21 - 14:22
(24) каким образом читать данные в ПО? Какие там команды или атрибуты? Где про это можно почитать? Что то руководство программиста они давненько не обновляли
   kupec
 
26 - 08.10.21 - 14:29
(25) а если у меня со сканера ШК не приходит такая последовательность? Это критично или нет?
   victuan1
 
27 - 08.10.21 - 14:32
(25) https://exam.shtrih-m-partners.ru/base/ - Общее для ККТ - драйвера. Там же обновленная документация.
(26) Какая приходит?
   kupec
 
28 - 08.10.21 - 15:05
Приходит например вот
0104601216012779215XIPBe<0x1D>931eil
   kupec
 
29 - 08.10.21 - 15:07
(27) руководство прошлогоднее от 16 ноября 2020
   victuan1
 
30 - 08.10.21 - 15:49
(29) Я по нему и работал. Новее нет.
(28) См. (24)
 
 
   kupec
 
31 - 08.10.21 - 15:52
А как же теперь передавать данные о ШК ЕГАИС? У меня тоже вылезает ошибка 51, некорректные парамемтры в команде
   victuan1
 
32 - 08.10.21 - 15:53
(31) ШК ЕГАИС не передаем в ОФД (и никогда не нужно было передавать в ОФД).
Их нужно передавать через УТМ запросом версии Cheque или ChequeV3.
   victuan1
 
33 - 08.10.21 - 15:54
Актуальная версия драйвера: 5.16.877 x32 

http://doc.shtrih-m.ru/Files/DrvFR_5.16_877_x32.exe
   kupec
 
34 - 08.10.21 - 16:00
Драйвер есть последний, к нему описания нет или я слепой и не могу найти
   victuan1
 
35 - 08.10.21 - 16:07
(34) Я не пользовался описанием к новому драйверу - не подскажу где искать.
   brainguard
 
36 - 08.10.21 - 16:09
(34) К последнему драйверу подходит предыдущее описание. Там ничего не меняли, только ошибки фиксили
   kupec
 
37 - 08.10.21 - 16:42
(36) Поделитесь пожалуйста мне на почту руководством, которое у вас есть. Заранее благодарю
   victuan1
 
38 - 08.10.21 - 17:08
(37) Я вам дал ссылку в (27) - берите оттуда.
   arian_
 
39 - 11.10.21 - 18:06
Кто-нибудь уже запустил для 1с 7.7 передачу маркированного товара для ФФД 1.2. Получилось у кого-нибудь?
   Злопчинский
 
40 - 11.10.21 - 18:22
(39) а шо?
   arian_
 
41 - 11.10.21 - 18:30
(40) Хотел узнать какую версию драйвера использовали 4.15 или 5.16? И куда теперь криптохвост добавлять в SerialNumber или какой то отдельный параметр?
   victuan1
 
42 - 12.10.21 - 05:48
(39) Получилось.
(41) На обоих версиях драйверов работает.
"И куда теперь криптохвост добавлять в SerialNumber или какой то отдельный параметр?" У-у, как запущено... а текущую тему прочитать с начала, не судьба? В (27) ссылка откуда скачать документацию по Штрих-М.
   arian_
 
43 - 12.10.21 - 06:34
(42) Ну так это было вчера. Я разобрался. Сначала проверяем марку с криптохвостом, а затем выводим вопрос пользователю от подтверждении пользователю пробития чека, если марка не прошла проверку.
Вот так:
меняем
........
глФР.MarkingType=17485;
глФР.GTIN=ТЗначМарки.Джитин;
глФР.SerialNumber=ТЗначМарки.Серийник;
глФР.FNSendItemCodeData();
........
на
qr="010460702776893521000000013JBSF<0x1D>91FFD0<0x1D>92dGVzdGifC5FkjETjJhotf7m8rsjQHeoNyxcpaEIZfDQ=";
qr=СтрЗаменить(qr,"<0x1D>",Симв(29));
глФР.BarCode = qr;
глФР.ItemStatus = 1;
глФР.FNCheckItemBarcode();

//Дальше ККМ возвращает ряд тэгов с результатами проверки

глФР.FNAcceptMarkingCode();
глФР.Barcode = qr;
глФР.FNSendItemBarcode();

Правильно?

Я запутался какие тэги в ФФД 1.2 необходимо еще передать в ККМ или этого достаточно для того, чтобы чек пробился правильно? При условии что товар продается целыми шиуками.
   victuan1
 
44 - 12.10.21 - 06:53
(43) Желательно еще учесть обработку ошибок и передачу меры кол-ва товара.
   arian_
 
45 - 12.10.21 - 08:11
(44) я так понимаю передача меры количества товара имеет смысл при частичном выбытии товара. Например продаем 1 сигарету из пачки.
   victuan1
 
46 - 12.10.21 - 09:45
(45) Я имел в виду тег 1197, он обязательный по ФФД 1.2 для любого типа товаров.
   arian_
 
47 - 12.10.21 - 09:48
(46) Читаю изменения в ФФД 1.2 :Единица измерения предмета расчета (тег 1197) изменена на новый реквизит «мера количества предмета расчета» (тег 2108)
   arian_
 
48 - 12.10.21 - 09:50
Тэг 1212, который для штриха PaymentItemSign. Раньше, если немаркированный товар, то просто ставили 1. а сейчас если товар не маркированный оставлять 1, а если маркированный, то 33 или он автоматом поставится, если у видит что есть КМ?
   victuan1
 
49 - 12.10.21 - 10:08
(47) Верно, теперь это тег 2108.
   victuan1
 
50 - 12.10.21 - 10:09
(48) Я ставлю 33 программно. Автоматом надо выбирать из двух значений 31 и 33, думаю автомат не сработает.
   arian_
 
51 - 12.10.21 - 10:15
(49) Так вот я не пойму в документации написано: MeasureUnit Мера количества предмета расчета (ФФД 1.2):
0 – Применяется для предметов расчета, которые могут быть реализованы поштучно или единицами;
.......
255 – Применяется при использовании иных единиц измерения
Скажем продаем ботинки или одежду. Что в этот тэг записывать?
   victuan1
 
52 - 12.10.21 - 10:18
(51) записывать 0.
   arian_
 
53 - 12.10.21 - 10:20
(50) А если товар не маркируемый записываем 1? Потому что 31 и 33 это всё для маркируемого
   arian_
 
54 - 12.10.21 - 10:21
(52) это также подходит и к немаркируемому товару?
   arian_
 
55 - 12.10.21 - 10:24
Действительно написано, что не передача тэгов 1212 и 2108 рассматривается как административное правонарушение. Но если это немаркируемый товар. Тэги эти тоже обязательны для передачи или нет?
   victuan1
 
56 - 12.10.21 - 10:26
(53) 1, если это не подакцизный товар. Здесь подробнее https://disk.yandex.ru/i/wx7PyIbo3U57Vh
   victuan1
 
57 - 12.10.21 - 10:27
(55) Да, тоже.
   victuan1
 
58 - 12.10.21 - 10:27
(54) Да
   arian_
 
59 - 12.10.21 - 10:29
Разобрался. Спасибо!
   kupec
 
60 - 12.10.21 - 16:53
глФР.BarCode = qr;
глФР.ItemStatus = 1;
глФР.FNCheckItemBarcode();

Если я вот так сделаю первый раз при подключении к ККМ, то повторно уже не получается, выдает ошибку что не верные реквизиты. Как сделать так, что бы при одном сеансе связи с ККМ данный способ проверки работал всегда, может надо какую то команду подать, что то типа очистки буфера проверки, вроде как то так она называется.
 
 
   arian_
 
61 - 12.10.21 - 21:12
(60) После всего этого делаете вот это:
глФР.FNAcceptMarkingCode();
глФР.Barcode = qr;
глФР.FNSendItemBarcode();
глФР.FNCloseCheckEx();
   arian_
 
62 - 12.10.21 - 21:14
То есть это в цикле перебора табличной части
глФР.FNAcceptMarkingCode();
глФР.Barcode = qr;
глФР.FNSendItemBarcode();

А в конце при пробития чека
глФР.FNCloseCheckEx();
   arian_
 
63 - 12.10.21 - 22:55
(60) А разве при закрытии чека глФР.FNCloseCheckEx(); буфер ККМ не должен очищаться сам?
И для чего нужна такая команда: FNConfirmNotificationRead ФНПодтвердитьВыгрузкуУведомления
Подтверждение выгрузки уведомления (ФФД 1.2)
У меня пока не обновлена прошивка, поэтому не могу проверить. Возможно victuan1 поможет.
   kupec
 
64 - 13.10.21 - 13:25
(61) (62) (63) в тесте драйвера все работает, смотрел лог файл, ничем вроде не отличается мой алгоритм работы и алгоритм тестдрайвера. И вот как раз таки в нем все работает, а в моем ПО не хочет. Тут тогда другой вопрос встает. Как в цикле перебирать FNCheckItemBarcode() если после первой проверки у меня вылетает ошибка на втором. Что то мне вот этот момент не понятен
   arian_
 
65 - 13.10.21 - 15:30
(64) Покажите код формирования чека.
   kupec
 
66 - 14.10.21 - 16:24
(65) я чек не формирую, я сначала в программе просто пытаюсь получить результат проверки марки

    FR.Password=30;
    FR.ItemStatus=1;
    FR.CheckItemMode=0;
    FR.Barcode=СокрЛП(ДанныеДляПроверки);
    FR.FNCheckItemBarcode();
    Если ОтветДрайвера(,"Проверка КМ")<>0 Тогда
        Возврат;
    КонецЕсли; 

Естественно сначала подключаюсь к ККМ. Так вот...первый раз код проходит, второй раз уже выдает ошибку не верные реквизиты. Если переподключиться к ККМ, то проверка первый раз опять проходит, ну а на второй опять ошибка
   arian_
 
67 - 15.10.21 - 13:56
Попробуйте для штучного товара:

        FR.Password=30;
    Если ВидОперации=Перечисление.ВидыОперацийЧекККМ.Чек Тогда
        FR.CheckType=0;
    ИначеЕсли ВидОперации=Перечисление.ВидыОперацийЧекККМ.ЧекНаВозврат Тогда
        FR.CheckType=2;
    КонецЕсли;
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку()>0 Цикл     
            FR.BarCode = СтрЗаменить(КМ,"<0x1D>",Симв(29));;// реквизит табличной части;

        FR.ItemStatus = 1;// Планируемый статус - штучный товар, Реализован

        FR.CheckItemMode = 0;//полная проверка (локальная проверка ФН и проверка через ОФД

        FR.FNCheckItemBarcode();//Проверка штрих кода GS1

        
        //Выводим данные проверки для контроля. Здесь же можно указать проверку условия принятия или не принятия кассиром решения об пробитии каждой позиции чека

        Сообщить("Статус локальной проверки: "+FR.CheckItemLocalResult);
        Сообщить("Причина, по которой не была проведена локальная проверка: "+FR.CheckItemLocalError);
        Сообщить("Распознанный тип КМ, (Тег 2100 ФФД): "+FR.MarkingType2);
        Сообщить("Код ответа ФН на команду онлайн-проверки: "+FR.KMServerErrorCode);
        Сообщить("Результат проверки КМ. (Тег 2106 ФФД): " + FR.KMServerCheckingStatus); 

        FR.FNAcceptMarkingCode();//принять введеный код марки 

        
        FR.StringForPrinting=печнаим;
        FR.Quantity=1;
        FR.Tax1=0;
        FR.Price=Окр(Сумма/Количество, 2);
        FR.PaymentTypeSign=4;
        FR.PaymentItemSign=31;//1-если не маркируемый и 33, если маркируемый и акцизный, 31 - маркируем безакцизный

        FR.MeasureUnit = 0;
        
        // Передаем Номер ГТД согласно формату ФФД 1.1

        FR.TagNumber = 1231;
        FR.TagType = 7;
        FR.TagValueStr = СокрЛП(Строка(Номенклатура.НомерГТД.Наименование));
        FR.FNSendTagOperation();
        
        // Передаем Код страны происхождения согласно формату ФФД 1.1

        FR.TagNumber = 1230;
        FR.TagType = 7;
        FR.TagValueStr = СокрЛП(Строка(Номенклатура.СтранаПроисхождения.Код));
        FR.FNSendTagOperation();    
        FR.FNOperation();
        
        FR.BarCode = СтрЗаменить(КМ,"<0x1D>",Симв(29));;// реквизит табличной части;

                  FR.FNSendItemBarcode();//привязываем марку к позиции 

    КонецЦикла;
    
    //Отправляем чек на электронную почту

    Если СокрЛП(ТелПочта)<>"" Тогда  
        FR.CustomerEmail=СокрЛП(ТелПочта);
        FR.FNSendCustomerEmail();
    КонецЕсли;
    //    Закрытие чека

    FR.Password=30;
    FR.StringForPrinting="================================================";
    FR.FNCloseCheckEx();
    ОтветДрайвера();
    Сообщить("Результат: "+Строка(Result));
    Сообщить("Ошибка параметра: "+Строка(ОшибкаПараметра));
   arian_
 
68 - 15.10.21 - 13:58
печнаим - это наименование Номенклатуры
   NikeArz
 
69 - 15.10.21 - 15:11
У меня все работает для штучного товара
пробовал на сигаретах и автошинах, до обуви руки не дошли
Конфигураци 1С самописная

Функция ОперацияПроверитьКодМаркировки(Объект, НомерЛУ, Пароль, СтруктураКМ)
    
    
    Результат = "";
    
    Если Объект = Неопределено Тогда
        Результат = "- Торговое оборудование не подключено.";
        СтруктураКМ.КодПроверен = 3;
        СтруктураКМ.ОтветПроверки = "- Проверка КМ не выполнена.";
        Возврат Результат;
    КонецЕсли;
    
    Объект.LDNumber = НомерЛУ;
    Объект.SetActiveLD();
    Если Объект.ResultCode <> 0 Тогда
        Результат = Объект.ResultCodeDescription;
        СтруктураКМ.КодПроверен = 3;
        СтруктураКМ.ОтветПроверки = "- Проверка КМ не выполнена.";
        Возврат Результат;
    КонецЕсли;
    
    Объект.Password = Пароль;
    Объект.Connect();
    Если Объект.ResultCode <> 0 Тогда
        Результат = Объект.ResultCodeDescription;
        СтруктураКМ.КодПроверен = 3;
        СтруктураКМ.ОтветПроверки = "- Проверка КМ не выполнена.";
        Возврат Результат;
    КонецЕсли;
    
    Объект.GetDeviceMetrics();
    Если Объект.ResultCode <> 0 Тогда
        Результат = Объект.ResultCodeDescription;
        Объект.Disconnect();
        СтруктураКМ.КодПроверен = 3;
        СтруктураКМ.ОтветПроверки = "- Проверка КМ не выполнена.";
        Возврат Результат;
    КонецЕсли;
    
    Модель = Объект.UModel;//Объект.УМодельУстройства

    
    мРезультатПроверкиСервером     = Неопределено;
    мСтатусПроверкиСервером     = Неопределено;
    
    //************************************************************

    Объект.Password         = Пароль;
    Объект.BarCode             = СтруктураКМ.КодМаркировки;//Код записывается как читается со сканера с символом разделителем символ(29)

    Объект.ItemStatus         = СтруктураКМ.СтатусОперации;// 1 продажа, 3 - возврат

    Объект.CheckItemMode     = 0;
    Объект.TLVDataHEX         = "";
    Объект.FNCheckItemBarcode();
    Если Объект.ResultCode <> 0 Тогда
        Результат = Объект.ResultCodeDescription;
        Объект.FNDeclineMarkingCode();//отвергнуть код маркировки

        СтруктураКМ.КодПроверен = 3;
        СтруктураКМ.ОтветПроверки = "- Проверка КМ не выполнена. Код отвергнут.";
        Объект.Disconnect();
        Возврат Результат;
    КонецЕсли;
    
    мСтатусПроверкиСервером     = Объект.KMServerErrorCode;
    мРезультатПроверкиСервером     = Объект.KMServerCheckingStatus;

    Если мРезультатПроверкиСервером = 15 Тогда
        СтруктураКМ.КодПроверен = 0;// 0- М+ 1- М 2- М-

        СтруктураКМ.ОтветПроверки = "";
        Объект.FNAcceptMarkingCode();//принять код маркировки

    ИначеЕсли мРезультатПроверкиСервером = 7 Тогда
        СтруктураКМ.КодПроверен = 2;
        СтруктураКМ.ОтветПроверки = "Проверка КП КМ выполнена с положительным результатом, статус товара у ОИСМ некорректен";
        Объект.FNAcceptMarkingCode();//принять код маркировки

    ИначеЕсли мРезультатПроверкиСервером = 5 Тогда
        СтруктураКМ.КодПроверен = 2;
        СтруктураКМ.ОтветПроверки = "Проверка КП КМ выполнена с отрицательным результатом, статус товара у ОИСМ некорректен";
        Объект.FNAcceptMarkingCode();//принять код маркировки

    ИначеЕсли мРезультатПроверкиСервером = 19 Тогда
        СтруктураКМ.КодПроверен = 1;
        СтруктураКМ.ОтветПроверки = "Проверка КП КМ выполнена в ФН с положительным результатом, статус товара ОИСМ не проверен (ККТ функционирует в автономном режиме)";
        Объект.FNAcceptMarkingCode();//принять код маркировки

    ИначеЕсли мРезультатПроверкиСервером = 17 Тогда
        СтруктураКМ.КодПроверен = 2;
        СтруктураКМ.ОтветПроверки = "Проверка КП КМ выполнена в ФН с отрицательным результатом, статус товара ОИСМ не проверен (ККТ функционирует в автономном режиме)";
        Объект.FNAcceptMarkingCode();//принять код маркировки

    ИначеЕсли мРезультатПроверкиСервером = 16 Тогда
        СтруктураКМ.КодПроверен = 1;
        СтруктураКМ.ОтветПроверки = "Проверка КП КМ не выполнена, статус товара ОИСМ не проверен (ККТ функционирует в автономном режиме)";
        Объект.FNAcceptMarkingCode();//принять код маркировки

    ИначеЕсли мРезультатПроверкиСервером = 3 Тогда
        СтруктураКМ.КодПроверен = 1;
        СтруктураКМ.ОтветПроверки = "Проверка КП КМ выполнена с положительным результатом, статус товара ОИСМ не проверен";
        Объект.FNAcceptMarkingCode();//принять код маркировки

    ИначеЕсли мРезультатПроверкиСервером = 1 Тогда
        СтруктураКМ.КодПроверен = 2;
        СтруктураКМ.ОтветПроверки = "Проверка КП КМ выполнена в ФН с отрицательным результатом, статус товара ОИСМ не проверен";
        Объект.FNAcceptMarkingCode();//принять код маркировки

    ИначеЕсли мРезультатПроверкиСервером = 0 Тогда
        СтруктураКМ.КодПроверен = 1;
        СтруктураКМ.ОтветПроверки = "Проверка КП КМ выполнена в ФН с отрицательным результатом, статус товара ОИСМ не проверен";
        Объект.FNAcceptMarkingCode();//принять код маркировки

    Иначе
        СтруктураКМ.КодПроверен = 3;
        СтруктураКМ.ОтветПроверки = "- Проверка не выполнена. Код отвергнут.";
        Объект.FNDeclineMarkingCode();//отвергнуть код маркировки

    КонецЕсли;    
    
    Если Объект.ResultCode <> 0 Тогда
        Результат = Объект.ResultCodeDescription;
        СтруктураКМ.ОтветПроверки = "- Проверка не выполнена. Код отвергнут.";
        СтруктураКМ.КодПроверен = 3;
        Объект.Disconnect();
        Возврат Результат;
    КонецЕсли;
    
    
    Объект.Password = Пароль;
    Объект.GetECRStatus();
    Если Объект.ResultCode <> 0 Тогда
        Результат = Объект.ResultCodeDescription;
    КонецЕсли;
    
    Объект.Disconnect();
    Возврат Результат;
    
КонецФункции
   kupec
 
70 - 15.10.21 - 15:39
Всем большое спасибо, в выходные поиграюсь.
   arian_
 
71 - 15.10.21 - 15:43
(69) Подскажите а зачем вы после проверки каждого кода освобождвете ком порт
Объект.Disconnect();
   arian_
 
72 - 15.10.21 - 15:43
(70) Напишите что получилось. На следующей неделе тоже ожидает после перепрошивки...
   NikeArz
 
73 - 15.10.21 - 16:55
(71) Если честно то лет 15 так работает и не знаю.
   NikeArz
 
74 - 15.10.21 - 16:57
(71) У нас с 2007 года Штрихи стоят поэтому по многим моментам внимание не заострял. Работает и ладно.
   kupec
 
75 - 15.10.21 - 18:10
(71) Есть 2 варианта работы с ККМ, ну это как по мне....
1 - При запуске кассового ПО подключаемся к ККМ и не отключаемся до завершения работы кассового ПО
2 - При попытке пробить чек из кассового ПО подключаемся к кассе и после завершения чека отключаемся от неё. Соответственно тоже самое для Z X отчетов и всяких там манипуляций с кассой.
Тут сам каждый для себя выбирает, как ему лучше работать. Например если в магазине, где поток народа практически всегда, соответственно лучше соединиться с кассой и занять порт на все время работы программы, а если у тебя дай бог раз в пол часа клиент, то тут наверно лучше и освобождать порт. На сколько мне известно, в 1С Розница как раз таки используется второй вариант по умолчанию. Т.е. после манипуляций с кассой порт освобождается
   anton-x
 
76 - 20.10.21 - 20:57
(60) Подскажи, пожалуйста, удалось побороть ошибку "Неразрешенные реквизиты"? Такая же ситуация, для следующей проверки.
   kupec
 
77 - 21.10.21 - 15:27
(76) Я приболел, нет возможности поковырять кассу, надеюсь на следующей неделе доберусь.
   anton-x
 
78 - 21.10.21 - 16:36
Скорейшего выздоровления! Коллеги, возможно у кого-то есть мысли по этому поводу? Суть в том, что последовательный вызов FNCheckItemBarcode() для второй марки выдаёт ошибку "Неразрешенные реквизиты". На сколько я понял, эту ошибку возвращает ФН. Как и писали коллеги выше, если переподключиться к драйверу, пропускает. По общей логике, я планирую пройтись по списку марок и принять или отвергнуть, и только затем перейти к регистрации позиций и закрытия чека.
   kupec
 
79 - 22.10.21 - 14:34
(78) Какая версия драйвера используется? У меня 874? но уже есть 883, может там уже это исправлено, посмотреть можно там http://doc.shtrih-m.ru/, кстати там есть и примеры для маркировки ФФД 1.2, но они мне не помогли, либо я что то не углядел.
   kupec
 
80 - 22.10.21 - 14:41
Почитал сейчас список изменений, то что стоит у меня 874 и текущая 883 как раз есть изменения и исправления при работе с КМ. Так что можно попробовать обновить драйвер до последней версии. Если будет возможность, отпишитесь про результат
   arian_
 
81 - 22.10.21 - 15:08
(78) На текущий момент стало поступать достаточно много вопросов связанных с причинами возникновения ошибки 11: "Неразрешенные реквизиты" в ответ на команду проверки кода маркировки (метод FNCheckItemBarcode, реализующий команду FF61h). Не смотря на то, что данная ошибки не декларирована в протоколе ФН под ФФД1.2, но она возникает. Причина ошибки в том, что при заполнении реквизитов, необходимых для проверки кода маркировки, пользователь (разработчик ПО) не заполняет все необходимые поля, а именно свойство TLVDataHex. Если не реализуется дробное кол-во предмета расчета, то в данное свойство нужно в явном виде передавать "пустую строку". Если этого не сделать, то в него будет внесен ответ от сервера ОИСМ от предыдущей проверки кода маркировки.
   arian_
 
82 - 22.10.21 - 15:09
(78) Если вы брали за основу мой код, то если у вас не дробное количество, то перед FR.FNCheckItemBarcode(); необходимо FR.TLVDataHEX = "";
   kupec
 
83 - 22.10.21 - 19:01
(82) сделал предварительную обработку, помогло FR.TLVDataHEX = "", спасибо )))
   kupec
 
84 - 22.10.21 - 19:38
а есть ли у кого-нибудь описание CheckItemLocalError для ККМ?
   arian_
 
85 - 22.10.21 - 20:36
(84)
CheckItemLocalError ОшибкаЛокальнойПроверки
Тип: Integer / Целое
Причина, по которой не была проведена локальная проверка
Возможные значения:
0 – КМ проверен в ФН 1 – КМ данного типа не подлежит проверки в ФН 2 – ФН не содержит ключ проверки кода проверки этого КМ 3 – Проверка невозможна, так как отсутствуют идентификаторы применения GS1 91 и / или 92 или их формат неверный 4 –Внутренняя ошибка в ФН при проверке этого КМ

Список возвращаемых ошибок
https://docs.google.com/spreadsheets/d/19Mn5syH70XwFdg6Pe2fhYM17SNHGuOJDvQEQXHxSz54/edit#gid=0
   kupec
 
86 - 22.10.21 - 21:10
(85) я почему то у себя в руководстве программиста не могу найти данное описание, может есть ссылка, от куда взята данная информация, у меня наверно старая версия...хотя скачивал "типа" последнюю с сайта штриха
   arian_
 
87 - 22.10.21 - 21:37
(85) где-то на сайте штриха скачивал уже не помню: документация Руководство программиста от 02.03.2021
   kupec
 
88 - 22.10.21 - 22:09
у меня почему то от июня 2020 и новее не могу найти
Можно мне на почту скинуть документацию? В профиле адрес есть
   kupec
 
89 - 22.10.21 - 22:38
   kupec
 
90 - 22.10.21 - 22:39
Прошу прощения, промахнулся, вот верная - https://exam.shtrih-m-partners.ru/assets/materials/DriverKKT_Guide_415_16_11_20_.zip
   victuan1
 
91 - 23.10.21 - 06:46
(90) Но методов нового драйвера (5.16) в ней так и нет, например, метода очистки буфера КМ - FNMarkingClearBuffer.
   anton-x
 
92 - 25.10.21 - 09:50
(80) Версия тоже 874. Помогло TLVDataHEX = "". На новой сборке драйвера пока не пробовал. Но постараюсь проверить позже.
   kupec
 
93 - 25.10.21 - 16:05
Совершил тестовую продажу, вроде все удачно, на чеке написалось М+, только не понятно.....напротив данной буквы еще какие то 4 цифры,что это такое?
   kupec
 
94 - 25.10.21 - 16:18
+(93) пробовал несколько позиций маркированных в одном чеке, все сработало. Проверял на молочке и на табаке. Немного не понятно как с алкоголем быть? Надо ли посылать данные по нему, или он не считается маркированным?
   arian_
 
95 - 25.10.21 - 18:36
(94) Тем, кто продает шубы, изделия из натурального меха и алкоголь — на эти группы товаров ФФД 1.2 не распространяется. Вроде так.
   victuan1
 
96 - 26.10.21 - 07:10
   victuan1
 
97 - 26.10.21 - 07:11
(94) Алкоголь не считается маркированным СИ (средствами идентификации), поэтому его передаем только в УТМ.
   victuan1
 
98 - 26.10.21 - 07:12
(95) Также как в ФФД 1.05 и 1.1, их выбытие отражают не через чек ККТ.
   SmallAngryCat
 
99 - 26.10.21 - 11:33
(93) Подскажите как добиться появления этой волшебной буквы [М+] на чеке? У меня марка проходит проверку, в ОФД отправляется, в ЦРПТ выбывает из оборота, а буквы на чеке все равно нет. Может в таблицах ФР что-то нужно настроить?
   kupec
 
100 - 26.10.21 - 11:43
таблица 17 поле 25 вроде как, печать тэгов
  1  2   

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