Имя: Пароль:
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

Почта zel_maks@mail.ru
Скайп 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, вероятно чревато чем-то ?

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