Разделитель триад и преобразование строки к числовому типу. #24274


#0 by jetcom
При преобразовании стрки из элемента диалога "Текст" к числовому типу, оператор Число(...) натыкается на разделитель триад (апостроф), и воспринимает только то, что было "ДО" первого разделителя, есстессно получается белиберда. Можно, конечно, натравить стандартные функции преобразования строк, выловить и удалить все апострофы...а если пользователь изменит вид разделителя? Получается слишком замороченно, оч простая идея слишком  дорогой ценой... И как в таких случаях поступали классики???
#1 by 427
иппали мозги юзерам.... или определяли текущий разделитель триад и его удаляли
#2 by NiGMa
Классики хранили число, а для отображения преобразовывали его в текст. Поскольку преобразование текста в число далеко не всегда однозначно. Возьми, к примеру Ексель: уж на что наворочено у него это место - и то нередко спотыкается.
#3 by jetcom
Наверное, дешевле обойдется поиметь значение ф-ции до его отображения...
#4 by jetcom
Не получится, т.к. разделитель появляется не при отображении, а еще на стадии вычисления и форматирования в глобальнике: РезСтрока = СокрЛ(Формат(ЧислЗнач, "Ч" + ВыводНулевого + "15.2." + РаздТриад)); Пока вышел из положения: МоеЧисло = Число(СтрЗаменить(РезСтрока, "'", "")); Интересно, если "Формат" добавляет разделитель триад, возможно этой же функцией его и убить (или отменить)? Это было бы более-менее корректно в том плане, что разделителем может быть не только апостроф.
#5 by jetcom
Здесь: МоеЧисло = Число(СтрЗаменить(РезСтрока, "апостроф", ""));  - апостроф не отобразился при обычном его написании...
#15 by Arelendil
в 8-ке с похожей проблемой столкнулся там разделителем триад является неразрывный пробел. Код = дбфМат.KM; // здесь чтение из dbf файла из поля с типом Numeric
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С