|
Почему так? 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) используй ТаблицуЗначений.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |