Имя: Пароль:
1C
1C 7.7
v7: Выбытие ФФД 1.2
0 Mafiozaa
 
18.01.22
04:18
Приветствую, запоздал с запуском касс на ФФД 1.2, быстро быстро нужно запустить, из всего прочитанного получился вот такой код
    Если ПустоеЗначение(СокрЛП(СписокТоваров.КодМаркировки)) = 0 Тогда
        //Если Лев(КодМаркировки, 2) = "01" Тогда
        //    GTIN = Сред(КодМаркировки, 3, 14);
        //    SerialNumber = Сред(КодМаркировки, 19, 13);
        //КонецЕсли;
        //Объект.GTIN                 = GTIN;
        //Объект.SerialNumber         = SerialNumber;
        //Объект.MarkingType = 17485;
        //Объект.FNSendItemCodeData();
        КодМаркировки = СтрЗаменить(КодМаркировки, 91, "<0x1D>91");
        КодМаркировки = СтрЗаменить(КодМаркировки, 06, "06<0x1D>");
        КодМаркировки = СтрЗаменить(КодМаркировки, "<0x1D>",Симв(29));
        Объект.BarCode = КодМаркировки;
        Объект.ItemStatus = 1;
        Объект.FNCheckItemBarcode();
        Сообщить("Статус локальной проверки: "+Объект.CheckItemLocalResult);
        Сообщить("Причина, по которой не была проведена локальная проверка: "+Объект.CheckItemLocalError);
        Сообщить("Распознанный тип КМ, (Тег 2100 ФФД): "+Объект.MarkingType2);
        Сообщить("Код ответа ФН на команду онлайн-проверки: "+Объект.KMServerErrorCode);
        Сообщить("Результат проверки КМ. (Тег 2106 ФФД): " + Объект.KMServerCheckingStatus);
        Объект.FNAcceptMarkingCode();
        Объект.PaymentItemSign = 31;
        Объект.MeasureUnit = 0;
        Объект.BarCode = КодМаркировки;
        Объект.FNSendItemBarcode();
        Сообщить(КодМаркировки);
    КонецЕсли;    
        
        
        
    КонецЦикла;


При проверке, выдает везде 0, и по итогу когда печатаю чек, нет ни буквы М, ни в офд не ушло, ни когда разбираю чек на теги, нет тега 1163 и тд, в чем ошибка?
1 Mafiozaa
 
18.01.22
04:18
Если отправялю прямиком из Тест драйвера, все работает
2 Mafiozaa
 
18.01.22
05:03
Сканер считывает код вот такого формата 010290005421358721XSp4Gf5tMQyU_91EE0692mJHkCzIUzumMMBqe35REJrFVceReCmkTXLRvgioET24=
3 Pprog151713
 
18.01.22
06:29
Тебе не заменить надо, а подставить символ 29. Потому что в марке, если ты ее клавиатурой считываешь, нету символа 29.
4 Mafiozaa
 
18.01.22
06:29
Объект.FNCheckItemBarcode() - начала выдавать хоть какие то результаты,
Статус локальной проверки: -1
Причина, по которой не была проведена локальная проверка: 1
Распознанный тип КМ, (Тег 2100 ФФД): 3
Код ответа ФН на команду онлайн-проверки: 0
Результат проверки КМ. (Тег 2106 ФФД): 15
Беспокоит -1, в рук-ве вообще нет такого ответа -1
5 victuan1
 
18.01.22
06:33
КодМаркировки = СтрЗаменить(КодМаркировки, 91, "<0x1D>91");
        КодМаркировки = СтрЗаменить(КодМаркировки, 06, "06<0x1D>");
        КодМаркировки = СтрЗаменить(КодМаркировки, "<0x1D>",Симв(29));

Гениальный код! Продолжай в том же духе.
6 Mafiozaa
 
18.01.22
06:34
(5) Я знаю что это бред, этот кусок я тестил))) не обращай внимание
7 Mafiozaa
 
18.01.22
06:35
(5) Щас вопрос в том, проверка идет, а привязка к товару нет
8 Mafiozaa
 
18.01.22
06:35
Объект.BarCode = СтрЗаменить(КодМаркировки, "<0x1D>",Симв(29));
        Объект.ItemStatus = 1;
        Объект.FNCheckItemBarcode();
        Сообщить("Статус локальной проверки: "+Объект.CheckItemLocalResult);
        Сообщить("Причина, по которой не была проведена локальная проверка: "+Объект.CheckItemLocalError);
        Сообщить("Распознанный тип КМ, (Тег 2100 ФФД): "+Объект.MarkingType2);
        Сообщить("Код ответа ФН на команду онлайн-проверки: "+Объект.KMServerErrorCode);
        Сообщить("Результат проверки КМ. (Тег 2106 ФФД): " + Объект.KMServerCheckingStatus);
        Объект.FNAcceptMarkingCode();
        Объект.PaymentItemSign = 31;
        Объект.MeasureUnit = 0;
        Объект.FNSendItemBarcode();
9 Pprog151713
 
18.01.22
06:38
(8) Как ты сканируешь марку, по кому или по клаве?
10 Mafiozaa
 
18.01.22
06:38
(9) Com
11 Pprog151713
 
18.01.22
06:39
Тогда целиком пихай и все должно работать. Убирай заменить.
12 Mafiozaa
 
18.01.22
06:46
(11)
Статус локальной проверки: -1
Причина, по которой не была проведена локальная проверка: 1
Распознанный тип КМ, (Тег 2100 ФФД): 3
Код ответа ФН на команду онлайн-проверки: 0
Результат проверки КМ. (Тег 2106 ФФД): 15

Чек вышел, в офд без маркировки
13 Mafiozaa
 
18.01.22
06:46
(12) Что за -1, когда там от 0 - 3
14 victuan1
 
18.01.22
06:55
(7) Метод FNOperation в каком месте стоит?
15 Mafiozaa
 
18.01.22
06:57
(14)         Объект.Password          = Пароль;
        Объект.StringForPrinting = Лев(СтрокаДляПечати,ДлинаСтроки);
    //    Объект.Price             = СписокТоваров.Цена;  
    Если  СписокТоваров.Количество=0 тогда      
        Объект.Price             = СписокТоваров.Цена;  
    иначе
        Объект.Price             = СписокТоваров.Сумма/СписокТоваров.Количество;
    КонецЕсли;
        Объект.Quantity          = СписокТоваров.Количество;
        Объект.Department        = НомерСекции;
        КодМаркировки             = СписокТоваров.КодМаркировки;

        //Проверка наличия колонки "НДС" в таблице значений.
        НДСЕсть = "";
        Попытка
            НДС = СписокТоваров.НДС;
            НДСЕсть = 1;
        Исключение
            НДСЕсть = 0;
        КонецПопытки;
        
        Если НДСЕсть = 1 Тогда//Печатаем НДС
            
            // В настройках ФР надо настроить ставки:
            // Налог 1 = 18% - НДС 18%
            // Налог 2 = 10% - НДС 10%
            // Налог 3 = 20% - НДС 20%            
    
            Если СписокТоваров.НДС = 18 Тогда
                Объект.Tax1 = 1;
            ИначеЕсли СписокТоваров.НДС = 10 Тогда
                Объект.Tax1 = 2;
            ИначеЕсли СписокТоваров.НДС = 20 Тогда
                Объект.Tax1 = 3;
            Иначе
                Объект.Tax1 = 0;
            КонецЕсли;
            Объект.Tax2 = 0;
            Объект.Tax3 = 0;
            Объект.Tax4 = 0;
        КонецЕсли;                
            
        Если ПризнВозврата = 0 Тогда
            Объект.CheckType = 0;
        Иначе
            Объект.CheckType = 2;
        КонецЕсли;                            
        Объект.FNOperation();
16 victuan1
 
18.01.22
07:02
(15) все доп. теги к предмету расчета желательно передавать между FNOperation и FNSendItemCodeData (FNSendBarCode). Т.е. сначала FNOperation, потом все теги при помощи FNSendTagOperation, а затем FNSendItemBarcode
17 victuan1
 
18.01.22
07:04
18 Mafiozaa
 
18.01.22
07:04
(16) FNSendTagOperation вообще не передаю, а по факту так и есть, сперва идет FNOperation() затема проверка кода и тд, и только в конце FNSendItemBarcode, кое что заметил в чз
999604403016814654
18.01.2022
Возврат в оборот (ОФД)

ИП Волошина Наталья Евгеньевна

Обработан с ошибкам
Залетел один чек, видимо был вовзрат с ItemStatus = 1 (с пометкой продажи) и он забраковал, шальной залетел, а текущии которые провожу не вижу
19 victuan1
 
18.01.22
07:07
(18) Не все товарные группы разрешено возвращать чеком возврата прихода с указанием маркировки, например это запрещено для продовольственных товаров.
20 Mafiozaa
 
18.01.22
07:07
(19) У меня парфюм + текстиль
21 Mafiozaa
 
18.01.22
07:19
(20) Другой код попробывал, все тоже самое, статус локальной проверки -1
22 Pprog151713
 
18.01.22
07:20
Фискальник.ItemStatus = 1;
            Фискальник.CheckItemMode=0;
            Фискальник.FNCheckItemBarcode();
23 Pprog151713
 
18.01.22
07:21
Это поставь

Фискальник.PaymentTypeSign = 4; //Признак способа расчета (Полный расчет)
Фискальник.PaymentItemSign = 1; // Признак предмета расчета (Товар)
24 Mafiozaa
 
18.01.22
07:22
(23) До проверки КМ?
25 Pprog151713
 
18.01.22
07:23
Да (24)
26 Mafiozaa
 
18.01.22
07:24
(25)
        Объект.BarCode = КодМаркировки;
        Если Объект.CheckType = 0 Тогда
            Объект.ItemStatus = 1;
        КонецЕсли;
        Если Объект.CheckType = 2 Тогда
            Объект.ItemStatus = 3;
        КонецЕсли;
        Объект.CheckItemMode = 0;
        Объект.PaymentTypeSign = 4;
        Объект.PaymentItemSign = 1;
        Объект.FNCheckItemBarcode();
        Сообщить("Статус локальной проверки: "+Объект.CheckItemLocalResult);
        Сообщить("Причина, по которой не была проведена локальная проверка: "+Объект.CheckItemLocalError);
        Сообщить("Распознанный тип КМ, (Тег 2100 ФФД): "+Объект.MarkingType2);
        Сообщить("Код ответа ФН на команду онлайн-проверки: "+Объект.KMServerErrorCode);
        Сообщить("Результат проверки КМ. (Тег 2106 ФФД): " + Объект.KMServerCheckingStatus);
        Объект.FNAcceptMarkingCode();
        Объект.PaymentItemSign = 31;
        Объект.MeasureUnit = 0;
        Объект.FNSendItemBarcode();



Что то не так? все равно не списывает
27 Pprog151713
 
18.01.22
07:26
Объект.FNCheckItemBarcode(); - Это проходит?
28 Mafiozaa
 
18.01.22
07:27
(27) Как узнать? он что то возвращаеТ?
29 Pprog151713
 
18.01.22
07:28
Марка проверена должно писать.
30 Pprog151713
 
18.01.22
07:28
FR.ResultCodeDescription;
31 Mafiozaa
 
18.01.22
07:31
Код товара не распознан
32 victuan1
 
18.01.22
07:34
(31) Напиши код товара, которые передаешь в Объект.BarCode
Скорее всего, дело в неверно переданном КМ.
33 Mafiozaa
 
18.01.22
07:35
(32) 010290005421358721,gH%WgW%rOhe<91EE0692Fi9xAVdtX3OG8VqzK47v/N9wq3zuVtnRCMPPc1yqQyE= (комом считанный, ничего не добавляю не вырезаю)
34 Mafiozaa
 
18.01.22
07:38
(33) Вспоминаю вчерашний день, код не распознан писано когда я не вставлял <0x1D> быть может перед привязкой все такие нужно втыкать?
35 Pprog151713
 
18.01.22
07:38
А марку в тест драйвер засовываешь появляются <Dx>
36 Mafiozaa
 
18.01.22
07:38
(34) В самом тест драйвере когда тестил
37 Mafiozaa
 
18.01.22
07:39
(35) Да
38 Pprog151713
 
18.01.22
07:41
Покажи.
39 Mafiozaa
 
18.01.22
07:41
(38) 010290005421358721,gH%WgW%rOhe<<0x1D>91EE06<0x1D>92Fi9xAVdtX3OG8VqzK47v/N9wq3zuVtnRCMPPc1yqQyE= Это код скопированный из теста драйвера
40 Mafiozaa
 
18.01.22
07:42
При вставке туда без <0x1D> он автоматом их проставил
41 Pprog151713
 
18.01.22
07:49
И пишет что марка проверена тест драйвера?
42 Mafiozaa
 
18.01.22
07:49
(39)
Статус локальной проверки    : 0
  "код маркировки не может быть проверен фискальным накопителем с использованием ключа проверки КП"
Результат локальной проверки : 1, КМ данного типа не подлежит проверке в ФН
Распознанный тип КМ          : 3, КМ со значением кода проверки длиной 44 символа, не подлежащим проверке в ФН
Код ответа ФН на команду онлайн-проверки: 0, Ошибок нет
Результат проверки КМ        : 15
  "код маркировки проверен"
  "результат проверки КП КМ положительный"
  "проверка статуса ОИСМ выполнена"
  "от ОИСМ получены сведения, что планируемый статус товара корректен"
  "результат проверки КП КМ и статуса товара сформирован ККТ, работающей в режиме передачи данных"
Реквизиты ответа сервера     : 42 08 04 00 C3 46 E6 61 39 08 01 00 00 D5 07 01 00 0F 3D 08 01 00 01 34 08 01 00 03

При проверки в тест драйвере, если я его решу отправить, то он пройдет я почти что уверен
43 Pprog151713
 
18.01.22
07:51
У тебя походу фискальник, чето не проверяет......
44 Pprog151713
 
18.01.22
07:51
(42) Отправляй проверяй, она не спишется.
45 Mafiozaa
 
18.01.22
07:51
(43) Ну как не проверяет, когда в драйвере все ок, в 1ске что то не то
46 Mafiozaa
 
18.01.22
07:53
(44) Вышел чек M+
47 Pprog151713
 
18.01.22
07:53
Фискальник.CheckType=1;
48 Pprog151713
 
18.01.22
08:00
Подмени квадратик символом 29. Так точно должно работать. А заменять 91 и 92 убирать не надо.
49 Pprog151713
 
18.01.22
08:01
КодМаркировки = СтрЗаменить(КодМаркировки, 91, "<0x1D>91"); 91 убирать не надо
        КодМаркировки = СтрЗаменить(КодМаркировки, 06, "06<0x1D>"); 06 убирать не надо
        КодМаркировки = СтрЗаменить(КодМаркировки, "<0x1D>",Симв(29));
50 Pprog151713
 
18.01.22
08:02
КодМаркировки = СтрЗаменить(КодМаркировки, 91, "<0x1D>91");
        КодМаркировки = СтрЗаменить(КодМаркировки, 06, "06<0x1D>");
        КодМаркировки = СтрЗаменить(КодМаркировки, "<0x1D>",Симв(29));

После этого что пишет с маркой?
51 Pprog151713
 
18.01.22
08:03
(50) Это правильно должно быть.
52 Mafiozaa
 
18.01.22
08:06
(51)
    КодМаркировки = СтрЗаменить(КодМаркировки, 91, "<0x1D>91");
        КодМаркировки = СтрЗаменить(КодМаркировки, 06, "06<0x1D>");
        КодМаркировки = СтрЗаменить(КодМаркировки, "<0x1D>",Симв(29));
        Объект.BarCode = КодМаркировки;
        Если Объект.CheckType = 0 Тогда
             Объект.ItemStatus = 1;
        КонецЕсли;
        Если Объект.CheckType = 2 Тогда
             Объект.ItemStatus = 3;
        КонецЕсли;
        Объект.CheckItemMode = 0;
        Объект.PaymentTypeSign = 4;
        Объект.PaymentItemSign = 1;
        Объект.FNCheckItemBarcode();
        Сообщить("Статус локальной проверки: "+Объект.CheckItemLocalResult);
        Сообщить("Причина, по которой не была проведена локальная проверка: "+Объект.CheckItemLocalError);
        Сообщить("Распознанный тип КМ, (Тег 2100 ФФД): "+Объект.MarkingType2);
        Сообщить("Код ответа ФН на команду онлайн-проверки: "+Объект.KMServerErrorCode);
        Сообщить("Результат проверки КМ. (Тег 2106 ФФД): " + Объект.KMServerCheckingStatus);
        Объект.FNAcceptMarkingCode();
        Объект.PaymentItemSign = 31;
        Объект.MeasureUnit = 0;
        Объект.FNSendItemBarcode();

Статус локальной проверки: 0
Причина, по которой не была проведена локальная проверка: 0
Распознанный тип КМ, (Тег 2100 ФФД): 0
Код ответа ФН на команду онлайн-проверки: 0
Результат проверки КМ. (Тег 2106 ФФД): 0
Код товара не распознан
53 Mafiozaa
 
18.01.22
08:07
Вернулись откуда начали, даже проверку не проходит
54 Pprog151713
 
18.01.22
08:08
КодМаркировки = СтрЗаменить(КодМаркировки, 91, "<0x1D>91");
        КодМаркировки = СтрЗаменить(КодМаркировки, 06, "06<0x1D>");
        КодМаркировки = СтрЗаменить(КодМаркировки, "<0x1D>",Симв(29)); --- это хреново написано. Тебе надо квадратик заменить символом 29
55 Mafiozaa
 
18.01.22
08:10
(54) А как мне его поймать, если в строке с кодом маркировки я его не вижу, а лишь предпологаю где он
56 Pprog151713
 
18.01.22
08:11
У него точное положение. 31 +6 чтоли...
57 Mafiozaa
 
18.01.22
08:14
(56) 32 и 39 символ
58 Mafiozaa
 
18.01.22
08:14
(56) щас попробую
59 Mafiozaa
 
18.01.22
08:24
(56)         Символ = Сред(КодМаркировки, 32, 1);
        Если Найти(КодМаркировки, Символ) <> 0 Тогда
            КодМаркировки = СтрЗаменить(КодМаркировки, Символ, Симв(29));
        КонецЕсли;
        Объект.BarCode = КодМаркировки;

Все так же по нулям
60 Pprog151713
 
18.01.22
08:31
ДлинаМарки = СтрДлина(Марка);
СимволЗамены = Символ(29); // Разделитель 29 //90 -Z
Рез = Сред(Марка,1,31) + СимволЗамены + Сред(Марка,32,6)+ СимволЗамены + Сред(Марка,38,ДлинаМарки-38+1);

Где вас учат. Подровняй тока, тут для другого.
61 Pprog151713
 
18.01.22
08:35
По - быренькому захотел. :)
62 Mafiozaa
 
18.01.22
08:44
(61) Статус локальной проверки: 0
Причина, по которой не была проведена локальная проверка: 0
Распознанный тип КМ, (Тег 2100 ФФД): 0
Код ответа ФН на команду онлайн-проверки: 0
Результат проверки КМ. (Тег 2106 ФФД): 15
Код товара не распознан
63 Mafiozaa
 
18.01.22
08:45
(61)         ДлинаКМ = СтрДлина(КодМаркировки);
        СимволЗамены = Симв(29);
        КодМаркировки = Сред(КодМаркировки,1,31) + СимволЗамены + Сред(КодМаркировки,32,6) + СимволЗамены + Сред(КодМаркировки, 38, ДлинаКМ-38+1);
        Объект.BarCode = КодМаркировки;
64 Pprog151713
 
18.01.22
08:48
(63) тебе сдвинуть надо на твой квадратик. У тебя в итоге должно получиться вместо квадратика символ 29
65 Pprog151713
 
18.01.22
08:49
В двух местах.
66 Mafiozaa
 
18.01.22
08:58
(64) Ну получается я ломаю КМ на 3 части, 31 символ потом вставляю 29 симв, потом 6 символом, опять симв, и остаток, что куда двигать?
67 Mafiozaa
 
18.01.22
08:59
Все должно ехать же
68 Pprog151713
 
18.01.22
09:01
010290005421358721,gH%WgW%rOhe+Символ 29+91EE06+Символ 29+92Fi9xAVdtX3OG8VqzK47v/N9wq3zuVtnRCMPPc1yqQyE=
69 Pprog151713
 
18.01.22
09:02
Так понятно?
70 Ёпрст
 
18.01.22
10:56
(66) 1-31+симв(29)+33-38+симв(29)+40-... Так понятнее ?
71 Mafiozaa
 
18.01.22
14:21
(70) (69) Все было понятно с первого раза))) Вообщем суть, если я просто в переменную загоняю текст и делаю 29 симв, все выбывает все прибывает, как нужно, начинаю разбивать по той же схеме то, что получаю из самого чека сканером, получаю 0ли, буду играться
72 Ёпрст
 
18.01.22
14:30
(71) судя по коду, тебе не очень понятно, что нужно не с 32 символа брать, а с 33, например
73 Mafiozaa
 
18.01.22
14:34
Победа, спасибо всем кто отозвался)))
74 Mafiozaa
 
18.01.22
14:35
(72) Не, я делал все как нужно, были лишние пробелы, сокрлп воткнул пролетело
75 Mafiozaa
 
18.01.22
14:54
Последний вопрос, где то читал что там указывается форма оплаты, нал/безнал, это важно указывать?
76 victuan1
 
19.01.22
09:22
(75) Да.

Вдогонку по маркировке:
Теория:
https://infostart.ru/public/1172346/  для печати этикетки
https://infostart.ru/journal/news/news/poyavilis-rekomendatsii-po-kodirovaniyu-i-preobrazovaniyu-koda-markirovki_1209448/ рекомендации по кодированию.
77 mzelensky
 
20.01.22
14:11
(0) Автор, как с тобой связаться, вопросы есть по ФФД 1.2

Почта [email protected]
Скайп zel_maks
78 DimonZh
 
31.01.22
15:26
Коллеги, вы спасители - нигде не мог найти пример кода для передачи маркировки по ФФД 1.2
На днях замена ФН и соответственно не готов.
Подскажите - драйвер Штрих v5.16 теперь нужно будет использовать?
И не совсем понял - обязательно ли в считанный сканером полный код КМ вставлять символ 29 (сканер com) ?
79 DimonZh
 
31.01.22
15:38
PS и наверное в коде нужно отработать
Если (Объект.CheckItemLocalResult <> 1) или (Объект.KMServerErrorCode <> 0)
то АннулированиеЧека

также не понял
        Объект.PaymentItemSign = 31; // - для чего это перед FNSendItemBarcode() и код 31 не нашел в документации
        Объект.MeasureUnit = 0;      // и это зачем ?
        Объект.FNSendItemBarcode();
80 DimonZh
 
31.01.22
15:42
(76)    victuan1, Подскажете по моим вопросам? (78) (79)
81 MWWRuza
 
гуру
31.01.22
22:05
(78) И не совсем понял - обязательно ли в считанный сканером полный код КМ вставлять символ 29 (сканер com) ?
Зачем что-то вставлять? Они там и так будут. Главное - не вырезать.

Отсканируйте или в какой-нибудь терминал, умеющий слушать СОМ порт, или, проще, отладчиком отловите в процедуре ОбработкаВнешнегоСобытия, скопируйте и вставьте например в NotePad++ и все увидите сами...
82 victuan1
 
01.02.22
05:55
(78) "драйвер Штрих v5.16 теперь нужно будет использовать?"
Можно и 4.15 крайней версии.

"обязательно ли в считанный сканером полный код КМ вставлять символ 29 (сканер com)"
Не надо из КМ удалять символы 29, их нужно там оставить. А если они удалены, то вставить по своим местам.

(79) "Объект.PaymentItemSign = 31"
Тег 1212 (Признак предмета расчета) - в ФФД 1.2 имеет расширенный список значений: http://www.consultant.ru/document/cons_doc_LAW_362322/cc1e361ee41688e67fe65c4740a242a10c265c86/

"Объект.MeasureUnit = 0"
Тег 2108 - мера кол-ва ед.зим., 0 означает "шт." или "ед." http://www.consultant.ru/document/cons_doc_LAW_362322/0060b1f1924347c03afbc57a8d4af63888f81c6c/
83 victuan1
 
01.02.22
05:57
(81) При некоторых настройках сканера, считанный ШК будет "освобожден" от символов GS.
Повсеместно это встречается при использовании сканеров, подключенных в режиме эмуляции Клавиатуры (а не СОМ-порта).
Я уже добавил в свое ПО возможность в считанный КМ добавлять символы GS по эвристическому алгоритму с учетом товарной группы.
84 DimonZh
 
01.02.22
07:37
Благодарю за помощь!

(82) В мануале вроде не написано что надо перед FNSendItemBarcode() заполнять PaymentItemSign  и MeasureUnit
До ФФД 1.2 PaymentItemSign  я устанавливал перед FNOperation()

А в коде Mafiozaa (26)  почему-то PaymentItemSign  =1 а потом PaymentItemSign = 31

"Объект.PaymentItemSign = 31"
вот навертели, у меня только шины и обувь.
То есть если не маркированный 1, а шины обувь 33 ? - "о реализуемом товаре, подлежащем маркировке средством идентификации, имеющем код маркировки, за исключением подакцизного товара"
85 DimonZh
 
01.02.22
07:37
(82) (26)
86 victuan1
 
01.02.22
08:01
(84) Я бы не стал ориентироваться на код Mafiozaa
87 victuan1
 
01.02.22
08:03
(84) Для маркированных шин и обувь - 33.
88 DimonZh
 
01.02.22
08:06
(87) Спасибо! (86) В целом похоже на правду. Как понял, добавились команды проверки КМ и его отправки, остальное не изменилось.
89 DimonZh
 
01.02.22
13:47
И еще вопрос -Связка ГТИН+Серийник уникальна?
Дабы сильно не кодить Планирую завести отдельный справочник, в Наименование поместить ГТИН+Серийник,  в реквизит Полный КМ со сканера
Потом уже по Наименованию искать
90 victuan1
 
01.02.22
13:55
(89) Да, можно считать уникальная.
Но нужно при поиске учитывать регистр. Т.к. встроенные в 1С 7.7 функции поиска не чувствительны к регистру.
91 DimonZh
 
01.02.22
14:20
(90) Приму к сведению.
Тогда пишут так надо - Условия в объекте Запрос = Создатьобъект("Запрос") для dbf версии являются регистрозависимыми
92 Ёпрст
 
01.02.22
15:22
(91) неа
93 DimonZh
 
01.02.22
15:51
(92) Ну не перебором же (
94 DimonZh
 
02.02.22
14:52
(83)
Вот такой вот КМ записался у меня, Это правильный для передачи ? (копипастил из справочника 1с в блокнот)
010290001004054721qRN)Ia_&'hPy" 91EE06 92tzLKDHvbLktO1nQ4IEZvMYQvxiUfmzLuOtX4Vr8Z7nA=
95 victuan1
 
02.02.22
15:33
(94) Ну если в реале вместо пробелов стоят симв(29), то правильный.
96 victuan1
 
02.02.22
15:34
(95) Надо отметить, если эти символы записаны в реквизитах справочников 1С, то ТИИ покорежит данные.
97 DimonZh
 
02.02.22
17:51
(95) Полагаю если там и пробелы то похоже в "правильном" месте (не додумался сразу проверить что там в реале, по удаленке в обеденный перерыв написал процедуру записывающую КМ со сканера в справочник, потом мне скопипастили результат в блокнот и прислали),  
Тогда достаточно будет один раз использовать СТрЗаменить() , но это теперь уже как ФН заменят буду мучить сразу с попытками передать.

Спасибо за подсказки!
98 DimonZh
 
08.02.22
18:37
(96) Нашел такую идею хранения - "будем хранить как коды символов, разделенных точкой с запятой"
https://infostart.ru/public/69136/
т.е. полученный со сканера КМ разбираем на КодСимв() и записываем, потом при необходимости строку собираем Симв() из кодов
99 victuan1
 
08.02.22
19:01
(98) Избыточный объем для хранения. Может при хранение симв29 заменить на пробел?
100 DimonZh
 
08.02.22
19:24
(99) Не подумал, мы не ищем легких путей :)
Еще не проверял что пишется у клиента в справочник (если присланный мне копипаст верный то там уже пробел)
завтра-послезавтра привезут клиенту перешитый ФР, пока готовлюсь теоретически и обработку ФР к возможным вариантам дописываю.

Вот еще мануал по версии 5.16 драйвера читаю, там пишут вот это использовать
FNCheckItemBarcode2 Более простой вариант проверки маркированного товара, чем метод FNCheckItemBarcode, не требуется TLVDataHex
Хотя в приведенных на Мисте примерах кода не обнаружил, что в FNCheckItemBarcode используют TLVDataHex
101 victuan1
 
08.02.22
19:31
(100) КМ не может содержать пробел. Если он содержит его, значит КМ передан с ошибкой.
TLVDataHex используется здесь при передаче тега 1291 (дробного количества).
102 DimonZh
 
08.02.22
20:08
(101) Спасибо за наводку - завтра подключусь к ним посмотрю что в реале.
ГТИН с серийником выделялся из данных норм

    СЗДанные = СоздатьОбъект("СписокЗначений");
    
    GTIN = Сред(СтрокаДанныхШК,3,14);
    
    Хвост = Прав(СтрокаДанныхШК,СтрДлина(СтрокаДанныхШК)-16);
    
    ПозСерийник = Найти(Хвост,"21");
        ПозКлючПроверки = Найти(Хвост,"91");// Криптоподпись с 92
    
    СимволовСерийника = ПозКлючПроверки - ПозСерийник -3;
    
    Если (ПозКлючПроверки = 0) или (СимволовСерийника > 13) Тогда
        //лажа
        Сообщить("Не удалось распознать данные в");
        Сообщить(""+СтрокаДанныхШК);
        
    Иначе

        SerialNum = Сред(Хвост,ПозСерийник+2,СимволовСерийника);        
        СЗДанные.Установить("GTIN",GTIN);
        СЗДанные.Установить("SerialNum",SerialNum);
        
    КонецЕсли;
    
    Возврат СЗДанные;
103 victuan1
 
09.02.22
06:17
(102) Вот, выложил обработку для 1С 7.7, которая позволяет разложить КМ для любой группы товаров по составляющим.
Добавил опцию добавления в КМ символов-разделителей GS (символ 29), полезна в случаях если КМ считаны сканером в режиме эмуляции Клавиатуры, который удаляет эти символы.
https://disk.yandex.ru/d/3qm-kUAtJD6C1g
104 DimonZh
 
09.02.22
07:04
(103) Благодарю! Вы проделали большую работу по данной теме, будет полезно изучить.
105 DimonZh
 
15.02.22
19:45
(103) Подскажите, есть ли возможность программно получить версию протокола ФФД из фискальника? Что то не нахожу в мануале.. - На каждом рабочем месте по паре ФР, планируется перешивать аппараты на новый протокол последовательно.
106 victuan1
 
16.02.22
05:45
(105) Да, есть возможность. Но для каждого драйвера ФР свои методы.
107 DimonZh
 
16.02.22
06:50
(106) Штрих v 5.17
108 DimonZh
 
16.02.22
14:31
(106) ReadTable если я правильно понимаю,
нашел что ранее хранилось тут - "Зайдите в таблицу “№17 Региональные настройки” и посмотрите значение в 17 строке “Формат фд”"
Значение 0 соответствует ФФД 1.0
Значение 2 соответствует ФФД 1.05
109 DimonZh
 
16.02.22
17:10
(106) Все получилось

///********* проверка ФФД
        Объект.Password = ПарольАдминистратораФР;
        Объект.TableNumber = 17;
        Объект.FieldNumber = 17;
        Объект.RowNumber = 1;
        //Объект.GetFieldStruct;

        Если Объект.ReadTable() = 0 Тогда
        ВерсияФД = Объект.ValueOfFieldInteger;
        //Сообщить(ВерсияФД);
        // 0 - Версия 1.0 , 2 - 1.05 , 4 - 1.2
        Если ВерсияФД = 4 Тогда
            ФФД1_2 = 1; //Переменная модуля обслуж ФР
            //Сообщить("KKM FFD 1.2");
        КонецЕсли;
        Иначе
        Сообщить("Ошибка чтения табл 17");
        КонецЕсли;
110 DimonZh
 
16.02.22
17:25
Забыл при боевом тестировании добавить в справочник типов марк товаров код 33 //Для маркированных шин и обувь PaymentItemSign = 33
Но в итоге как ни странно все удачно прошло с PaymentItemSign = 1, вероятно чревато чем-то ?

На чеке все как положено, в Честном Знаке тоже норм...
Продали и потом вернули.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший