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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.01.2014, 12:07   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от kgksoft Посмотреть сообщение
Всегда не хватало сортировки контейнеров в DAX.
0.
в алгоритме есть принципиальная ошибка - конейнер может содержать другие контейнеры. а также другие объекты, для которых отсутствует операция сравнения.

поэтому ваш алгоритм имеет очень ограниченное применение.
надо отдать должное функция less - прикольная.
но потенциально опасна runtime-ошибками.

1.
насколько я помню (пусть меня поправят знающие люди), контейнер - это атомарный объект в Аксапте.

другими словами, при любой попытке изменения контейнера, фактически происходит пересоздание контейнера. со всеми вытекающими последствиями.

насколько я помню, именно это и послужило причиной создания объектов-коллекций и причиной неразвития таких полезных структур как KeySum.

2.
контейнер - чисто аксаптовская структура, для которой нет аналога ни на .net., ни в SQL, ни в OLAP...
в связи с планами перевода всего и вся на .net, контейнеры будут все более более неприемлемым инструментом.

поэтому:
  • По возможности, не используйте контейнеры для хранения данных.
  • Если уж используете контейнер, постарайтесь минимизировать число модификаций контейнера

=================================
в связи с вышесказанным лучше:
* преобразовать контейнер в объект-коллекцию, например в set, (при преобразовании выполните проверку)
* (опционально для несортирующих коллекций) выполнить сортировку
* преобразовать объект-коллекцию обратно в контейнер.

причем в классе Global вроде уже есть функции преобразователи.
и если содержимое контейнера вам заранее известно и не требует проверки и не содержит одинаковых элементов, то лучше вместо своего алгоритма вызвать пару функций, что-то вроде
X++:
myContainer = set2con(con2set(myContainer)); // сортируем контейнер, содержащий индексы
(сейчас аксапты нет под рукой, чтобы проверить наличие именно этих функций)

Последний раз редактировалось mazzy; 11.01.2014 в 12:27.
Теги
контейнер, сортировка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Сортировка в гриде с двумя DataSource ViV DAX: Программирование 15 05.06.2014 15:55
Сортировка в Query в отчете Zlojbarsuk DAX: Программирование 7 27.03.2010 00:18
Сортировка в оборотно-сальдовой ведомости по поставщикам Silphidae DAX: Программирование 6 16.02.2010 15:02
FormListControl сортировка maximka DAX: Программирование 2 26.12.2008 13:44
Сортировка в гриде Pegiy DAX: Функционал 15 06.12.2006 08:21

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:47.