Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Запись тега 1162 из 1с для табачной продукции

Запись тега 1162 из 1с для табачной продукции
Я
   demONx6
 
06.05.19 - 02:08
Всем привет.

Собственно суть вопроса в теме. Есть необходимость заполнить тег 1162 из 1С.

Нашел "Алгоритм записи тега 1162", но как-то там все не совсем понятно.
https://xn--80ajghhoc2aj1c8b.xn--p1ai/upload/iblock/a0f/a0f7fa37208f3118db26c00fc9bb2b5b.pdf

Например в примере:
"1. Выделяем GTIN 14 символов: 00000046210654 и преобразуем в бинарный вид: 00 00 02 C1 1E 5E"
00 00 02 C1 1E 5E - это шестнадцатиричное представление числа 46210654, с добавленными нулями вначале. При чем тут Бинарный вид?

Далее:
"2. Выделяем Serial 7 символов: ADgopSq и преобразуем в строковое значение: 41 44
67 6f 70 53 71" Тут последнее сочетание цифр вообще не понятно что что...

Ну и в конце:
"3. Складываем 00 05 + 00 00 02 C1 1E 5E + 41 44 67 6f 70 53 71 и кодируем в BASE64:
AAUAAALBHl5BRGdvcFNx." Если допустим получим второе и третье значение, то первое "00 05" - это что и как?
Если 05 - это обозначение табачки, то 00 - они фиксированы? Или эту комбинацию надо целиком формировать?

Гугл конечно делится информацией, но ее недостаточно для решения задачи. А может конечно я ищу так. Просьба натолкнуть на правильные мыли.
 
 
   SadrArt
 
1 - 06.05.19 - 02:23
(0)  >Если допустим получим второе и третье значение, то первое "00 05" - это что и как?
Если 05 - это обозначение табачки, то 00 - они фиксированы?

В алгоритме четко же написано:
Код типа маркировки
Байты [1:2] (2 байта) - Код типа маркировки
Постоянное значение: 00 05

Что тут не понятно?
   Garykom
 
2 - 06.05.19 - 02:23
   Garykom
 
3 - 06.05.19 - 02:25
(0) Ты что сканер с марки выдает напиши, разделим что куда засовывать
   demONx6
 
4 - 06.05.19 - 03:29
(1) > Что тут не понятно?
Да, действительно. Не обратил на это внимание. Спасибо.

(3) Мне бы хоть с примером разобраться, что и как кодировать. Возьмем тот из мануала "(01)00000046210654(21)ADgopSq(91)12(92)1234v67i"
Если идти от конца, то в Base64Строка в качестве параметра мне нужно засунуть значение типа ДвоичныеДанные, чтобы получить нужный результат. Следовательно все три составляющие нужно привести к типу ДД, затем конкатенировать и преобразовать. Так?

Serial (ADgopSq) я привел к виду двоичных данных. Воспользовался следующим методом:
ПотокSerial = Новый ПотокВПамяти; 
Текст = Новый ЗаписьТекста(ПотокSerial, КодировкаТекста.UTF8);
Текст.Записать("ADgopSq");// помещаем данные, тип значения: Строка

Текст.Закрыть();
Serial_ДвоичныеДанные = ПотокSerial.ЗакрытьИПолучитьДвоичныеДанные();// получаем 41 44 67 6f 70 53 71 в типе значений ДвоичныеДанные


Этот способ для 00000046210654 не подходит. Используя вышеописанный метод пытался записать это значение в виде Строки("00000046210654"), Числа(46210654), Формировал шестнадцатиричный вид в текстовом виде("000002C11E5E"), преобразовывал число в бинарную строку("10110000010001111001011110"). Все четыре раза итоговое значение было отличным от "00 00 02 C1 1E 5E"
   Garykom
 
5 - 06.05.19 - 03:41
(4)
&НаКлиенте
Функция DecToAny(Знач тЗначение, тОснование)
   тРезультат = "";
 
   Пока тЗначение > 0 Цикл
      тРезультат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", тЗначение%тОснование + 1, 1) + тРезультат;
      тЗначение = Цел(тЗначение/тОснование) ;
   КонецЦикла;
 
   Возврат тРезультат;
КонецФункции


Затем банально
Сообщить(DecToAny(Число("00000046210654"),16));
   Garykom
 
6 - 06.05.19 - 03:42
   Garykom
 
7 - 06.05.19 - 03:43
Но учитывай предельную разрядность чисел в 1С, если сильно большие будут то придется свою для больших арифметику писать ))
Или найти готовую для 1С.
   Garykom
 
8 - 06.05.19 - 03:48
Просто кто то кто писал мануал "Алгоритм записи тега 1162" путает бинарный формат (имхо из 0 и 1) и HEX (шестнадцатеричную запись в виде строки)
   demONx6
 
9 - 06.05.19 - 03:57
(8) вот-вот. И мне так кажется.
   demONx6
 
10 - 06.05.19 - 07:11
(5) DecToAny(Число("00000046210654"),16) делает шестнадцатеричное представление числа в текстовом типе. А как получить это же значение но в типе значений "Двоичные данные?".
 
 Рекламное место пустует
   demONx6
 
11 - 06.05.19 - 07:13
Чтобы вот так было:
http://pastexen.com/i/hdPnKxipiH.jpg
   demONx6
 
12 - 06.05.19 - 07:20
(10) Аналогичный вопрос к тому, как получить "00 05" в виде двоичных данных.
   Garykom
 
13 - 06.05.19 - 11:06
(12) Наймите программиста

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