Переводим число из десятичной в любую систему счисления

11.05.10

Разработка - Универсальные функции

Иногда надо перевести число в двоичную или шестнадцатеричную систему счисления - нет ничего проще.
Кроме этого, данной функцией можно воспользоваться для компактного представления большого числа (например результат вычисления хэш функции) в виде строкового кода, когда код документа (справочника) тип строка.

Например число 6869973762479115207 (19 разрядов) в 156-ричной системе счисления будет представлен строкой "KвULq%Лzq" (9 символов)

 

// Функия переводит число переданное в параметре
// Значение в строку (либо число) в системе счисления X
// X определяется линой шаблона, представление знаков разрядов
// значение шаблона, где сивол шаблона[k] - есть представление
// Например если шаблок "01", то перевод будет осуществлен в двоичную
 // систему счисления, если "01234567", то в восьмиричную
// если "0123456789ABCDEF", то в шестнадцатиричную
// если "ЛИ", то в двоичную, где 0 представлен буквой Л, а 1 буквой И
// вариант шаблона:
// "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwzyzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя!@#$%^&*()_-=+{}[]\|/,.:;'""><"
// представит Значение в сто пятидесятишести ричной системе счисления,
// где соответствующий символ шаблона означает соответствующую цифру разряда
Функция Из_Число_В_XСчисл(Знач Значение, Шаблон)
    Результат="";
    Основание = СтрДлина(Шаблон);
    Пока Значение>0 цикл
        Остат = Значение%Основание;
        Результат1=Сред(Шаблон,Остат+1,1);
        Значение = (Значение-Остат)/Основание;
        Результат = Результат1 + Результат;
    КонецЦикла;
    Возврат Результат;
КонецФункции


См. также

Универсальные функции Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    25028    dimanich70    82    

149

Универсальные функции Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    4492    3    John_d    11    

57

Универсальные функции Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    25294    atdonya    25    

58

Универсальные функции Программист Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    6052    ke.92@mail.ru    17    

65

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    16505    YA_418728146    8    

170

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    4245    73    progmaster    10    

4

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 1C:Бухгалтерия 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    19118    180    sapervodichka    112    

136
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. arithmometr 152 12.05.10 01:11 Сейчас в теме
Если с помощью этой функции закодировать строки, а потом усуществлять поиск по этим строкам, то получим глюк. При стандартном поиске 1С не различает регисров букв.
По этому, я в подобной функции использую только большие литеры латиницы и маленькие кириллицы + некоторые непонятные символы (не набираемые с клавиатуры) воспринимаемые 1С нормально.
У меня насобиралось 146 символов.
И все таки (+)
2. kosilov 276 12.05.10 02:39 Сейчас в теме
Я как-то не подумал, что не различает маленькие и большие.
В таком случае надои спользовать только одного регистра.
Я использую просто цифробуквенный код (цифры и большие латинские буквы).
Такой код хоть читаем человеком.

4. kosilov 276 12.05.10 14:43 Сейчас в теме
(3) Да, практически идентичная реализация.
Мне только кажется, что передавать патерн в качестве параметра базы системы счисления немного гибче.
Хотя, как кому нравиться.
5. Yashazz 4804 13.05.10 14:08 Сейчас в теме
"Двуричная" - это сильно.
6. kosilov 276 14.05.10 00:56 Сейчас в теме
(5) Ну когда будут распространены квантовые компутера будем переводить в кванты. ;)
7. palamars 22.09.11 12:04 Сейчас в теме
Было бы неплохо привести функцию и обратного перевода
8. lazy 321 20.10.11 16:31 Сейчас в теме
За идею плюсик.
Взял на себя смелость написать функцию обратную представленной автором.
http://infostart.ru/public/95428/
9. Anthon 231 15.09.24 12:38 Сейчас в теме
Руки бы пообрубать за такое.
Ты написал вариант шаблона
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwz­yzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщ­ьыъэюя
в котором две буквы z. Хорошо, что в последний момент обнаружили косяк. Ты специально такую бомбу заложил?
Оставьте свое сообщение