Имя: Пароль:
1C
 
Строковая длина числа
0 Обфускация
 
01.08.18
13:49
У меня есть функция
знакидо=стрзаменить(строка(цел(число(элементы.ПоказанияЭлектрическойЭнергии.ТекущиеДанные.ВидЭнергииАктивнаяПрием)))," ","");

если число "222", то стоковая длина значения этой функции = 3
но если число "2222", то строковая длина 5, поскольку число преобразуется в "2 222"

как правильно посчитать?
1 Волшебник
 
01.08.18
13:51
2 Cyberhawk
 
01.08.18
13:52
Отформатируй число
3 Cyberhawk
 
01.08.18
13:52
ЧГ=0
4 rudnitskij
 
01.08.18
13:52
можно еще проверять код символа в числовой строке, если в пределах от 48 до 57 - значит символ является числом, и искомая длина есть число таких символов.
Но это для совсем уж извращенцев) (1) лучше конечно
5 Ненавижу 1С
 
гуру
01.08.18
13:54
просто интересно какой тип имеет значение элементы.ПоказанияЭлектрическойЭнергии.ТекущиеДанные.ВидЭнергииАктивнаяПрием
6 novichok79
 
01.08.18
13:58
СтрДлина(Формат(ТвоеЧисло, "ЧН=;ЧГ=0"))
7 novichok79
 
01.08.18
13:59
а вот это

знакидо=стрзаменить(строка(цел(число(элементы.ПоказанияЭлектрическойЭнергии.ТекущиеДанные.ВидЭнергииАктивнаяПрием)))," ","");

та еще дичь.
8 Малыш Джон
 
01.08.18
14:03
(7) да ладно, норм)
Я бы ещё добавил:
СтрЗаменить( вотэтовсе , Символ(160),"")
и вообще - полный набор будет.
9 Обфускация
 
01.08.18
14:03
Про целое понятно.
У меня бывает 0,222 и длина должна быть 3, а не 5. Как это рассчитать?
10 Малыш Джон
 
01.08.18
14:04
тогда еще
?(Лев(вотэтовсе, 2) = "0,", Сред(вотэтовсе,3), вотэтовсе)
11 Лефмихалыч
 
01.08.18
14:05
(0) десятичный логарифм от числа плюс один
12 Михаил Козлов
 
01.08.18
14:07
(11) Для целых.
13 Малыш Джон
 
01.08.18
14:12
СтрДлина(СокрЛ(СтрЗаменить(Формат(НужноеЧисло,"ЧГ=0"),"0,","  ")))
14 1CIlya
 
01.08.18
14:17
(11) +1 Логарифм, и не мучайтесь.
15 novichok79
 
01.08.18
14:17
ЧислоСтрокой = Формат(Объект.Число, "ЧРД=,; ЧН=; ЧГ=0");
    
    Пока Лев(ЧислоСтрокой, 1) = "0"
        Или Лев(ЧислоСтрокой, 1) = "," Цикл
        
        ЭтоРазделитель = (Лев(ЧислоСтрокой, 1) = ",");

        ЧислоСтрокой = Сред(ЧислоСтрокой, 2);
        
        Если ЭтоРазделитель Тогда Прервать;
        КонецЕсли;

    КонецЦикла;
    
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
    СтрДлина(ЧислоСтрокой));
16 novichok79
 
01.08.18
14:18
с отрицательными не разобрались еще
17 s03
 
01.08.18
14:19
(16) предлагаю разбираться последовательно, сначала с целыми отрицательными, а затем с дробными
18 singlych
 
01.08.18
14:45
СтрДлина(СтрЗаменить(Формат(ТутЧисло * pow(10, (ТутЧисло < 1 И ТутЧисло > -1)),  "ЧРД=-; ЧРГ=-; ЧН=-"), "-", ""))
19 novichok79
 
01.08.18
15:05
(17) я думаю что тредстартёр сам разберется уже. примеров ей накидали.
20 Лефмихалыч
 
01.08.18
17:34
(12) тоже мне проблема
21 Ненавижу 1С
 
гуру
02.08.18
08:53
Справедливости ради Цел(Log10(10))+1
22 МихаилМ
 
02.08.18
09:11
+(21)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс