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 1064 21.02.23 15:27 Сейчас в теме
Массив = СтрРазделить(Числа,",");

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

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

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

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

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

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

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

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