The universal enumerator framework for Microsoft Dynamics AX (Axapta)
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
ax2009
ax4
.gitattributes
.gitignore
CHANGELOG.md
LICENSE
README.md
build.ps1

README.md

SysEnumerators

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.

Пример использования SysEnumerators

SysEnumeratorExample03_Container

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) за вклад в данный проект.

Disclaimer

  • Названия классов и методов, иерархия и порядок вызовов в наборе классов будут по возможности сохраняться, но это не гарантируется - в будущих версиях SysEnumerators все может измениться.
  • Код в xpp-файлах конвертирован из xpo только для удобства использования человеком. Оригиналом является код в xpo-проектах, отличия между xpo и xpp всегда трактуются в пользу текста из xpo-проектов.
  • Проект выложен "как есть" под лицензией MIT: вы можете использовать данный код как угодно безо всяких отчислений, автор не дает никаких гарантий и не несет ответственности за возможный эффект от использования кода на проектах.

ChangeLog

Помощь проекту

Буду признателен за ваши замечания, предложения, советы в разделе Issues и Pull requests по проекту, а также в виде письма на адрес mazzy@mazzy.ru

Мазуркин Сергей (mazzy)