Имя: Пароль:
1C
1С v8
Обработка не считает более 3х символов :(
0 corbeau
 
02.07.13
11:04
ДлинаСтроки = СтрДлина(Число1);
   Сумма = 0;
   Для Шаг = 1 По ДлинаСтроки Цикл
       БуферСимволовСтроки = Число(Прав(Лев(Число1,Шаг),1));
       Сумма = Сумма + БуферСимволовСтроки;
   КонецЦикла;

При вводе более трех цифр вылетает следующее: {Форма.Форма.Форма(59)}: Преобразование значения к типу Число не может быть выполнено
       БуферСимволовСтроки = Число(Прав(Лев(Число1,Шаг),1));
1 corbeau
 
02.07.13
11:05
Все это во внешней обработке. Если кто-то знает как решить проблему, помогите плз...
2 Лодырь
 
02.07.13
11:07
Число1 в студию
3 corbeau
 
02.07.13
11:07
1111111
4 ale-sarin
 
02.07.13
11:07
Потому что разделитель разрядов.
5 drcrasher
 
02.07.13
11:08
кто-нибудь, переведите мне вот это:
БуферСимволовСтроки = Число(Прав(Лев(Число1,Шаг),1));
6 ale-sarin
 
02.07.13
11:08
(3) А теперь в отладчике проверь Стрдлина(1111111)
7 Alex375
 
02.07.13
11:08
через "Формат" получи строку представления числа и работай с ней.
8 ale-sarin
 
02.07.13
11:09
(5) Автор не знает про Сред()
9 zak555
 
02.07.13
11:09
Для Шаг = 1 По ДлинаСтроки Цикл
  что = Сред(Число1, Шаг, 1);
  Если Найти("0123456789",  что) > 0 Тогда
     Сумма = Сумма +  Число(что);
  конецЕСли;
КонецЦикла;
10 Лодырь
 
02.07.13
11:09
(5)Это такая кривая реализация функции Сред(Число1,Шаг,1)
11 Lama12
 
02.07.13
11:09
(4) +1
12 Maxus43
 
02.07.13
11:09
ДлинаСтроки = СтрДлина(СтрЗаменить(Строка(Число1), Символы.НПП, ""))
13 corbeau
 
02.07.13
11:10
По-моему да...спасибо большое
14 zak555
 
02.07.13
11:10
(12) не учёл буквы
15 Fragster
 
гуру
02.07.13
11:10
(12) с какой-нибудь французской локалью работать не будет
16 Aleks73
 
02.07.13
11:10
(12)+1
отладчик спасет отца русской демократии (С)
17 ale-sarin
 
02.07.13
11:12
(12) Тогда уж Стрдлина(Формат(Число, "ЧГ="))
18 Maxus43
 
02.07.13
11:18
(14) какие буквы в числе?
(15) французы они такие французы...
(17) юзаю символы НПП обычно, по привычке...
19 corbeau
 
02.07.13
11:19
ДлинаСтроки = СтрДлина(Число1);
   Сумма = 0;
   Для Шаг = 1 По ДлинаСтроки Цикл
       БуферСимволовСтроки = Сред(Число1,Шаг,1);
       //БуферСимволовСтроки = Число(Прав(Лев(Число1,Шаг),1));
       Сумма = Сумма + Число(БуферСимволовСтроки);
   КонецЦикла;

Ошибка: Та же самая.
20 corbeau
 
02.07.13
11:19
(4) - думаю дело в разделителе
21 ДенисЧ
 
02.07.13
11:19
(19) ты прав. Ошибка в ДНК...
22 Maxus43
 
02.07.13
11:19
(19) ты читал вобще? (12)(17)?
23 zak555
 
02.07.13
11:20
(19) сравни с (9)
24 ale-sarin
 
02.07.13
11:20
(19) дааа. А сути-то парень не уловил.
25 zak555
 
02.07.13
11:20
(18)

1.8е
26 exwill
 
02.07.13
11:23
(19) У тебя 4(четвертый) символ - ДОЛБАНЫЙ ПРОБЕЛ.
27 Maxus43
 
02.07.13
11:23
(25) ты реально думаешь что у автора это есть? Это в типовых не предусмотрено, напиши петицию на селезнёвку
28 zak555
 
02.07.13
11:27
(27) это число 18
29 drcrasher
 
02.07.13
11:28
(8)(10) спасибо.
(0) суть задачи - посчитать сумму цифр в строке?
30 corbeau
 
02.07.13
11:29
Замена1 = СтрЗаменить(Строка(Число1), Символы.НПП, "");
   ДлинаСтроки = СтрДлина(Замена1);
   Сумма = 0;
   Для Шаг = 1 По ДлинаСтроки Цикл
       БуферСимволовСтроки = Сред(Замена1,Шаг,1);
       Сумма = Сумма + БуферСимволовСтроки;
   КонецЦикла;
   Предупреждение("Сумма = " + Сумма);
31 corbeau
 
02.07.13
11:29
Получилось, спасибо большое!
32 zak555
 
02.07.13
11:30
(30) ты код из (9) смотрел ?
33 drcrasher
 
02.07.13
11:30
(30) открой СП и ознакомься с Формат()
34 drcrasher
 
02.07.13
11:31
(32) не мешай, пусть учится.
35 zak555
 
02.07.13
11:35
(34) в ветке не было универсального решения
36 zak555
 
02.07.13
11:46
функция суммаРазрядов(Чис НатуральноеЧисло)
  Результат = 0;  
  пока НатуральноеЧисло <> 0 цикл
       Результат = Результат + НатуральноеЧисло %10;
       НатуральноеЧисло = Цел(НатуральноеЧисло /10);
  конецЦикла;
  возврат результат + НатуральноеЧисло %10;
конецФункции
37 corbeau
 
02.07.13
11:47
Все отлично объяснили) Все заработало. Пасиб