Цитата:
Сообщение от
SRF
offtopic: В
Global\PickEnumValue был обнаружен баг, проявляется в любой из версий
AX :
X++:
...
for (i=1;i <= dictEnum.values(); i++)
...
Такой код приводит к тому, что значение енума
0 теряется, должно быть :
X++:
...
for (i=0;i <= dictEnum.values(); i++)
...
Нет, Вы не правы - значение enum'а 0 не теряется .
Там идет проход по индексу enum'а, а затем уже по индексу инициализируется конкретное числовое значение enum'а.
X++:
for (i=1;i<=dictEnum.values();i++)
{
value = dictEnum.index2Value(i);
P.S.
При редактировании метода loadModule() у наследников NumberSequenceReference определение наименования переменной ошибочно, ввиду неправильного определения конца строки по символу ";" - strscan() ищет по
подстроке от полного исходника, а начало поиска установлено на индекс относительно
полной строки исходника. В результате поиск происходит где-то далеко за обявлением искомой переменной. В рабочем варианте выглядит так :
X++:
if (methodInfo)
{
positionVarTableStart = strScan(methodInfo.getSource(), tableStr(NumberSequenceReference), 1, strLen(methodInfo.getSource()));
if (positionVarTableStart)
{
positionVarTableEnd = strScan(subStr(methodInfo.getSource(), positionVarTableStart, strlen(methodInfo.getSource())), ';', 1, strLen(methodInfo.getSource()));
positionVarTableEnd += positionVarTableStart;
if (positionVarTableEnd)
{
positionVarTableStart += strlen(tableStr(NumberSequenceReference));
return strLRTrim(subStr(methodInfo.getSource(), positionVarTableStart, positionVarTableEnd - positionVarTableStart - 1));
}
}
}
P.P.S.
Кому б из "китайских пионеров" гвоздь в голову вбить за слой sys у механизма номерных серий ?
Отвратительно !