|
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 и тд, в чем ошибка? |
|||
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
|
||||
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, вероятно чревато чем-то ? На чеке все как положено, в Честном Знаке тоже норм... Продали и потом вернули. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |