Доброго времени суток.
Во вложении мини-проект(может кому еще пригодится), который позволит автоматически создавать номерную серию для существующего модуля.
Как пользоваться :
Выбираем
Extended Data Type, и вызываем
контекстное меню\Add-ins\Auto Create Number Sequence Reference
Задаем следующие параметры :
1. Модуль, для которого создается номерная серия
2. Является ли номерная серия непрерывной?(опционально)
3. Создавать ли статический метод на таблице параметров?(опционально)
Параметров немного, остальные по-умолчанию, если нужно, то думаю доработать будет не сложно.
Что делается :
1. В метод
loadModule класса
numberSequenceReference_<Module> автоматически добавится нужный код.
2. В случае если нужно, автоматически создает статический метод на
таблице
<Module>Parameters, возвращающий ссылку на номерную серию.
Также во вложеном проекте, есть следующие мини dev-tools :
1. Для классов (
Classes\Add-ins\Extended By) - показывает классы-потомки для указанного класса
2. Для проектов(
Project\Add-ins\Compile All Project) - позволяет откомпилировать все объекты проекта, не открывая проект в новом окне
3. Для узла Classes(
Classes\Add-ins\Auto Create Template RunBase) - создает класс-наследник
RunBase\RunBaseBatch, также создается Menu Item для нового класса (опционально)
Проект импортировать аккуратно, изменен макрос
xppTexts, затронуты методы системных классов, ниже их список :
X++:
SysContextMenu\verifyItem
ClassBuild\addSourceToEndMethod
Global\pickEnumValue
xppSource\beginBlock
xppSource\constructMethod
xppSource\constructMethod
xppSource\endBlock
xppSource\endLine
xppSource\getSource
xppSource\initDefaultIndentColumns
xppSource\mainMethodRunBase
xppSource\simpleLine
После импорта проекта Menu Items нужно закинуть в
SysContextMenu.
Тестирование мини dev-tools производилось на DAX 4.0.
Вопросы к знатокам :
Почему в
NumberSeqModule разные элементы имеют одинаковые метки ?
Например,
NumberSeqModule::Ledger и
NumberSeqModule::Asset имеют метку
General Ledger.(В результате этого, если создавать контрол
typeId(NumberSeqModule) возникает путаница насчет модулей

)
Почему поле
Module в таблице
NumberSequenceReference
имеет тип
Integer, а не
NumberSeqModule ?
offtopic: В
Global\PickEnumValue был обнаружен баг, проявляется в любой из версий
AX :
X++:
...
for (i=1;i <= dictEnum.values(); i++)
...
Такой код приводит к тому, что значение енума
0 теряется, должно быть :
X++:
...
for (i=0;i <= dictEnum.values(); i++)
...
Также в данном методе есть небольшая помарка :
X++:
...
formRun.choices(names, #ImageClass);
...
по идее логичнее использовать картинку
#ImageBaseEnumElement, т.е.
X++:
...
formRun.choices(names, #ImageBaseEnumElement);
...