1С преобразование массива или списка

1. G_117874606564250923862 21.02.23 15:24 Сейчас в теме
Задание - При нажатии на кнопку числа сортируются в порядке возрастания.
Проблема в том что Он сортирует слова не числа. Что делать?
Процедура Сортировать(Команда) 
	Массив = СтрРазделить(Числа,",");
	Список = Новый СписокЗначений;
	Список.ЗагрузитьЗначения(Массив);
	Список.СортироватьПоЗначению(НаправлениеСортировки.Возр);
	Сообщить(Список);
КонецПроцедуры
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
9. Zevzm 21.02.23 16:12 Сейчас в теме
Можно и на клиенте сортировать:
&НаКлиенте
Процедура Сортировать(Команда) 
    Массив = СтрРазделить(Числа,",");
    СЗ = Новый СписокЗначений;
    Для Каждого ЭлементМассива Из Массив Цикл
           СЗ.Добавить(Число(ЭлементМассива ));
    КонецЦикла;
    СЗ.Сортировать();
КонецПроцедуры
Показать
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
11. DBV 21.02.23 16:18 Сейчас в теме
(1)
&НаКлиенте
Процедура Сортировать(Команда) 
    Массив = СтрРазделить(Числа,",", Ложь); 
	Список = Новый СписокЗначений;
	Для Каждого ЭлементМассива Из Массив Цикл
		ЗначениеЧислом = СтрокаВЧисло(ЭлементМассива);
		Список.Добавить(ЗначениеЧислом); 
	КонецЦикла;
	Список.СортироватьПоЗначению();
	Сообщить(Список);
КонецПроцедуры

// Функция из БСП. Не вызывает исключений, судя по описанию
&НаКлиенте
Функция СтрокаВЧисло(Знач Значение) Экспорт
	
	Значение  = СтрЗаменить(Значение, " ", "");
	Если СтрНачинаетсяС(Значение, "(") Тогда
		Значение = СтрЗаменить(Значение, "(", "-");
		Значение = СтрЗаменить(Значение, ")", "");
	КонецЕсли;
	
	СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
	Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
		Возврат 0;
	КонецЕсли;
	
	ТипЧисло  = Новый ОписаниеТипов("Число");
	Результат = ТипЧисло.ПривестиЗначение(Значение);
	
	Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, Неопределено);
	
КонецФункции
Показать
2. user5300 968 21.02.23 15:27 Сейчас в теме
Массив = СтрРазделить(Числа,",");

Таб = Новый ТаблицаЗначений;
Таб.Колонки.Добавить("Числа");

Таб.ЗагрузитьКолонку(Массив , "Числа");
Таб.Сортировать("Числа");
	   
Массив = Таб.ВыгрузитьКолонку("Числа");
Показать
3. G_117874606564250923862 21.02.23 15:49 Сейчас в теме
(2) Не работает :
Тип не определен (ТаблицаЗначений)
Таблица = Новый <<?>>ТаблицаЗначений; (Проверка: Тонкий клиент)
Пытался поискать почему, пишут нельзя создавать тз на тонком клиенте. У меня учебная версия
4. user5300 968 21.02.23 15:53 Сейчас в теме
(3)
&НаКлиенте
Процедура Сортировать(Команда) 
    Массив = СтрРазделить(Числа,",");
    Сортировать(Массив);
КонецПроцедуры

&НаСервере
Процедура Сортировать(Массив)
	Таб = Новый ТаблицаЗначений;
	Таб.Колонки.Добавить("Числа");
    Для Инд = 0 По Массив.Вграница() Цикл
		Таб.Добавить();
	КонецЦикла;
	Таб.ЗагрузитьКолонку(Массив , "Числа");
	Таб.Сортировать("Числа");	       
	Массив = Таб.ВыгрузитьКолонку("Числа");
КонецПроцедуры

Показать
5. nomad_irk 67 21.02.23 16:00 Сейчас в теме
(4) чтобы это все работало, нужно делать
Таб.Колонки.Добавить("Числа", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10,0)));

или какая там разрядность числового значения требуется.....
6. user5300 968 21.02.23 16:02 Сейчас в теме
(5) можно и в общем
Таб.Колонки.Добавить("Числа", Новый ОписаниеТипов("Число"))

Хотя он и произвольный тип, по идее, сможет отсортировать
8. nomad_irk 67 21.02.23 16:11 Сейчас в теме
(6)Так после
Массив = СтрРазделить(Числа,",");

В массиве будут строки, если их добавить в ТЗ, строками они быть не перестанут, сортироваться будут так же - "по-строковому"
user5300; +1 Ответить
7. G_117874606564250923862 21.02.23 16:07 Сейчас в теме
Ошибка
Прикрепленные файлы:
10. user5300 968 21.02.23 16:15 Сейчас в теме
9. Zevzm 21.02.23 16:12 Сейчас в теме
Можно и на клиенте сортировать:
&НаКлиенте
Процедура Сортировать(Команда) 
    Массив = СтрРазделить(Числа,",");
    СЗ = Новый СписокЗначений;
    Для Каждого ЭлементМассива Из Массив Цикл
           СЗ.Добавить(Число(ЭлементМассива ));
    КонецЦикла;
    СЗ.Сортировать();
КонецПроцедуры
Показать
12. G_117874606564250923862 21.02.23 16:18 Сейчас в теме
Оставьте свое сообщение
Вакансии
Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Архитектор 1С
Москва
зарплата от 250 000 руб.
Полный день

1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 100 000 руб.
Временный (на проект)

Разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день