Имя: Пароль:
1C
1С v8
Сортировка массива по колонке
0 arhiordinator
 
16.06.14
13:27
Вопрос такой, есть массив, в нём наименование, цена, количество, нужно отсортировать записи массива по количеству. Как лучше это сдеать, думаю через таблицу значений, чет не помню как делается.
1 Любопытная
 
16.06.14
13:30
ДенисЧ продал все СП  и тебе ничего не осталось?

ТаблицаЗначений (ValueTable)
Сортировать (Sort)
Синтаксис:

Сортировать(<Колонки>, <ОбъектСравнения>)
Параметры:

<Колонки> (обязательный)

Тип: Строка.
Список имен колонок, разделенных запятыми, по которым производится сортировка таблицы. После каждого имени колонки через пробел может быть указано направление сортировки. Направление определяется: "Убыв" ("Desc") - упорядочивать по убыванию; "Возр" ("Asc") - упорядочивать по возрастанию. По умолчанию сортировка производится по возрастанию. Порядок указания имен колонок таблицы определяет порядок сортировки. Это означает, что сначала таблица сортируется по колонке, указанной первой. Затем группы строк с одинаковым значением в этой колонке сортируются по колонке, которая указана второй, и так далее.
2 МихаилМ
 
16.06.14
13:30
а справку почитать религия не позволяет.
3 arhiordinator
 
16.06.14
13:32
(1) А как массив передать в таблицу значений и выгрузить обратно?
4 ДенисЧ
 
16.06.14
13:33
в массиве не может быть "наименование, цена, количество"
Там только одно значение на элемент
5 МихаилМ
 
16.06.14
13:34
(3)
ТаблицаЗначений (ValueTable)
ЗагрузитьКолонку (LoadColumn)
Синтаксис:

ЗагрузитьКолонку(<Массив>, <Колонка>)
Параметры:

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

Тип: Массив.
Массив значений, который выступает в качестве источника данных для колонки.
<Колонка> (обязательный)

Тип: Число; Строка; КолонкаТаблицыЗначений.
Колонка, в которую будут загружены значения из массива. В качестве значения параметра может выступать индекс колонки, имя колонки, сама колонка.
Описание:

Загружает колонку таблицы значений из массива значений.

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

Сервер, толстый клиент, внешнее соединение.
Примечание:

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

ТаблицаРезультат = Новый ТаблицаЗначений;
Для каждого ИмяКолонки Из МассивИменКолонок Цикл
    ТаблицаРезультат.Колонки.Добавить(ИмяКолонки);
КонецЦикла;

// Создадим пустые строки таблицы
Для Н=1 По СтрокиДереваЗначений.Количество() Цикл
    ТаблицаРезультат.Добавить();
КонецЦикла;

// Скопируем значения колонок
Для каждого ИмяКолонки Из МассивИменКолонок Цикл
    ЗначенияКолонки = СтрокиДереваЗначений.ВыгрузитьКолонку(ИмяКолонки);
    ТаблицаРезультат.ЗагрузитьКолонку(ЗначенияКолонки, ИмяКолонки);
КонецЦикла;


------------------
+ не забыть, что двумерный массив есть массив массивов.
6 mistеr
 
16.06.14
13:43
У него небось массив структур...
7 Fram
 
16.06.14
13:45
(3) а как ты в массив эти данные закачал?..
8 Fram
 
16.06.14
13:46
+(7) возврат серверной функции в клиент?
9 arhiordinator
 
16.06.14
13:51
(6) Массив строк :)   Методом найти строки в таблице значений.  Возвращает массив строк, и че теперь с ним делать. Нужно бы отсортировать как то по количеству.
10 Любопытная
 
16.06.14
13:53
(9) может сортировать таблицу значений, а потом из нее получать массив строк?
11 Grekos2
 
16.06.14
13:54
(9) Создай новую ТЗ. Перепиши туда эти строки
12 Любопытная
 
16.06.14
13:55
(9) ТаблицаЗначений (ValueTable)
Скопировать (Copy)
Вариант синтаксиса: Скопировать строки

Синтаксис:

Скопировать(<Строки>, <Колонки>)
Параметры:

<Строки> (необязательный)

Тип: Массив.
Массив строк для копирования. Если не указан, копируются все строки таблицы значений.
13 МихаилМ
 
16.06.14
13:55
(9)
да почитайте Вы справку по ТЗ. там есть ответ на ваш вопрос.
хватит тупить.
14 Любопытная
 
16.06.14
13:56
(9) Продам СП за серебряное колечко) Размер 18,5 ;)
15 Анцеранана
 
16.06.14
14:22
(0) ээ кхм я так понял в массиве какие-то строки? Из ТЗ? или из чего?
Сначала отсортируй
Затем загоняй в массив. И делов-то)
16 vhl
 
16.06.14
15:17
Учись, студент:

    Функция СортировкаПузырьком(МассивЭлементов) Экспорт
        // Количество просмотров массива - по количеству числа его элементов
        Для просмотр = 0 По МассивЭлементов.Количество()-1 Цикл
            // Собственно, просмотр массива
            Для индекс = 0 По МассивЭлементов.Количество()-1 Цикл
                // Если достигли конца массива то прервём цикл,
                // чтобы не выполнять условие ниже
                Если индекс = МассивЭлементов.Количество()-1 Тогда
                    Прервать;
                КонецЕсли;
                // Сравнение элементов и их перестановка (если требуется)
                Если МассивЭлементов[индекс].МоеКоличество > МассивЭлементов[индекс+1].МоеКоличество Тогда
                    СтаршийЭлемент = МассивЭлементов[индекс];
                    МладшийЭлемент = МассивЭлементов[индекс+1];
                    МассивЭлементов[индекс] = МладшийЭлемент;
                    МассивЭлементов[индекс+1] = СтаршийЭлемент;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
        Возврат МассивЭлементов;
    КонецФункции
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн