Имя: Пароль:
1C
1С v8
Как отсортировать массив?
,
0 SpiKe
 
09.01.13
17:20
Как отсортировать массив чисел, допустим разделенных пробелом, по возрастанию или убыванию?
1 pessok
 
09.01.13
17:23
пузырьком, например
2 pessok
 
09.01.13
17:23
а вообще перегнать в список значений и уже его сортировать :)
3 Armando
 
09.01.13
17:24
Домашку задали?
4 SpiKe
 
09.01.13
17:24
вопрос на собеседовании был такой, я только учусь ещё
5 х86
 
09.01.13
17:25
(0)загрузить колонку в Таблицу значений, отсортировать, выгрузить
6 pessok
 
09.01.13
17:25
(5) сурово! :)
7 pessok
 
09.01.13
17:25
СписокЗначений (ValueList)
СортироватьПоЗначению (SortByValue)
Синтаксис:

СортироватьПоЗначению(<Направление>)
Параметры:

<Направление> (необязательный)

Тип: НаправлениеСортировки.
Способ сортировки - по возрастанию или по убыванию.
Значение по умолчанию: Возр
Описание:

Сортирует список значений в порядке возрастания или убывания хранимых элементами значений.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:

СписокТиповЦен.СортироватьПоЗначению(НаправлениеСортировки.Возр);
8 pessok
 
09.01.13
17:26
и загрузка массива в СЗ

СписокЗначений (ValueList)
ЗагрузитьЗначения (LoadValues)
Синтаксис:

ЗагрузитьЗначения(<МассивЗначений>)
Параметры:

<МассивЗначений> (обязательный)

Тип: Массив.
Массив, содержащий значения для заполнения списка значений.
Описание:

Загружает список значений значениями из переданного массива. При этом все прежние элементы списка удаляются.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:

СписокТиповЦен.ЗагрузитьЗначения(МассивЭлементов);
9 acsent
 
09.01.13
17:27
Удиви их реализацией квиксорт ))
10 le_
 
09.01.13
17:27
11 SpiKe
 
09.01.13
17:27
спасибо, буду пробовать))
12 Утконос
 
09.01.13
17:29
СЗ = Новый СписокЗначений;
СЗ.ЗагрузитьЗначения(МассивНаименований);
СЗ.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
МойМассив = СЗ.ВыгрузитьЗначения();
13 DrShad
 
09.01.13
17:31
(8) дело в том что по сабжу не совсем массив :)))
14 pessok
 
09.01.13
17:32
(13) ну сначала строку разобрать и поместить в список
15 DrShad
 
09.01.13
17:34
(14) а вот это уже настолько же сурово, как с сортировкой в ТЗ - ведь массив можно и в колонку загрузить
16 pessok
 
09.01.13
17:37
(15) да никто не против велосипедного кьюсорта, но, имхо, на собеседовании от него просили именно такой вариант :)
17 DrShad
 
09.01.13
17:39
(16) за такие вопросы на собеседование на кол нужно сажать
18 pessok
 
09.01.13
17:40
(17) это уже десятый вопрос. может его хыр менеджер со списком от бывшего программатора собеседовал
19 pessok
 
09.01.13
17:40
со списком вопросов*
20 SpiKe
 
09.01.13
17:41
тестировал сам программист, который там работает, дал несколько задачек, одна из которых была эта
остальные решил
21 acsent
 
09.01.13
17:42
(16) зато сразу +10 пунктов к крутизне
22 GROOVY
 
09.01.13
17:42
В временную таблицу в запрос, запросом сортировать и результат обратно в массив!
23 DrShad
 
09.01.13
17:42
(20) беги оттуда
24 DrShad
 
09.01.13
17:43
(22) нафейхоа!? Паша, извини, но это уже совсем слишком
25 pessok
 
09.01.13
17:43
(21) угу, пм посмотрим на него и решит, что это древний си-кодер, который не вникнет в бизнес-процесс, выдумывая велосипеды
26 pessok
 
09.01.13
17:44
(24) зато еще (21) :)
27 acsent
 
09.01.13
17:45
(25) так нужно спросить вам чтоб быстро работало или легко читалось. Еще +10 к комуникабельности
28 pessok
 
09.01.13
17:45
собственно, ТС, каковы был ТВОЙ ответ?)
29 pessok
 
09.01.13
17:45
(27) тут надо спросить не так. надо спросить: "вам средствами 1С, или по-человечески написать?"
30 Deon
 
09.01.13
17:46
(28) вручную
31 GROOVY
 
09.01.13
17:46
Совсем круто это конечно через внешние источники данных все это замутить!
32 DrShad
 
09.01.13
17:46
(29) может получиться epic fail - вдруг тот программист ничего кроме 1С не знает
33 ДенисЧ
 
09.01.13
17:47
(31) ВИД - не кошерно. Нужно написать свою ВК для низкоуровнего доступа к бд...
34 pessok
 
09.01.13
17:48
(32) вот это я и имел ввиду в (18)
35 х86
 
09.01.13
17:48
(31)я еще знаю дедовский метод сортировки построителем )
36 pessok
 
09.01.13
17:48
(33) тогда вообще надо брейнфак заюзать, будет дичь!
37 ДенисЧ
 
09.01.13
17:49
(36) это точно, дичь :-)
38 Reset
 
09.01.13
17:49
Сз=Новый СписокЗначений;
Сз.ЗагрузитьЗначения(ОбщегоНазанченияИлиКактам.РазложитьСтрокуВМассимПодстрокИликакЕе(ИсходнаяСтрока," "));
Сз.СортироватьПоЗначению();
39 Deon
 
09.01.13
17:49
Ещё надо не забыть, что числа могут быть дробными, а т.к. на входе в (0) строка, то необходимо отработать проблему с разделителем - . или ,
40 acsent
 
09.01.13
17:50
(29) вот этот вопрос как раз и выдаст старого си кодера с головой
41 Reset
 
09.01.13
17:50
(39) вероятно проблема с разделителем решается так:
" допустим разделенных пробелом"
42 pessok
 
09.01.13
17:50
(39) по условиям задачи там пробел
43 pessok
 
09.01.13
17:50
,----------
[

 ----- ----- ----- ----- ----- ---

 [->+<]>
 [
   [->+<]
   +>-
 ]

 >>>>> >>>>> + <<<<< <<<<<    

 <[-<]

 ,----- -----
]
44 Deon
 
09.01.13
17:50
(41)(42) С разделителем дробной части
45 pessok
 
09.01.13
17:51
+(43)
Таким нехитрым способом мы отсортировали цифры.
Несложно модифицировать код, чтобы сортировались почти любые символы, либо выводить цифры по убыванию. Использую эту идею можно сортировать не только цифры, но и 2ух — 3ех значные числа, возможно, позже я напишу об этом.
46 Reset
 
09.01.13
17:52
(44)
а ну да, их нужно еще в числа перед сортировкой преобразовать.
47 Deon
 
09.01.13
17:53
(46) В условии задачи этого нет. Непонятно, какое возрастание надо для чисел, к примеру, "1 10 100" ?
48 Reset
 
09.01.13
17:54
(47) ну да, не сказано про метод сравнения для сортирвки