Цитата(SeverinPasha @ 23.10.18, 13:29)
Если учесть, если на карте имеется номер 0000255740 (десятеричный) и 039,01335 (некий ТЕКСТОВЫЙ код).
Помогите связать результат вывода с данными которые по идее должны выводиться(написаны на карте)
Супер! Я ждал этого от Вас!
Алгоритм был найден на форуме разработчиков ПО работы с RFID-метками.
Процедуры конвертации чисел между системами счислений найдены на Мисте или Инфостарте.
Процедура КнопкаСчитатьRFIDНажатие(Элемент)
СчитанноеЗначение = "";
Результат = ВвестиСтроку(СчитанноеЗначение, "Считайте данные карточки RFID", 10, Ложь);
Если НЕ Результат Тогда
Возврат;
КонецЕсли;
// Преобразование 10-ричного серийного номера dec1 (0000255740) в 10-ричные данные (039,01335) dec2, хранящиеся в памяти карточки.
// Алгоритм преобразования:
// dec1 преобразовать в hex
// Старшие 4 байта hex составляют целую часть dec2,
// младшие 4 байта hex составляют дробную часть dec2.
ДанныеHEX = Прав("00000000" + ОбщегоНазначения.Из_10_В_Любую(СчитанноеЗначение, 16), 8); // с лидирующими нолями
ЦелаяЧасть = Прав("000" + ОбщегоНазначения.Из_Любой_В_10(Сред(ДанныеHEX, 1, 4), 16), 3); // старшие 4 байта в 10-ричное
ДробнаяЧасть = Прав("00000" + Формат(ОбщегоНазначения.Из_Любой_В_10(Сред(ДанныеHEX, 5, 4), 16), "ЧГ=0"), 5); // младшие 4 байта в дробную часть
НомерДес1 = СчитанноеЗначение;
НомерДес2 = "" + ЦелаяЧасть + "," + ДробнаяЧасть;
КонецПроцедуры
процедуры из модуля ОбщегоНазначения:
Функция Из_10_В_Любую(Знач Значение=0, Нотация=36) Экспорт
Если Нотация <= 0 Тогда
Возврат ""
КонецЕсли;
Значение = Число(Значение);
Если Значение <= 0 Тогда
Возврат "0"
КонецЕсли;
Значение = Цел(Значение);
Результат = "";
Пока Значение>0 Цикл
Результат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", Значение%Нотация + 1, 1) + Результат;
Значение = Цел(Значение/Нотация);
КонецЦикла;
Возврат Результат;
КонецФункции
Функция Из_Любой_В_10(Знач Значение="0", Нотация=36) Экспорт
Если Нотация <= 0 Тогда
Возврат 0
КонецЕсли;
Значение = СокрЛП(Значение);
Если Значение = "0" Тогда
Возврат 0
КонецЕсли;
Результат = 0;
Длина = СтрДлина(Значение);
Для Х = 1 По Длина Цикл
М = 1;
Для У = 1 По Длина-Х Цикл
М = М*Нотация
КонецЦикла;
Результат = Результат + (Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", Сред(Значение, Х, 1)) - 1)*М;
КонецЦикла;
Возврат Окр(Результат);
КонецФункции