Имя: Пароль:
1C
1С v8
Можно ли отсортировать коллекцию движений документа?
0 shlyahtich
 
26.02.17
12:01
У документа как объекта метаданных есть коллекция движений.
К каждому элементу этой коллекции можно обратиться известным методом "Для каждого...."

Но я хочу обратиться к каждому элементу этой коллекции в определенной последовательности, соответствующей, например, алфавитному порядку имен метаданных (регистров). Это не таблица значений и отсортировать нельзя. Выгружать всю коллекцию в ТЗ для сортировки... гемор для простой задачи.

Может кто подскажет простой способ как обратиться к элементам коллекции в определенном порядке?

спасибо
1 PR
 
26.02.17
12:03
Напиши
2 Web00001
 
26.02.17
12:20
>>Выгружать всю коллекцию в ТЗ для сортировки... гемор для простой задачи.
Это неупорядоченная коллекция и как следствие не имеет методов сортировки. По логике платформы(это уже мои фантазии), необходимости в сортировке движений быть не может. В чем заключается гемор выгрузки движений в ТЗ?
3 vde69
 
26.02.17
12:25
ну как стоит задача, так и решаем (криво)

для каждого мИмяРег из ТвойМассивСИменами цикл
для каждого эл из движения цикл
  если эл.метаданные().имя = мИмяРег тогда
    //делаем то что тебе нужно
  конецесли
конеццикла
конеццикла
4 shlyahtich
 
26.02.17
14:55
Есть коллекция движений
Я хочу перебрать ее, например, в порядке, который определяется наименованием регистра (или в порядке по любой из ее колонок).

И перебор должен в итоге сохранить тип объекта. Поэтому выгрузка в ТЗ всех полей коллекции движений объекта (документа) не очень красивый вариант. Надо определить все типы полей будущей ТЗ ( ведь метода Метаданные.Документ.Движения.Выгрузить() не существует), потом перебрать коллекцию добавляя в ТЗ ее колонки и потом отсортировать ТЗ а потом вместо коллекции движений в цикле перебирать эту ТЗ...

Задача должна иметь решение - подумалось о ней случайно.
5 Serg_1960
 
26.02.17
17:02
(зевая) Читать движения, сканируя по порядку список выгруженных и отсортированных наименований регистров движений документа
6 Web00001
 
26.02.17
17:25
(4)Ерундой занимаешься все проще гораздо. Лениво открывать отладчик. Кода 10 строк наверняка.
7 Web00001
 
26.02.17
17:37
(5) +1 Получили движения документа, закинули имена в список, отсортировали как надо список, обратились куда надо и в каком надо порядке.
8 shlyahtich
 
26.02.17
18:12
все это и так ясно
код такой в начале:

// Перебор движений
        Для Каждого СвойстваОбъекта Из ДвиженияДокумента Цикл
                
                // Проверка, есть ли движения по регистру
                СтрокаВТаблицеРегистров = ТаблицаДвижений.Найти(Врег(СвойстваОбъекта.ПолноеИмя()), "Имя");
                
                Если СтрокаВТаблицеРегистров = Неопределено Тогда
                        Продолжить;
                КонецЕсли;

и единственное что меня не устравивает - это то что выводится все не по алфавиту - чтоб одинаковые регистры были рядом.

Задача не в том как это сделать а в том, как ОПТИМАЛЬНО выполнить произвольную сортировку коллекции, которая как верно выше замечено, является неупорядоченной.

где это может пригодиться - везде где например в отчете выводятся движения документа - удобно было бы их упорядочивать в отчете по собственному желанию.

PS:
(6) я иногда размышляю а потом делаю. Некоторые вещи потом публикую на инфо, если вижу что полезное
9 Serg_1960
 
26.02.17
20:29
Если сортировать, то сортировать не по именам, а по синониму - юзверям это привычнее видеть на экране.

Имхо, автор не понимает об чём ему говорят :( Продолжение завтра, всё завтра... если он вспомнит проспавшись :)