Имя: Пароль:
1C
1С v8
Почему так? 8-0 Соответствие работает неожиданно
0 Sj
 
24.07.22
22:52
Доброе время суток!
Утрируя общую задачу, имею простой код:

Процедура ПриОткрытии()
    
Ссылки = Новый Соответствие;
Ссылки.Вставить("ПоступлениеТоваровУслуг");
Ссылки.Вставить("ФизическиеЛица");
Ссылки.Вставить("Кассы");
Ссылки.Вставить("Регионы");
Ссылки.Вставить("РеализацияТоваровУслуг");
Ссылки.Вставить("ГруппыДоступаККонтрагентам");
Ссылки.Вставить("Примечания");
Ссылки.Вставить("ТипыЦенНоменклатуры");
Ссылки.Вставить("ВидыВзаиморасчетов");
Ссылки.Вставить("Банки");
Ссылки.Вставить("ТипыЦенНоменклатурыКонтрагентов");
Ссылки.Вставить("Склады");
Ссылки.Вставить("Организации");
Ссылки.Вставить("Пользователи");
Ссылки.Вставить("БанковскиеСчета");
Ссылки.Вставить("ДоговорыКонтрагентов");
Для каждого Стр Из Ссылки Цикл

    Сообщить(стр.Ключ);

КонецЦикла;
Сообщить("-----------------------------");
Ссылки.Вставить("_СистемыНалогообложения");
Для каждого стр Из Ссылки Цикл

    Сообщить(стр.Ключ);

КонецЦикла;

КонецПроцедуры

Почему 1с возвращает:

ДоговорыКонтрагентов
Пользователи
Организации
Склады
ТипыЦенНоменклатурыКонтрагентов
Банки
ВидыВзаиморасчетов
ТипыЦенНоменклатуры
Примечания
ГруппыДоступаККонтрагентам
РеализацияТоваровУслуг
Регионы
Кассы
БанковскиеСчета
ФизическиеЛица
ПоступлениеТоваровУслуг
-----------------------------
_СистемыНалогообложения
ДоговорыКонтрагентов
Организации
Пользователи
Склады
ТипыЦенНоменклатурыКонтрагентов
ВидыВзаиморасчетов
Банки
ТипыЦенНоменклатуры
Примечания
ГруппыДоступаККонтрагентам
Регионы
РеализацияТоваровУслуг
Кассы
ПоступлениеТоваровУслуг
БанковскиеСчета
ФизическиеЛица

С какого такого БанковскиеСчета, ФизическиеЛица во втором сообщить оказались после ПоступлениеТоваровУслуг ?
А в первом БанковскиеСчета оказались над ФизическиеЛица ?
1 Волшебник
 
24.07.22
22:52
"Соответствие" не обязано соблюдать порядок.
2 Sj
 
24.07.22
22:56
возможно ли как-то реализовать .Добавить, чтобы четко понимать, что последовательность добавляемых данных будет соблюдена?
3 Sj
 
24.07.22
22:59
(1) никто никому не обязан, но если в хелпе это не описано, то подразумевается, что данные упорядочены по мере добавления. а не прыг-скок, как карта ляжет
4 Волшебник
 
24.07.22
23:02
Используйте объект типа "Массив" или "СписокЗначений" или "ТаблицаЗначений"
Там порядок элементов/строк зафиксирован.
5 Sj
 
24.07.22
23:09
(4) спасибо, но удобнее всего было Соответствие, я даже смирился с тем, что в Структуре идет сортировка по ключу, но там понятно - ключ. Для Соответствия хоть и в хелпе написано "Элементы коллекции:КлючИЗначение", но поведение ключа визуально непонятно.
6 Жан Пердежон
 
24.07.22
23:12
(3) учу читать доку: если в доке об этом явно не сказано, то подразумевается, что порядок никто не гарантирует
7 Волшебник
 
24.07.22
23:13
(5) Это программные структуры. У них нет визуального поведения.
8 Жан Пердежон
 
24.07.22
23:14
(3) ты еще предъяви, что 'select ИмяПоля from ИмяТаблицы' в разном порядке строки возвращает после добавления строк в таблицу
9 Жан Пердежон
 
24.07.22
23:19
(2) храни порядок отдельно в отдельном соответствии / массиве / структуре
10 Sj
 
24.07.22
23:22
(9) в хелпе должно быть указание, что порядок не гарантируется или ведет себя х. знает как.
11 Sj
 
24.07.22
23:23
меня, конечно, смутило отсутствие .Добавить. Но .Вставить для соответствия отрабатывало корректно, вот только фишечку поймал на "_".
12 Asmody
 
24.07.22
23:24
(10) кому должно?
13 Sj
 
24.07.22
23:25
(10) тем, кто использует 1С в качестве инструмента программирования.
14 Asmody
 
24.07.22
23:27
(13) схерали?
15 Asmody
 
24.07.22
23:28
Оно "должно" только то, что описано в спецификации языка и фреймворка.
А удовлетворять фантазии каждого второго - дорогое удовольствие.
16 Жан Пердежон
 
24.07.22
23:29
(14) а может тем кто использует 1С в качестве инструмента программирования, Нуралиев ещё должен лично приходить и сопли вытирать?
17 Sj
 
24.07.22
23:30
не утрируйте. здесь механизм достаточно просто: добавил строчку, с х. ли строчка должна прыгать. (16) ты не ссы, за своими соплями я сам присмотрю, свои подтирать не забывай.
18 Жан Пердежон
 
24.07.22
23:34
(17) вместо того, чтобы повторять что тебе кто-то что-то должен, почитал бы лучше что-нибудь про структуры данных, а точнее про ассоциативные массивы, зачем они нужны и про их реализации и т.д.
19 Sj
 
24.07.22
23:37
(18) если вы твердите про ассоциативные массивы поясните поведение 1С. Почему добавление ключа "_СистемыНалогообложения" изменило порядок всего массива?
20 PR
 
24.07.22
23:37
(17) Некоторые вот должны документацию прочитать, прежде чем вообще конфигуратор открывать
А они прогают не приходя в сознание
И еще хватает наглости что-то брякать про то, кто им и что должен
21 PR
 
24.07.22
23:40
(19) Тебе уже сказали, что здесь нет прогнозируемого порядка, порядок не гарантируется
Учись читать, что тебе пишут, прежде чем предъявлять претензии другим
22 RomanYS
 
24.07.22
23:40
(19) так не было порядка, значит и не изменило. И не массива конечно
23 Sj
 
24.07.22
23:44
(18) вы о чем? надеюсь не мне, а просто чат попутали?
24 Ненавижу 1С
 
гуру
24.07.22
23:44
Справедливости ради - описание в СП так себе
25 PR
 
24.07.22
23:46
(24) Напиши лучше
До завтра напишешь?
26 Sj
 
24.07.22
23:50
(25) хм, зачем вы так пишете? это же явная подъобка.
27 Sj
 
24.07.22
23:55
при разработке сложных систем все детали должны быть указаны. Хочешь ты этого или нет, но ты должен это указать. Обязан или нет - другой вопрос. В данном случае, поведение системы нелогично, поэтому я и решил уточнить информацию на форуме.
28 Волшебник
 
25.07.22
00:04
(27) Ага, Ваш звонок очень важен для нас.
29 Волшебник
 
25.07.22
00:06
Мистер Sj
Прошу Вас ещё раз подумать, прежде чем предъявлять претензии к 1С здесь.
Мы вообще не при делах!
30 Sj
 
25.07.22
00:13
(29) не трактуйте меня предвзято. Я всего лишь пытаюсь прояснить для себя один вопрос, и  не более того. В (4), в принципе, ответ уже раскрыт. Хоть и немного жаль, что заявленный инструмент работает не так, как хотелось бы.
31 Garykom
 
гуру
25.07.22
00:27
Наверно в платформе 1С маловато разных похожих (по сути одинаковых) типов данных.
Надо к Структура, Соответствие, Массив, СписокЗначений, ТаблицаЗначений еще столько же добавить!

Хотя прекрасно можно было обойтись одним универсальным типом.
32 ДедМорроз
 
25.07.22
00:52
Соответствие - это дерево по hash-y ключей.
При добавлении дерево перестраивается и оптимизируется.
33 TeMochkiN
 
25.07.22
02:01
Справедливости ради, в СП для некоторых коллекций пишется, что к элементу коллекции можно обратиться через индекс, значит в такой коллекции порядок будет зафиксирован однозначно. Для структуры и соответствия такого не написано, значит и порядок будет непредсказуемым, ведь к их элементам невозможно обратиться через индекс.
34 БигБаг
 
25.07.22
05:25
(0) скорее всего оно реализовано на базе std::unordered_map, который не сортирован по ключу, а сортирован по хэшу значения.
35 Конструктор1С
 
25.07.22
05:41
36 Конструктор1С
 
25.07.22
05:43
Внезапно, на ссылку вышел из синтаксис-помощника. В самом низу есть кнопка "методическая информация", которую иногда жмякать очень полезно
37 Ненавижу 1С
 
гуру
25.07.22
08:19
(25) (26) Ответ в стиле "сам дурак"
38 Гений 1С
 
гуру
25.07.22
10:42
(5) используй ТаблицуЗначений.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн