15.09.2014, 15:47 | #1 |
Участник
|
Естественная сортировка
Добрый день, коллеги!
Подскажите существует ли в Аксапте метод для естественной сортировки. А1 А2 А3 А10 А20 А103 |
|
15.09.2014, 15:57 | #2 |
Участник
|
На поле в таблице установите свойство Adjustment на Right.
|
|
|
За это сообщение автора поблагодарили: axotnik88 (1). |
15.09.2014, 16:23 | #3 |
Участник
|
|
|
15.09.2014, 16:25 | #4 |
Участник
|
Можно записать во временную таблицу, отсортировать и обратно в контейнер.
|
|
15.09.2014, 16:26 | #5 |
Участник
|
|
|
15.09.2014, 16:27 | #6 |
Участник
|
Я бы лучше запись положил во времянку по ключу
А00001 А00002 А00003 А00010 А00020 А00103 (завести поле в котором писать такие значения, как преобразовать думаю сами догадаетесь) а на этом поле сделать индекс. Тогда гарантировано отсортирует как вам надо. |
|
|
За это сообщение автора поблагодарили: axotnik88 (1). |
15.09.2014, 16:42 | #7 |
Участник
|
еще появился вариант с Set
Set setOf = new set(Types::RString); Когда попробую отпишусь. Всем спс. |
|
15.09.2014, 17:25 | #8 |
Участник
|
Если не ошибаюсь, то нигде не гарантировано что ключи в set или map сортируются по возрастанию.
В ax 3.0 был ключ командной строки который приводил к тому что ключи в мапах сортировались в обратном порядке (кстати не факт что сортировка совпадет с сортировкой в БД ) Не знаю зачем мог бы быть полезен этот ключ, но для себя реши что нельзя в алгоритмах в аксапте закладываться на отсортированность ключей в мапах. |
|
|
За это сообщение автора поблагодарили: belugin (3), S.Kuskov (1). |
15.09.2014, 20:31 | #9 |
Участник
|
вот в этой статье есть код "естественной сортировки" http://iproc.ru/parallel-programming/lection-6/
|
|
16.09.2014, 12:42 | #10 |
Участник
|
Цитата:
Достаточно лишь учитывать что сортировка в БД и в среде исполнения не совпадает 100% по некоторым символам.Ну так это и таблиц временных и RecordSortedList касается (Хотя за RecordSortedList не скажу достоверно - не проверял) |
|
16.09.2014, 12:54 | #11 |
Участник
|
Там где нужна сортировка - использую временную табличку или recordSortedList (он живет в памяти и работает с той же скоростью что и мап - поиск, извлечение элемента и.т.п.)
|
|
16.09.2014, 13:03 | #12 |
Участник
|
Ну, может кто-то встречал в документации по Аксапте какие-либо гарантии касательно сортировок по ключам мапов, сетов и.т.п.
Тогда скажите. Это было бы удобно. Но я такого не встречал. |
|
17.09.2014, 13:34 | #13 |
Administrator
|
Цитата:
Цитата:
The Set class is used for the storage and retrieval of data from a collection in which the values of the elements contained are unique and serve as the key values according to which the data is automatically ordered.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: Logger (3). |
17.09.2014, 13:39 | #14 |
Administrator
|
Кстати, эта сортировка добавляет проблем в Product Builder. Там во время запуска конфигурации все данные из базы загружаются в мапы и сеты. После долгого тестирования удалось обнаружить, что именно во время вставки данных в Map происходят самые большие потери в производительности. Судя по всему, сортировка эта происходит именно в момент вставки данных (что, впрочем, логично), а алгоритмы сортировки и хранения мапов далеки от идеала.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
17.09.2014, 14:04 | #15 |
Участник
|
Странно.
Наверно там данных было чуть менее, чем дофига. А что могло бы быть быстрее на ваш взгляд ? Я думаю если данные выбирать из базы и оперировать в памяти то мап это самое быстрое из возможных. Ну можно еще завести массив container-ов. Там не будет потерь на сортировку. И память сразу выделяется пачками. За счет этого быстрее. Но зато ограничения на тип ключа (int32). Либо данные из базы не выбирать в память, а попробовать (если это возможно) SQL запросами массовую обработку делать. |
|
17.09.2014, 14:15 | #16 |
Administrator
|
Мне трудно сказать, что могло бы быть быстрее, так как я не знаю, что именно там напрограммировано сейчас. В принципе, различные алгоритмы для сортировки известны, надо только их аккуратно реализовать.
Product Builder в целом так устроен, что при количестве конфигурируемых переменных больше 20-30, данных уже будет до хрена. Опять же, не могу порекомендовать какие-то изменения алгоритма, так как менять надо идеологию, как мне кажется. Майкрософт, похоже, с этим согласен, так как начиная с 2012 версии Product Builder будет отмирать. А конкретно эту проблему со вставками удалось решить, немного поменяв алгоритм, чтобы количество этих самых вставок в мапы уменьшить. Если есть практический интерес - давайте откроем новую тему, и я расскажу. Но, насколько я понимаю, этим модулем всё равно мало кто пользуется.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: Logger (3), axotnik88 (1). |
|
Похожие темы | ||||
Тема | Ответов | |||
Сортировка в гриде с двумя DataSource | 15 | |||
Сортировка в Query в отчете | 7 | |||
FormListControl сортировка | 2 | |||
Сортировка в гриде | 15 | |||
Глючит сортировка записей | 5 |
|