Как получить сумму цифр числа

1. silai89 26.12.14 14:00 Сейчас в теме
Помогите.Надо При изменение одного реквизита(туда вставляется число вот такого формата 261 220 141 545),надо в другом реквизите вывести сумму чисел данного числа т.е. 2+6+1+2+2+0+1+4+1+5+4+5.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. PetroP 26.12.14 14:06 Сейчас в теме
А какие сложности? Что не получается? Какие ошибки сообщает при каком коде?
3. SPID 26.12.14 14:06 Сейчас в теме
А в чем проблема то? В Событии при изменении преобразовывайте число в строку и посимвольно обходите эту строку преобразовывая каждый символ в число и складывайте.
4. Bienko 213 26.12.14 14:10 Сейчас в теме
Нечего сложного нет. Преобразуйте в строку (если это не строка), потом переберите все элементы строки. Что-то типа
Длина = СтрДлина(СтрЗаменить (ВашаСтрока, " ", ""));
Сч = 1;
Сумма=0;
Пока Сч<=Длина Цикл
     Сумма = Сумма+Число(Сред(Строка, Сч, 1));
     Сч = Сч+1;
КонецЦикла;

Где ВашаСтрока это 261 220 141 545 в формате строки, если число, то преобразовать через Строка()
5. SPID 26.12.14 14:13 Сейчас в теме
(4) Bienko,
Длина = СтрДлина(СтрЗаменить (ВашаСтрока, " ", ""));


Тут скорее всего не прокатит, так как там не пробел. а неразрывный пробел или еще что то, лучше использовать функцию Формат() с форматной строкой без вывода разделителя групп.
6. silai89 26.12.14 14:36 Сейчас в теме
Процедура ВСТАВИТЬПриИзменении(Элемент)
// данные это первый реквизит куда вводится число
// сумма это второй реквизит куда выводится СУММА чисел
Данные = ЭтаФорма.ТекущийЭлемент.ТекущиеДанные;
Первое = Лев(Данные, 1);
Второе = Лев(Данные, 2);
// итд
итог = первое+второе;
ЭтаФорма.Элементы.СУММА= итог;

КонецПроцедуры
как то так хотел сделать
8. Sevens 6 26.12.14 14:46 Сейчас в теме
(6) И сколько раз ты будешь использовать лев, сред или прав?

Делай как предложили:
1. через формат приводи своё число к строке без пробелов.
2. Получи длину строки и проходи циклом
3. В цикле получай текущий символ приводи его к числу и прибавляй к сумме.
Профит
Всё как в (4) только вместо
Длина = СтрДлина(СтрЗаменить (ВашаСтрока, " ", ""));

Надо
ВашеЧислоВВидеСтроки = Формат(ВашеЧисло, "бла бла бла не помню что там надо");
Длина=стрДлина(ВашеЧислоВВидеСтроки);
10. alivan 26.12.14 15:03 Сейчас в теме
(8) Sevens,
Надо
ВашеЧислоВВидеСтроки = Формат(ВашеЧисло, "бла бла бла не помню что там надо");

я бы предложил
Формат(ВашеЧисло, "ЧГ=0");


а вообще Sevens прав(а)

ЧислоИзСтроки = 0;
Для символ=1 из СтрДлина(ВашеЧисло) Цикл
          ЧислоИзСтроки = ЧислоИзСтроки + Число(Сред(ВашеЧисло,Символ,1));
      КонецЦИкла;
7. silai89 26.12.14 14:44 Сейчас в теме
но не получается.число 261 220 141 545 всегда такого формата будет вводится всегда 12 цифр
9. andpal 26.12.14 14:56 Сейчас в теме
Целую часть числа в цикле делить на 10, до 0, суммируя остаток.
Сумма = 0;
Пока Число > 0 Цикл
	Частное = Число/10;
	Число = Цел(Частное);
	Сумма = Сумма+(Частное-Число)*10;
КонецЦикла;
11. caponid 26.12.14 15:11 Сейчас в теме
Если это числа зачем парится со строками?
	Рез = 0;
	Пока Ист > 0 Цикл
		Рез = Рез + Ист % 10;
		Ист = Цел(Ист/10);		
	КонецЦикла;	


(9) andpal, гг, надо же)) не видел вашего сообщения
12. alivan 26.12.14 15:15 Сейчас в теме
(11) caponid, проблема в пробелах
13. caponid 26.12.14 15:18 Сейчас в теме
исходные данные - это строка или число? - если число то пробелы только на экране видны..
14. alivan 26.12.14 15:20 Сейчас в теме
(13) caponid, согласен. невнимательно посмотрел.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот