|   |   | 
| 
 | ошибка перебора соответствия на платформе 8.3.17.1851 | ☑ | ||
|---|---|---|---|---|
| 0
    
        kauksi 11.02.21✎ 15:19 | 
        Если выполнить следующий код на платформе 8.3.17.1851
 СведенияПоСерии = Новый Соответствие; НомерСтроки=1; Для Н=1 По 100 Цикл СведенияПоСтроке = Новый Структура; СведенияПоСтроке.Вставить("НомерСтроки",НомерСтроки); СведенияПоСерии.Вставить(НомерСтроки,СведенияПоСтроке); НомерСтроки = НомерСтроки + 1; КонецЦикла; Для Каждого Стр Из СведенияПоСерии Цикл Выборка = Стр.Значение; Сообщить(Выборка.НомерСтроки); КонецЦикла; То результатом будет 9 65 1 2 3 4 5 6 7 8 10 11 Т.е. перебор элементов соответствия идет не в том порядке, с цифры 9 На платформах 8.3.10.2699 и 8.3.18.1208 поведение ожидаемо 10 9 8 7 6 5 4 3 2 1 проблема проявляется, когда размер соответствия больше 9ти | |||
| 1
    
        Престарелый Заяц 11.02.21✎ 15:21 | 
        А че он должен быть в каких то порядках ?     | |||
| 2
    
        d4rkmesa 11.02.21✎ 15:22 | 
        (0) Порядок элементов же не гарантирован? Да, для каких-то простых ключей порядок сохранялся, в отдельных случаях, но он не был никогда гарантирован.     | |||
| 3
    
        kauksi 11.02.21✎ 15:23 | 
        Ну если это массив в памяти, то первым ожидается элемент, добавленный последним.     | |||
| 4
    
        kauksi 11.02.21✎ 15:24 | 
        короче это фича... но в некоторых конфигурациях приводит к тому что первой печатается строка 9 а не 1     | |||
| 5
    
        Ненавижу 1С гуру 11.02.21✎ 15:25 | 
        (0) даже в СП написано, что порядок перебора не гарантирован     | |||
| 6
    
        Почему 1С 11.02.21✎ 15:26 | 
        (4) Используй Массив вместо соответствия     | |||
| 7
    
        kauksi 11.02.21✎ 15:32 | 
        (6)Да эт понятно, я так не пишу, просто у клиента вылезло именно на этой платформе...
 К элементам некоторым коллекций в 1С:Предприятии 8 можно обращаться с помощью числового индекса. Для таких коллекций перебор элементов может осуществляться и итератором, и с помощью индекса. Примером такой коллекции является Массив. Однако для некоторых коллекций обращение по индексу недоступно, так как коллекция не имеет определенной последовательности. В этих случаях итератор "Для каждого..." позволяет обойти коллекцию. Однако это не значит, что порядок выдачи элементов при обходе коллекции будет являться порядком элементов в коллекции. Если коллекция неупорядочена, то порядок обхода итератором "Для каждого..." в общем виде не определен, то есть может быть любым. Соответственно, для таких коллекций нельзя опираться на этот порядок в алгоритмах использующих коллекцию. Примером такой коллекции является Соответствие. | |||
| 8
    
        Ненавижу 1С гуру 11.02.21✎ 16:20 | 
        (7) ну и? для таких коллекций просто нет понятия порядка     | |||
| 9
    
        Cyberhawk 11.02.21✎ 16:37 | 
        (8) Чем "в порядке добавления" не порядок?     | |||
| 10
    
        Вафель 11.02.21✎ 16:42 | 
        порядок есть, но это порядок индексов от хэшей, но никак не порядок добавления | |||
| 11
    
        Ненавижу 1С гуру 11.02.21✎ 18:39 | 
        (9) тем, что Структура его не хранит, а так придумать разных порядков можно     | |||
| 12
    
        ДенисЧ 11.02.21✎ 19:27 | 
        Перечисление это не массив. В нём нет порядка.     | |||
| 13
    
        Сияющий в темноте 11.02.21✎ 22:28 | 
        если в соответствие добавлять строковые ключи,то они очень забавно пляшут в порядке следования.
 ну,и то,что в разных платформах разный порядок говорит,что они используют разную оптимизацию при хранении. | |||
| 14
    
        Cyberhawk 12.02.21✎ 11:22 | 
        (11) Я "не хранит порядок" и "нет понятия порядка" трактую по-разному     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |