База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как преобразовать строку в число без функции Число() в 1С? › Ответ в теме: Как преобразовать строку в число без функции Число() в 1С?
Если нельзя использовать функцию Число(), то можно сделать преобразование строки в число вручную, например, через разбор символов и вычисление значения.
Пример кода 1С (BSL), который преобразует строку с целым числом в число и прибавляет 5:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Функция СтрокаВЧисло(Строка) Результат = 0; Знак = 1; Позиция = 1; Если Лев(Строка,1) = "-" Тогда Знак = -1; Позиция = 2; КонецЕсли; Для i = Позиция По СтрДлина(Строка) Цикл Символ = Сред(Строка, i, 1); Если Символ < "0" Или Символ > "9" Тогда // Если встретился нецифровой символ, прерываем или возвращаем 0 Возврат 0; КонецЕсли; Цифра = Символ - "0"; // В 1С так не работает, нужно через код символа // В 1С нет прямого вычитания символов, делаем так: Цифра = Найти("0123456789", Символ) - 1; Результат = Результат * 10 + Цифра; КонецЦикла; Возврат Результат * Знак; КонецФункции // Использование ИсходнаяСтрока = "123"; ЧислоРезультат = СтрокаВЧисло(ИсходнаяСтрока) + 5; Сообщить(ЧислоРезультат); |
Объяснение:
— Функция СтрокаВЧисло вручную разбирает строку посимвольно.
— Проверяет знак (минус).
— Для каждого символа проверяет, что это цифра.
— Преобразует символ в цифру через позицию в строке «0123456789».
— Формирует число.
— Возвращает число с учётом знака.
— После этого прибавляем 5 и выводим.
Так вы обходите запрет на использование функции Число().
Если нужна поддержка дробных чисел — задача усложняется, но для целых чисел этот способ работает.
Рекомендую посмотреть примеры работы со строками и символами в 1С, например здесь:
https://helpf.pro/faq/view/268.html (функция проверки числа и работа с символами)