|
v7: Передача данных в тег 1162 | ☑ | ||
---|---|---|---|---|
0
brenli
28.01.20
✎
10:07
|
Всем привет.
Пытаюсь тестить обработку для пробития чеков и при попытке передать значение в тег 1162 - вылазит ошибка. Стр = Сред(КодМаркировки, 1, 31); Объект.setParam(Объект.LIBFPTR_PARAM_MARKING_CODE, Стр); ДТО версии 10.6. ККТ-АТОЛЛ 11 Ф ФФД ККТ 1.05 Ошибка - Не поддерживается в данной версии. Неверное количество. Что не так? Код маркировки на примере обуви. Переданная последовательность не преобразована, а просто считана сканером. |
|||
1
johnnik
28.01.20
✎
10:09
|
А прошивка кассы какая?
|
|||
2
Garykom
гуру
28.01.20
✎
10:10
|
(0) >последовательность не преобразована, а просто считана сканером
Вероятно поэтому. Шо за маркировка и как там тег 1162 правильно заполнять изучить |
|||
3
Garykom
гуру
28.01.20
✎
10:10
|
(1) Теоретически все ККТ должны быть обновлены ибо электронно -> безналично
|
|||
4
brenli
28.01.20
✎
11:25
|
(1)
Код модели: 67 Название ККТ: АТОЛ 11Ф Версия прошивки: 3.0.1245 |
|||
5
brenli
28.01.20
✎
11:25
|
+(4) Аппарат тестовый и не фискализирован.
|
|||
6
Kigo_Kigo
28.01.20
✎
11:27
|
Мозги машинке шейте, то что у вас ФФД ККТ 1.05 ничего не говорит, точнее говорит что, на машинках есть режим совместимости когда ккт 1.0 работает с 1.05, но с ограниченным функционалом, и ЕМНИП нужна еще прошивка с ключем доступа 10
|
|||
7
brenli
28.01.20
✎
11:32
|
(2) В новой версии драйвера как я понял можно сразу передать строку со сканера.
Я ошибаюсь? |
|||
8
brenli
28.01.20
✎
11:32
|
(6) Спасибо
|
|||
9
brenli
28.01.20
✎
11:48
|
Пример кода который надо передать "010462005942174621lCwnRN%pO%n(U\u001D91003A\u001D928lugLSHOzL7dPJE+jJx7TQbgN0OiH/iXuc0QK4Oc9ULdwdagxVJUKVplNq7vfh8EOrjQTXa/aqLt3gwq4Be3qg=="
|
|||
10
MWWRuza
гуру
28.01.20
✎
11:54
|
(0)Ошибка - Не поддерживается в данной версии.
Неверное количество. А чего он у Вас на количество ругается? Вы туда что передаете? Для маркированной продукции, количество ВСЕГДА должно быть равно 1, тут без вариантов. |
|||
11
brenli
28.01.20
✎
12:10
|
(10) Незнаю.
Если не пытаться установить Объект.setParam(Объект.LIBFPTR_PARAM_MARKING_CODE, Стр); все пробивается без ошибок. Так же пытался сделать так GTIN = Сред(КодМаркировки,3,14); SERIAL = Сред(КодМаркировки,19,13); Объект.setParam(Объект.LLIBFPTR_PARAM_NOMENCLATURE_TYPE, Объект.LIBFPTR_NT_SHOES); Объект.setParam(Объект.LIBFPTR_PARAM_GTIN, GTIN); Объект.setParam(Объект.LIBFPTR_PARAM_SERIAL_NUMBER, SERIAL); Объект.utilFormNomenclature(); Ругается на Объект.LLIBFPTR_PARAM_NOMENCLATURE_TYPE |
|||
12
brenli
28.01.20
✎
12:11
|
Вероятно из за старой прошивки мозга кассы.
|
|||
13
brenli
28.01.20
✎
12:14
|
LIBFPTR_PARAM_MARKING_CODE - массив с данными штрихкода маркировки. По умолчанию не передается в ККТ. В этом параметре можно передать данные от сканера. ККТ их разберет в реквизит 1162 самостоятельно.
Я правильно понимаю что в этот параметр можно передать 10462005942174621lCwnRN%pO%n(U из строки кода 010462005942174621lCwnRN%pO%n(U\u001D91003A\u001D928lugLSHOzL7dPJE+jJx7TQbgN0OiH/iXuc0QK4Oc9ULdwdagxVJUKVplNq7vfh8EOrjQTXa/aqLt3gwq4Be3qg== и все должно пройти по красоте? |
|||
14
victuan1
29.01.20
✎
07:57
|
(13) 1С 7.7 не поддерживает тип данных "массив" (с т. зр. драйвера).
Выход: 1) передавать использую другой метод (а он том есть) 2) передавать используя JSON |
|||
15
brenli
29.01.20
✎
08:17
|
(14) Преобразовывать в строку hex ?
|
|||
16
victuan1
29.01.20
✎
08:20
|
(15) Решение в (11), только надо учесть общий префикс для всех товаров 444d
Вроде же у вас есть мое решение? Там это всё реализовано. |
|||
17
brenli
29.01.20
✎
08:24
|
(16) ваше решение ?
//******************************************* Функция DecToAny(Знач тЗначение, тОснование) тРезультат = ""; Пока тЗначение > 0 Цикл тРезультат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", тЗначение%тОснование + 1, 1) + тРезультат; тЗначение = Цел(тЗначение/тОснование) ; КонецЦикла; Возврат тРезультат; КонецФункции //******************************************* Функция AsciToHex(Знач тЗначение) ДлинаСтр = СтрДлина(тЗначение); тРезультат = ""; Для i=1 По ДлинаСтр Цикл ТекСимвол = Сред(тЗначение,i,1); тРезультат = тРезультат + DecToAny(КодСимв(ТекСимвол),16)+" "; КонецЦикла; Возврат тРезультат; КонецФункции //******************************************* |
|||
18
brenli
29.01.20
✎
08:28
|
Касаемо
(11) -> Если не пытаться установить Объект.setParam(Объект.LIBFPTR_PARAM_MARKING_CODE, Стр); На форуме атола сказали нужна 5 версия прошивки иначе не катит. (11) ->GTIN = Сред(КодМаркировки,3,14); ->SERIAL = Сред(КодМаркировки,19,13); ->Объект.setParam(Объект.LLIBFPTR_PARAM_NOMENCLATURE_TYPE, Объект.LIBFPTR_NT_SHOES); ->Объект.setParam(Объект.LIBFPTR_PARAM_GTIN, GTIN); ->Объект.setParam(Объект.LIBFPTR_PARAM_SERIAL_NUMBER, SERIAL); ->Объект.utilFormNomenclature(); А касаемо этого сказали до марта 2020 года можно использовать, потом не желательно Ругается на Объект.LLIBFPTR_PARAM_NOMENCLATURE_TYPE |
|||
19
brenli
29.01.20
✎
12:17
|
Для всех страждущих и заепавшихся с темой перевода в hex
//******************************************* Функция РазделитьСтрокуБайтНаГруппы(Знач тЗначение) Длина = СтрДлина(тЗначение); Пробел = " "; ВыходнаяСтрока = ""; Пока Длина>0 Цикл Перенос = Лев(тЗначение,2); Длина = Длина - 2; тЗначение=Прав(тЗначение,Длина); ВыходнаяСтрока = ВыходнаяСтрока + Перенос + Пробел; КонецЦикла; Возврат ВыходнаяСтрока; КонецФункции //******************************************* Функция ПроверкаИИсправлениеДлины(Знач тЗначение, тБайт) Если тБайт=0 Тогда Возврат тЗначение; КонецЕсли; тЗначение = СтрЗаменить(тЗначение," ",""); тБайт = тБайт * 2; // Так как в hex формате группы из 2х цифр РезультатДеления = СтрДлина(тЗначение)%тБайт; Если РезультатДеления = 0 Тогда Возврат тЗначение; КонецЕсли; КолВоНедостающихРазрядов = тБайт - РезультатДеления; СтрНулей = ""; Для i=1 По КолВоНедостающихРазрядов Цикл СтрНулей = СтрНулей + "0"; КонецЦикла; Возврат СтрНулей+тЗначение; КонецФункции //******************************************* Функция DecToAny(Знач тЗначение, тОснование) тРезультат = ""; Пока тЗначение > 0 Цикл тРезультат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", тЗначение%тОснование + 1, 1) + тРезультат; тЗначение = Цел(тЗначение/тОснование) ; КонецЦикла; Возврат тРезультат; КонецФункции //******************************************* Функция AsciToHex(Знач тЗначение) ДлинаСтр = СтрДлина(тЗначение); тРезультат = ""; Для i=1 По ДлинаСтр Цикл ТекСимвол = Сред(тЗначение,i,1); тРезультат = тРезультат + DecToAny(КодСимв(ТекСимвол),16); КонецЦикла; Возврат тРезультат; КонецФункции //******************************************* Процедура Сформировать() Сообщить(РазделитьСтрокуБайтНаГруппы(ПроверкаИИсправлениеДлины(DecToAny(Число("04620059421746"),16),6))); // Сообщить(РазделитьСтрокуБайтНаГруппы(ПроверкаИИсправлениеДлины(DecToAny("04620059421746",16),13))); // Сообщить(РазделитьСтрокуБайтНаГруппы(ПроверкаИИсправлениеДлины(AsciToHex("sgEKKPPcS25y5"),13))); // Сообщить(ПроверкаИИсправлениеДлины(AsciToHex("sgEKKPPcS25y5"),13)); КонецПроцедуры На примере обуви Для оформления GTIN в виде hex последовательности - вызывайте DecToAny(<GTIN>, <С основанием = 16>), > проверяйте четность - вызывайте > ПроверкаИИсправлениеДлины(<результат функции DecToAny>,<Число байт значения, для пример GTIN - 6 байт>) > разбить результат на группы по 2 циферки 00h 01h и т.д РазделитьСтрокуБайтНаГруппы(<результат функции ПроверкаИИсправлениеДлины>). Для оформления Serial в виде hex последовательности - вызывайте AsciToHex(<Serial>) затем - вызывайте DecToAny(<результат функции AsciToHex>, <С основанием = 16>), > проверяйте четность - вызывайте > ПроверкаИИсправлениеДлины(<результат функции DecToAny>,<Число байт значения, для пример Serial- 13 байт>) > разбить результат на группы по 2 циферки 00h 01h и т.д РазделитьСтрокуБайтНаГруппы(<результат функции ПроверкаИИсправлениеДлины>). |
|||
20
brenli
29.01.20
✎
12:19
|
Префиксы 49 0E или 44 4D или другие в зависимости от длины кода дорисовать элементарно
|
|||
21
brenli
29.01.20
✎
13:56
|
Так же всем кто хочет из строки HEX передать или установить значение тега 1162 в драйвере, юзайте метод
Объект.setParamStrHex(1162, "44 4D 04 33 B1 00 2C 32 6C 43 77 6E 52 4E 25 70 4F 25 6E 28 55") И ничего не надо мудрить |
|||
22
victuan1
29.01.20
✎
15:54
|
(21) Верно. Так и сделано в нашем решении.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |