Помогите с решением, не совсем понимаю, как возможно реализовать данный код.
Необходимо найти сумму всех цифр целочисленного массива. Например
---
```1c
    &НаКлиенте
    Процедура Команда1(Команда)

    Данные = СтрРазделить(Реквизит1, " ", Ложь);

    Для Инд = 0 По Данные.Количество() - 1 Цикл
    Попытка
    Данные[Инд] = Число(Данные[Инд]);
    Исключение
    Данные[Инд] = 0;
    КонецПопытки
    КонецЦикла;

    // Тут уже имеем массив чисел

    ЧислаСтрокой = СтрСоединить(Данные);

    Результат = 0;

    Для Инд = 1 По СтрДлина(ЧислаСтрокой) Цикл
    Попытка
    Результат = Результат + Число(Сред(ЧислаСтрокой, Инд, 1));
    Исключение
    КонецПопытки
    КонецЦикла;

    Сообщить(Результат);

    КонецПроцедуры
```
---
сделать можно по-разному
Допустим, реквизит с типом строка называется "РеквизитЧисла", убираем пробелы, остается слитная строка с цифрами, а дальше каждый символ преобразуется в число и прибавляется в итоговый счётчик "СуммаЦифр"

```1c
    СтрокаБезПробелов = СтрЗаменить(РеквизитЧисла, " ", ");
    ДлинаСтроки = СтрДлина(СтрокаБезПробелов );
    СуммаЦифр = 0;
    Для Сч = 1 По ДлинаСтроки Цикл
    Символ = Сред(РеквизитЧисла, Сч, 1);
    СуммаЦифр = СуммаЦифр + Число(Символ);
    КонецЦикла;
    Сообщить(СуммаЦифр );
```

будет работать, если не вводить другие символы, не указанные в задаче.
---
Показать

я так делал, а как сделать чтобы именно работала с любыми вводимыми символами?
---
Показать что это? предоставьте код который сделан
собственно в условии было где разделителем будет символ пробела. выше код подходит для этого..
если хотите более универсальный то в цикле надо проверить является ли символ числом, как-то так

```1c
    Если Символ >="0" И Символ <="9" Тогда
    СуммаЦифр = СуммаЦифр + Число(Символ);
    КонецЕсли;
```
---
Благодарю
---
Мне одному не понятно, при чем здесь вообще массивы?
---
```1c
    &НаКлиенте
    Процедура Команда1(Команда)

    Данные = СтрРазделить(Реквизит1, " ", Ложь);

    Для Инд = 0 По Данные.Количество() - 1 Цикл
    Попытка
    Данные[Инд] = Число(Данные[Инд]);
    Исключение
    Данные[Инд] = 0;
    КонецПопытки
    КонецЦикла;

    // Тут уже имеем массив чисел

    ЧислаСтрокой = СтрСоединить(Данные);

    Результат = 0;

    Для Инд = 1 По СтрДлина(ЧислаСтрокой) Цикл
    Попытка
    Результат = Результат + Число(Сред(ЧислаСтрокой, Инд, 1));
    Исключение
    КонецПопытки
    КонецЦикла;

    Сообщить(Результат);

    КонецПроцедуры
```
---
https://program1s.com/massivi/
---
Предложу самое странное, и в тоже время, на мой взгляд, самое красивое решение:

```1c
    Массив = Новый Массив;
    Массив.Добавить("35мм");
    Массив.Добавить(1178.5);

    // Начало функции
    Строка = СтрСоединить(Массив);

    // Первый вариант
    Сумма=0;
    Для Цифра=1 По 9 Цикл
    Сумма = Сумма+Цифра*(СтрДлина(Строка)-СтрДлина(СтрЗаменить(Строка,Цифра,")));
    КонецЦикла;
    Сообщить(Сумма);

    //Другой, но очень похожий вариант:
    Сумма=0;
    Для Цифра=1 По 9 Цикл
    Сумма = Сумма+Цифра*СтрРазделить(Строка,Цифра,Истина).ВГраница();
    КонецЦикла;
    Сообщить(Сумма);
```
Как можно догадаться из кода, я понял, что на входе массив чисел, и/или строк с числами,
на выходе сумма всех цифр.

PPS возможно, первая будет быстрее, если сохранять строку с удалёнными символами для следующей итерации.
---
есть же функция СтрЧислоВхождений(), что-то забыл я про неё...
Вот самый правильный вариант:

```1c
    Массив = Новый Массив;
    Массив.Добавить("35мм");
    Массив.Добавить(1178.5);
    Строка = СтрСоединить(Массив);

    Сумма=0;
    Для Цифра=1 По 9 Цикл
    Сумма = Сумма+Цифра*СтрЧислоВхождений(Строка,Цифра);
    КонецЦикла;
    Сообщить(Сумма);
```