![]() |
#1 |
Участник
|
![]()
ПОМОГИТЕ ПОЖАЛУЙСТА СРОЧНО!
Как пройтись по таблице? заменить значения полей со строк-го на enum? |
|
![]() |
#2 |
сибиряк
|
проитись по таблице можно так :
Table myTable; ; while select forUpdate myTable { myTable.myField = MyEnum::newValue; myTable.update(); } вот только что такое "строк-го" ?
__________________
С уважением, Вячеслав. |
|
![]() |
#3 |
Участник
|
тип String
|
|
![]() |
#4 |
сибиряк
|
тогда придется создать другое поле, и изменить его значения в соответствии со стринговым.
__________________
С уважением, Вячеслав. |
|
![]() |
#5 |
Участник
|
Я нашла (str2enum), а как обявить эту MyEnum
Спасибо |
|
![]() |
#6 |
Administrator
|
Надо создать Enum с соответствующим именем в Base Enums в AOT.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#7 |
Участник
|
Напиши пожалуйста пример кода создания своего MyEnum с использованием Base Enum.
т.е. void .... { ???? MyEnum; .... } |
|
![]() |
#8 |
сибиряк
|
static void Job32(Args _args)
{ TreeNode treeNode; xInfo xInfo = new xInfo(); ; treeNode = xInfo.rootNode(); treeNode = treeNode.AOTfindChild("Data Dictionary"); treeNode = treeNode.AOTfindChild("Base Enums"); treeNode.AOTadd("MyNewEnum"); treeNode.AOTsave(); treeNode = treeNode.AOTfindChild("MyNewEnum"); treeNode.AOTadd("element1"); treeNode.AOTadd("element2"); treeNode.AOTsave(); } вот так можно создать свой Enum (это если Вам лень добавить его вручную в АОТ) ![]()
__________________
С уважением, Вячеслав. |
|
![]() |
#9 |
Administrator
|
Если будет время, рекомендую прочитать раздел руководства разработчика Axapta Language Reference/Data types/Enums (axdvgus.chm::/LANG/Data_types/LANG_Enum.htm)
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#10 |
Administrator
|
Цитата:
Изначально опубликовано slava
вот так можно создать свой Enum (это если Вам лень добавить его вручную в АОТ) ![]() ![]()
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#11 |
Участник
|
Не могу разобраться вот в чем.
Надо в таблице SalesTable поменять поле SalesStatus на значение, которое в enumуреции SalesStatus имеет метку 'Открытый заказ' Т.е. проблема в том, что я не могу из метки 'Открытый заказ' получить значение 1. Т.е. как сопоставить метку и значение в enum? Какой функцией? |
|
![]() |
#12 |
сибиряк
|
2Maxim :
Да я понимаю ![]() 2Natasha : а какое значение имеет это поле сейчас ? SalesStatus::... ? Кстати, лучше действительно прочитайте о Enum'ах
__________________
С уважением, Вячеслав. |
|
![]() |
#13 |
Administrator
|
Цитата:
Изначально опубликовано Natasha
Т.е. как сопоставить метку и значение в enum? Какой функцией? str2enum по типу Enum'а и значению метки возвращает переменную этого типа с соответствующей меткой. Например PHP код:
В принципе, enum'ы можно рассматривать и как значения типа int. Например, если вы сделаете int2str(SalesStatus::Backordered), получите так желаемую вами единицу.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#14 |
Участник
|
Видимо степень моих незнаний так велика, но прошу снисхождения.
Далее идет текст Job, который выводит 'Открытый заказ' вместо 1, а если вместо print SS использовать info (SS), то ошибка при компиляции. ПОЧЕМУ? static void Sales(Args _args) { SalesStatus _SS; ; SS = str2enum(SS,'Открытый заказ'); print SS; //info (SS); } |
|
![]() |
#15 |
Administrator
|
print автоматически выводит как раз label. Следующие два фрагмента кода эквивалентны:
PHP код:
PHP код:
![]() PHP код:
PHP код:
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#16 |
Участник
|
2Maxim Gorbunov
> В принципе, enum'ы можно рассматривать и как значения типа int. Например, если > вы сделаете int2str(SalesStatus::Backordered), получите так желаемую вами единицу. Попробуйте сделать такой Job и посмотрите на сообщение компилятора, у меня пишет "Перечень не существует". static void Sales(Args _args) { SalesStatus _SS; ; print int2str(SS::Backordered); } |
|
![]() |
#17 |
Administrator
|
Компилятор всегда прав
![]() Дело в том, что _SS - это переменная. SalesStatus::Backordered - константа. Написать _SS::Backordered нельзя. Такой синтаксической структуры в X++ просто нет. Варианты написания того, что Вы хотите:
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#18 |
NavAx
|
Надо
print int2str(SalesStatus::Backordered);
__________________
С уважением, Игорь Ласийчук. |
|
![]() |
#19 |
Участник
|
СПАСИБО ВСЕМ, ВСЕ ПОЛУЧИЛОСЬ!!!
|
|
![]() |
#20 |
Administrator
|
Да, кстати, по поводу сообщения компилятора. Его смысл следующий. Обнаружив лексему SS::Backordered компилятор пытается найти Base Enum (тип!!!) с именем SS. Не находя его, он сообщает, что "перечень не существует". "Перечень" - это так "Enum" у нас перевели
![]()
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|