SysEnumerators - это набор классов на языке X++, который позволяет разработчику единообразно "пробежать" по:
- интервалу чисел;
- интервалу дат;
- элементам контейнера;
- элементам коллекций Аксапты (
array
,set
,map
,list
,struct
); - элементам
enum
; - элементам коллекций из .Net-пространства
System.Collections
(как с генериками, так и без них); - промаркированным на форме записям;
- записям
QueryRun
,Query
,select Table where...
; - записям из коллекций
RecordSortedList
,RecordLinkList
; - элементам
TreeNode
; - элементам коллекций Dict-классов;
- XML-элементам;
- файлам (
CommaIo
,AsciiIo
,BinaryIo
,TextIo
); - строкам, словам и regexp-токенам из
TextBuffer
; - и прочим системным коллекциям Аксапты.
Подробнее о SysEnumerators для Microsoft Dynamics AX 2009 можно почитать в каталоге ax2009.
container c = ['a', 'b', 1, 'd', systemdateget(), 'f'];
SysEnumerator se = SysEnumerator::newFromContainer(c);
while( se.moveNext() )
{
info(strfmt("%1", se.current()));
}
Больше примеров с описанием и скриншотами результатов можно найти в каталоге Examples.
Спасибо Ивану Захарову и Роману Долгополову (RDOL, db), на проекте которых я убедился что энумераторы реально снижают время разработки, а вопросы быстродействия энумераторов легко решаются после профилирования кода и выявления узких мест.
Спасибо Дмитрию Толстову (damn) за вклад в данный проект.
- Названия классов и методов, иерархия и порядок вызовов в наборе классов будут по возможности сохраняться, но это не гарантируется - в будущих версиях SysEnumerators все может измениться.
- Код в xpp-файлах конвертирован из xpo только для удобства использования человеком. Оригиналом является код в xpo-проектах, отличия между xpo и xpp всегда трактуются в пользу текста из xpo-проектов.
- Проект выложен "как есть" под лицензией MIT: вы можете использовать данный код как угодно безо всяких отчислений, автор не дает никаких гарантий и не несет ответственности за возможный эффект от использования кода на проектах.
Буду признателен за ваши замечания, предложения, советы в разделе Issues и Pull requests по проекту, а также в виде письма на адрес [email protected]
Мазуркин Сергей (mazzy)