Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 16:39

Помощь новичку. СообщениеПользователю

Автор Samouchka, 24 окт 2017, 17:05

0 Пользователей и 1 гость просматривают эту тему.

Samouchka

Здравствуйте. Помогите, пожалуйста, с заданием. Во внешней обработке обычного приложения надо создать массив, в который пользователь сам внесет любые пять чисел. В сообщении вывести максимальное и минимальное значение из этих чисел. Для ввода чисел использую реквизиты, созданные на форме внешней обработки. Для вывода Сообщений использую кнопку Выполнить. В пользовательском режиме забиваю числа, но когда нажимаю на кнопку Выполнить, выходит предупреждающее  табло  "Операции сравнения на больше-меньше  допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)." Подскажите, как исправить.

Вот код:

Процедура  ВыполнитьНажатие(Элемент)

МассивЧисел = Новый Массив(5);
Для Шаг = 0 По 4 Цикл
МассивЧисел.Добавить(Число1);
МассивЧисел.Добавить(Число2);
МассивЧисел.Добавить(Число3);
МассивЧисел.Добавить(Число4);
МассивЧисел.Добавить(Число5);
КонецЦикла;

Минимум = МассивЧисел[0];
Максимум = МассивЧисел[0];
Для Индекс = 0 По 4 Цикл     
Если МассивЧисел[Индекс] < Минимум Тогда
Минимум = МассивЧисел[Индекс];
   
ИначеЕсли МассивЧисел[Индекс] > Максимум Тогда
   Максимум = МассивЧисел[Индекс];
КонецЕсли;
    КонецЦикла;

Сообщить("Наименьшее из введенных чисел равно " + Минимум);
Сообщить("Наибольшее из введенных чисел равно " + Максимум);

КонецПроцедуры

Каримдат

Я может ошибаюсь, чему равен Индекс?
вот тут можно посмотреть по поводу вывода массива.

Samouchka

Цитата: Каримдат от 24 окт 2017, 21:12
Я может ошибаюсь, чему равен Индекс?
вот тут можно посмотреть по поводу вывода массива.

На youtube через ГенераторСлучайныхЧисел. Мне же надо самому вбивать.

Golickoff

У меня какой-то опыт в 1С уже есть, но я вообще не могу понять чего вы хотели добиться в этом коде. Продублируйте его с комментариями, описывая чего вы пытались добиться в каждой строке кода.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

AIFrame

Много лишних движений.
Цитировать"Операции сравнения на больше-меньше  допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)."
Число1, 2, 3 ... Число5 на форме все должны иметь тип значения Число.
Процедура  ВыполнитьНажатие(Элемент)   
    МассивЧисел = Новый Массив;
    Для Шаг = 0 По 4 Цикл
        МассивЧисел.Добавить(Число1);
        МассивЧисел.Добавить(Число2);
        МассивЧисел.Добавить(Число3);
        МассивЧисел.Добавить(Число4);
        МассивЧисел.Добавить(Число5);
    КонецЦикла;

А если их на форме будет 50? 50 строк напишем? А если 500? И зачем каждую итерацию заполнять массив одними и теми же числами?
СЗ = Новый СписокЗначений;
Для Каждого Элемент ИЗ ЭлементыФормы Цикл
Если ТипЗнч(Элемент) = Тип("ПолеВвода") Тогда
Если Найти(Элемент.Имя, "Число") = 1 И ТипЗнч(Элемент.Значение) = Тип("Число") Тогда
СЗ.Добавить(Элемент.Значение);
КонецЕсли;
КонецЕсли;
КонецЦикла;
СЗ.СортироватьПоЗначению(НаправлениеСортировки.Возр);
Минимум = СЗ[0];
Максимум = СЗ[СЗ.Количество()-1];
Сообщить("Наименьшее из введенных чисел равно " + Минимум);
Сообщить("Наибольшее из введенных чисел равно " + Максимум);


Короче вот.

Samouchka

Цитата: AIFrame от 25 окт 2017, 04:37Много лишних движений.

:) Да это мой минус.


ЦитироватьЧисло1, 2, 3 ... Число5 на форме все должны иметь тип значения Число.

Тип Число проставлял везде.

ЦитироватьА если их на форме будет 50? 50 строк напишем? А если 500? И зачем каждую итерацию заполнять массив одними и теми же числами?
Вот тоже об этом подумал.



Цитировать

Короче вот.
Все получилось. Спасибо. Просто сказали сделать через Массив. А СписокЗначений это получается аналог массива? Такое вот не объяснили.

dumaro

Здравствуйте. Извините. Как на форуме написать свой вопрос??? Нет кнопки "Новая тема" или что-то похожее.

AIFrame

Цитироватьсказали сделать через Массив
А ты скажи, что будешь для решения задач использовать адекватные инструменты, а не изобретать велосипеды и методы сортировки.
ЦитироватьА СписокЗначений это получается аналог массива?
Нет. Массив - это массив, array, контейнер с данными. Любыми данными. Просто 1С путает людей и называет массивом то, что по сути является List произвольного типа. А Структура - это тот же двумерный привычный массив "ключ", "значение". Такой функционал в других языках выполняет именованный dict.
СписокЗначений - это список, со значениями. Как List. Есть аналог IterItems. Это когда Для каждого А из СписокА Цикл
ТаблицаЗначений - это таблица, с колонками, строками и значениями в них. Именованный Dict внутри List. Тоже поддерживает IterItems.
Добавлено: 25 окт 2017, 10:23


Цитата: AIFrame от 25 окт 2017, 10:02
Цитироватьсказали сделать через Массив
А ты скажи, что будешь для решения задач использовать адекватные инструменты, а не изобретать велосипеды и методы сортировки.
ЦитироватьА СписокЗначений это получается аналог массива?
Нет. Массив - это массив, array, контейнер с данными. Любыми данными. Просто 1С путает людей и называет массивом то, что по сути является List произвольного типа. А Структура - это тот же двумерный привычный массив "ключ", "значение". Такой функционал в других языках выполняет именованный dict.
СписокЗначений - это список, со значениями. Как List. Есть аналог IterItems. Это когда Для каждого А из СписокА Цикл
ТаблицаЗначений - это таблица, с колонками, строками и значениями в них. Именованный Dict внутри List. Тоже поддерживает IterItems.

И суть в том, что для массива у 1С нет нативных методов обработки, а для структурированных типов, таких как СписокЗначений - есть. Как и в любом другом языке погромирования, погромист возьмет данные и засунет их в тот контейнер, который имеет готовый метод для обработки этих данных и не будет писать свой. Да, хорошо что ты умеешь сортировать Массив, пузырьковым или еще каким методом. Тренирует мозг. Но если ты будешь использовать это повсеместно, то получится, что тебе дают велосипед с педалями, а ты смотришь на него и вместо того, чтобы ехать, начинаешь делать свой из подручных средств.
Добавлено: 25 окт 2017, 10:24


У вас разметка поломалась.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск