Цитата:
Сообщение от
kgksoft
Всегда не хватало сортировки контейнеров в DAX.
0.
в алгоритме есть принципиальная ошибка - конейнер может содержать другие контейнеры. а также другие объекты, для которых отсутствует операция сравнения.
поэтому ваш алгоритм имеет очень ограниченное применение.
надо отдать должное функция less - прикольная.

но потенциально опасна runtime-ошибками.
1.
насколько я помню (пусть меня поправят знающие люди), контейнер - это атомарный объект в Аксапте.
другими словами, при любой попытке изменения контейнера, фактически происходит пересоздание контейнера. со всеми вытекающими последствиями.
насколько я помню, именно это и послужило причиной создания объектов-коллекций и причиной неразвития таких полезных структур как KeySum.
2.
контейнер - чисто аксаптовская структура, для которой нет аналога ни на .net., ни в SQL, ни в OLAP...
в связи с планами перевода всего и вся на .net, контейнеры будут все более более неприемлемым инструментом.
поэтому:
- По возможности, не используйте контейнеры для хранения данных.
- Если уж используете контейнер, постарайтесь минимизировать число модификаций контейнера
=================================
в связи с вышесказанным лучше:
* преобразовать контейнер в объект-коллекцию, например в set, (при преобразовании выполните проверку)
* (опционально для несортирующих коллекций) выполнить сортировку
* преобразовать объект-коллекцию обратно в контейнер.
причем в классе Global вроде уже есть функции преобразователи.
и если содержимое контейнера вам заранее известно и не требует проверки и не содержит одинаковых элементов, то лучше вместо своего алгоритма вызвать пару функций, что-то вроде
X++:
myContainer = set2con(con2set(myContainer)); // сортируем контейнер, содержащий индексы
(сейчас аксапты нет под рукой, чтобы проверить наличие именно этих функций)