Odin | База знаний 1С

Как заполнить масси...
 

Как заполнить массив числовыми значениями через ПолеВвода с разделителем?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

Как заполнить массив с клавиатуры через ПолеВвода с разделителем символов так, чтобы в массив попадали только числовые значения



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Для заполнения массива с клавиатуры через `ПолеВвода` с разделителем символов и фильтрацией только числовых значений, можно использовать следующий код на языке 1С:

1C
Процедура ЗаполнитьМассив()
    // Создаем поле ввода
    ПолеВвода = Новый ПолеВвода;
    ПолеВвода.Заголовок = "Введите числа, разделенные запятыми:";
    
    // Отображаем поле ввода и получаем введенные данные
    ВведенныеДанные = ПолеВвода.Получить();
    
    // Разделяем строку по запятой
    МассивСтрок = СтрРазделить(ВведенныеДанные, ",");
    
    // Создаем массив для хранения чисел
    МассивЧисел = Новый Массив;
    
    // Проходим по всем элементам массива строк
    Для Каждого Строка Из МассивСтрок Цикл
        // Убираем пробелы и проверяем, является ли строка числом
        Число = СтрОчистить(Строка);
        Если ЭтоЧисло(Число) Тогда
            МассивЧисел.Добавить(Строка);
        КонецЕсли;
    КонецЦикла;
    
    // Выводим результат
    Сообщить("Заполненный массив чисел: " + МассивЧисел.ПолучитьСтроку(", "));
КонецПроцедуры

Функция ЭтоЧисло(Строка)
    // Проверяем, является ли строка числом
    Попытка
        Число = СтрToNum(Строка);
        Возврат Истина;
    Исключение
        Возврат Ложь;
    КонецПопытки;
КонецФункции

В этом коде:
1. Создается поле ввода для ввода данных.
2. Введенные данные разделяются по запятой.
3. Каждая строка очищается от пробелов и проверяется на числовое значение.
4. Если строка является числом, она добавляется в массив чисел.
5. В конце выводится заполненный массив чисел.

Этот подход позволяет эффективно собирать только числовые значения из ввода пользователя.



   
ОтветитьЦитата