AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.09.2014, 15:47   #1  
axotnik88 is offline
axotnik88
Участник
 
82 / 18 (1) ++
Регистрация: 05.06.2012
Естественная сортировка
Добрый день, коллеги!
Подскажите существует ли в Аксапте метод для естественной сортировки.

А1
А2
А3
А10
А20
А103
Старый 15.09.2014, 15:57   #2  
sparco is offline
sparco
Участник
Самостоятельные клиенты AX
 
44 / 21 (1) +++
Регистрация: 10.10.2011
Адрес: Москва
На поле в таблице установите свойство Adjustment на Right.
За это сообщение автора поблагодарили: axotnik88 (1).
Старый 15.09.2014, 16:23   #3  
axotnik88 is offline
axotnik88
Участник
 
82 / 18 (1) ++
Регистрация: 05.06.2012
Цитата:
Сообщение от sparco Посмотреть сообщение
На поле в таблице установите свойство Adjustment на Right.
Спс огромное.
Уточняю сортировка нужна для container.
container con = ['a1','a10','a2','a3','a200']
result = ['a1','a2','a3','a10','a200']
Старый 15.09.2014, 16:25   #4  
sparco is offline
sparco
Участник
Самостоятельные клиенты AX
 
44 / 21 (1) +++
Регистрация: 10.10.2011
Адрес: Москва
Можно записать во временную таблицу, отсортировать и обратно в контейнер.
Старый 15.09.2014, 16:26   #5  
axotnik88 is offline
axotnik88
Участник
 
82 / 18 (1) ++
Регистрация: 05.06.2012
Цитата:
Сообщение от sparco Посмотреть сообщение
Можно записать во временную таблицу, отсортировать и обратно в контейнер.
edit method на форме. вариант - но возможно еще в кого идее есть?
Старый 15.09.2014, 16:27   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,873 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Я бы лучше запись положил во времянку по ключу
А00001
А00002
А00003
А00010
А00020
А00103
(завести поле в котором писать такие значения, как преобразовать думаю сами догадаетесь)
а на этом поле сделать индекс.
Тогда гарантировано отсортирует как вам надо.
За это сообщение автора поблагодарили: axotnik88 (1).
Старый 15.09.2014, 16:42   #7  
axotnik88 is offline
axotnik88
Участник
 
82 / 18 (1) ++
Регистрация: 05.06.2012
еще появился вариант с Set
Set setOf = new set(Types::RString);
Когда попробую отпишусь.
Всем спс.
Старый 15.09.2014, 17:25   #8  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,873 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Если не ошибаюсь, то нигде не гарантировано что ключи в set или map сортируются по возрастанию.
В ax 3.0 был ключ командной строки который приводил к тому что ключи в мапах сортировались в обратном порядке (кстати не факт что сортировка совпадет с сортировкой в БД )

Не знаю зачем мог бы быть полезен этот ключ, но для себя реши что нельзя в алгоритмах в аксапте закладываться на отсортированность ключей в мапах.
За это сообщение автора поблагодарили: belugin (3), S.Kuskov (1).
Старый 15.09.2014, 20:31   #9  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
856 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
вот в этой статье есть код "естественной сортировки" http://iproc.ru/parallel-programming/lection-6/
Старый 16.09.2014, 12:42   #10  
Perc is offline
Perc
Участник
 
193 / 44 (2) +++
Регистрация: 05.03.2005
Цитата:
Сообщение от Logger Посмотреть сообщение
.. но для себя реши что нельзя в алгоритмах в аксапте закладываться на отсортированность ключей в мапах.
Очень странное решение. Как же вы строите более менее алгоритмы. Я довольно часто использую знание о том что мапы както упорядочиваются.
Достаточно лишь учитывать что сортировка в БД и в среде исполнения не совпадает 100% по некоторым символам.Ну так это и таблиц временных и RecordSortedList касается (Хотя за RecordSortedList не скажу достоверно - не проверял)
Старый 16.09.2014, 12:54   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,873 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Там где нужна сортировка - использую временную табличку или recordSortedList (он живет в памяти и работает с той же скоростью что и мап - поиск, извлечение элемента и.т.п.)
Старый 16.09.2014, 13:03   #12  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,873 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Ну, может кто-то встречал в документации по Аксапте какие-либо гарантии касательно сортировок по ключам мапов, сетов и.т.п.

Тогда скажите.
Это было бы удобно. Но я такого не встречал.
Старый 17.09.2014, 13:34   #13  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Logger Посмотреть сообщение
Ну, может кто-то встречал в документации по Аксапте какие-либо гарантии касательно сортировок по ключам мапов, сетов и.т.п.

Тогда скажите.
Это было бы удобно. Но я такого не встречал.
http://msdn.microsoft.com/en-US/libr...(v=ax.50).aspx
Цитата:
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  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Кстати, эта сортировка добавляет проблем в 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  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,873 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Странно.
Наверно там данных было чуть менее, чем дофига.

А что могло бы быть быстрее на ваш взгляд ?
Я думаю если данные выбирать из базы и оперировать в памяти то мап это самое быстрое из возможных.
Ну можно еще завести массив container-ов. Там не будет потерь на сортировку. И память сразу выделяется пачками. За счет этого быстрее. Но зато ограничения на тип ключа (int32).

Либо данные из базы не выбирать в память, а попробовать (если это возможно) SQL запросами массовую обработку делать.
Старый 17.09.2014, 14:15   #16  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Мне трудно сказать, что могло бы быть быстрее, так как я не знаю, что именно там напрограммировано сейчас. В принципе, различные алгоритмы для сортировки известны, надо только их аккуратно реализовать.

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 ViV DAX: Программирование 15 05.06.2014 15:55
Сортировка в Query в отчете Zlojbarsuk DAX: Программирование 7 27.03.2010 00:18
FormListControl сортировка maximka DAX: Программирование 2 26.12.2008 13:44
Сортировка в гриде Pegiy DAX: Функционал 15 06.12.2006 08:21
Глючит сортировка записей dd DAX: Функционал 5 17.08.2004 20:34
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:52.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.