Однажды потребовалось из шестнадцатеричной строки вида "0000FF6A9B4" получить число в десятичной системе счисления. Поиск привел к http://avprog.ru/public/70053/ но в этой статье мы видим обратный перевод из десятичной в другую систему. Пришлось писать собственными лапами. В прилагающейся обработке для управляемых форм 8.2. лежит пример перевода. Если изменить шаблон с "0123456789ABCDEF" на "0123456789" - перевод будет происходить из десятичной <(^.^)> на "01234567" - из восьмеричной системы счисления, "01" - двоичной.
Для тех, кому лень качать обработку вот основной код:
&НаКлиенте
Функция ИзХСчислВЧисло(аф,Шаблон) // Шаблон = "0123456789ABCDEF"
аф = ВРег(аф); // на всякий случай.
ДлинаШаблона = СтрДлина(Шаблон);
ДлинаСтроки = СтрДлина(аф);
ТекСимвол = ДлинаСтроки;
Результат = 0;
Пока ТекСимвол > 0 Цикл
ОбработкаПрерыванияПользователя();
ОбрабатываемыйСимвол = Сред(аф, ТекСимвол,1);
ПозицияВШаблоне = Найти(Шаблон,ОбрабатываемыйСимвол)-1;
Результат = Результат + (ПозицияВШаблоне * pow(ДлинаШаблона,ДлинаСтроки-ТекСимвол));
ТекСимвол = ТекСимвол - 1;
КонецЦикла;
Возврат(Результат);
КонецФункции
UPD: Пользователь VUN предложил более компактный метод решения той же проблемы, без использования функции возведения в степень:
&НаКлиенте
Функция ИзХСчислВЧисло(аф,Шаблон)
аф = ВРег(аф); // на всякий случай.
ДлинаШаблона = СтрДлина(Шаблон);
ДлинаСтроки = СтрДлина(аф);
Результат = 0;
Для ТекСимвол = 1 По ДлинаСтроки Цикл
ОбрабатываемыйСимвол = Сред(аф, ТекСимвол,1);
ПозицияВШаблоне = Найти(Шаблон,ОбрабатываемыйСимвол)-1;
Результат = Результат * ДлинаШаблона + ПозицияВШаблоне;
КонецЦикла;
Возврат(Результат);
КонецФункции
Файлы обработки:
- Perevodim_chislo_iz_lyuboy_sistemy_schisleniya_v_desyatichnuyu.epf Для скачивания нужна регистрация
В этой группе 1С
- Получение даты и времени создания объекта ИБ по уникальному идентификатору (GUID)
- Виртуальная клавиатура поиска по таблице 1Сv8.2
- Функция транслит в 1с
- Отчет по подпискам на события
- Отчет по товарам на складах с Изображениями номенклатуры (пример, как вывести картинку СКД)
- Изменяем заголовок 1С. Для удобства (разработки) или защиты "от дурака" =)
- Загрузка данных из MXL
- Проверка баз 1С 7.7 перед переходом на 1С 8 БП 2.0