|   |   | 
| 
 | Порядок элементов в массиве | ☑ | ||
|---|---|---|---|---|
| 0
    
        Septera 19.08.19✎ 16:15 | 
        Обратил внимание в ДО на такой код:
 // Сортировка виджетов по наименованию
Насколько я помню Массив на гарантирует сохранение порядка элементов заданного при создании/добавлении элементов. Очередной говнокод от 1С или я что-то путаю? | |||
| 1
    
        НадюшаЯ 19.08.19✎ 16:17 | 
        Подпишусь     | |||
| 2
    
        OldCondom 19.08.19✎ 16:18 | 
        что запрос вывел, то в массив и получил, какие к нему вопросы? Это ты с результатом запроса и его отсутствием гарантий скорее всего путаешь.     | |||
| 3
    
        Вафель 19.08.19✎ 16:18 | 
        массив не гарантирует порядка? это что то новенькое | |||
| 4
    
        OldCondom 19.08.19✎ 16:18 | 
        ой     | |||
| 5
    
        mistеr 19.08.19✎ 16:18 | 
        (0) Что-что не гарантирует?
 Ты что-то путаешь. | |||
| 6
    
        OldCondom 19.08.19✎ 16:18 | 
        не заметил УПОРЯДОЧИТЬ ПО. Но сути н е меняет.     | |||
| 7
    
        aleks_default 19.08.19✎ 16:19 | 
        (0)Чейто?     | |||
| 8
    
        mistеr 19.08.19✎ 16:19 | 
        (2) Скорее всего, он путает с ТаблицаЗначений.Сортировать()     | |||
| 9
    
        aleks_default 19.08.19✎ 16:20 | 
        Элементы массива же по индексу получают, как это не гарантирует?     | |||
| 10
    
        Septera 19.08.19✎ 16:20 | 
        (3) да сталкивался и не раз причем, когда добавляешь элементы в определенном порядке, а при обходе выбираются вообще в другом, я сейчас поищу ветка даже такая была...     | |||
| 11
    
        Dionis Sergeevich 19.08.19✎ 16:22 | 
        Массив гарантирует порядок, не гарантирует например HashMap     | |||
| 12
    
        OldCondom 19.08.19✎ 16:24 | 
        (10) ты хочешь сказать, что если я создам массив и сделаю .добавить("а"), добавить("б"), то есть вероятность дальше в коде массив[0] получить "б"?. Ты серьезно?     | |||
| 13
    
        novichok79 19.08.19✎ 16:25 | 
        может быть я чего-то путаю, но по-моему, если непустому массиву сделать ЗначениеВСтрокуВнутр, то в полученной строке, элементы идут в таком же порядке, в котором они туда помещались.     | |||
| 14
    
        Septera 19.08.19✎ 16:26 | 
        Походу со Структурой перепутал:
 "К элементам Структуры обращаются только по имени Ключа. Тем не менее, цикл Для каждого из работает и для Структуры, но опираться на порядок элементов Структуры не следует." | |||
| 15
    
        dexter_86 19.08.19✎ 16:27 | 
        Запрос.Выполнить().Выгрузить() - это результат запроса в виде ТЗ. В запросе есть упорядочивание. То есть результат будет выгружен в ТЗ в определенном порядке. ВыгрузитьКолонку(Ссылка) - выгрузить колонку результата в том виде, который попал в результат при упорядочивании. То есть за порядок отвечает не массив, а сам запрос в данном случае.     | |||
| 16
    
        dezss 19.08.19✎ 16:30 | 
        (14) ага....и сразу на форум 1С поливать...     | |||
| 17
    
        Septera 19.08.19✎ 16:30 | 
        С 1С становишься мнительным и теряешь доверие к здравому смыслу:))
 Но вот со Структурой все же видимо порядок не гарантируется, так что не умничайте! :D | |||
| 18
    
        OldCondom 19.08.19✎ 16:33 | 
        (17) какой порядок без индексов? О чем ты блин?     | |||
| 19
    
        Dionis Sergeevich 19.08.19✎ 16:34 | 
        (17) это не только в 1с - это везде в подобных коллекциях     | |||
| 20
    
        dezss 19.08.19✎ 16:34 | 
        (17) Структура не предполагает подобного.
 Дело не в 1С) | |||
| 21
    
        Cyberhawk 19.08.19✎ 16:38 | 
        Вроде везде в коллекциях неизменность порядка гарантируется, если есть [] или метод "Получить", кроме соответствия     | |||
| 22
    
        dezss 19.08.19✎ 16:39 | 
        Но так-то структура тоже порядок сохраняет. Собственно по порядку добавления элементов.     | |||
| 23
    
        Cyberhawk 19.08.19✎ 16:40 | 
        (22) Конечно нет     | |||
| 24
    
        dezss 19.08.19✎ 16:49 | 
        (23) Ну порядок не гарантируется, но все-таки сохраняется.     | |||
| 25
    
        olegves 19.08.19✎ 16:55 | 
        (22) у структуры нет добавить, а есть только вставить - о каком порядке добавления ты?     | |||
| 26
    
        dezss 19.08.19✎ 16:58 | 
        (25) Блин...я не про методы. Ладно, пусть будет по порядку вставки, так понятней?)))     | |||
| 27
    
        Мимохожий Однако 19.08.19✎ 17:22 | 
        Делай массив строками со структурой "НомерПоПорядку,Виджеты".
 После считывания массива преобразуй в ТЗ, отсортируй, используй | |||
| 28
    
        Cyberhawk 20.08.19✎ 08:24 | 
        (24) Не баклань     | |||
| 29
    
        fisher 20.08.19✎ 08:54 | 
        Не знаю ни одного языка, где в массивах не гарантируется порядок. Порядок - ключевое свойство массива.     | |||
| 30
    
        VladZ 20.08.19✎ 09:10 | 
        (0) Я не понял, в чем вопрос.
 "Насколько я помню Массив на гарантирует сохранение порядка элементов заданного при создании/добавлении элементов." - да, не гарантирует. Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); - порядок в массиве будет таким, как в полученном запросе. Вопрос-то в чем? | |||
| 31
    
        fisher 20.08.19✎ 09:48 | 
        (28) Потестил - вроде как структура таки порядок добавления сохраняет... Видать в 1С специально об этом позаботились (в java, например, есть LinkedHashSet, сохраняющий порядок добавления элементов. В питоне тоже вроде есть какие-то хэшированные структуры с сохранением порядка добавления). Не знаю только, зачем. А вот соответствие - нет.     | |||
| 32
    
        fisher 20.08.19✎ 09:52 | 
        Гы. Почитал про реализацию LinkedHashSet - там тупо параллельно с HashMap используется LinkedList. Для доступа по ключу используется мапа, а для итерации - лист :)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |