|
![]() |
#1 |
Участник
|
Да просто проверить переменную на существования
X++: if (var_NET)
{
var = var_NET;
}
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
![]() |
#2 |
Боец
|
Цитата:
Сообщение от Raven Melancholic
![]() Эту ошибку не перехватить аксаптовким try/cath.
Но и просто присваивать объект CLR аксаптовской строке, надеясь на автоматическое приведение, просто не стоит, лучше прямо преобразовать. Например, в том же классе AifUtil в методе getClrErrorMessage хотя и знают, что там строка, но ей приводят при помощи CLRInterop::getAnyTypeForObject(...). Такие примеры раскинуты по многим местам AOT, так что Вам для корректности лучше вместо: X++: var = var_NET; X++: var = CLRInterop::getAnyTypeForObject(var_NET); Цитата:
Цитата:
А вот так пойдёт. X++: if(!CLRInterop::isNull(var_NET)) { var = var_NET; // <-- генерируется вот тут } |
|
![]() |
#3 |
Участник
|
А от такого написания будет эффект? Поможет избежать каких либо еще ошибок?
Если в исходном коде так пишут.. X++: if (!CLRInterop::isNull(var_NET)) { var = CLRInterop::getAnyTypeForObject(var_NET); // если эта строка будет записана так } |
|
![]() |
#4 |
Участник
|
В AX 2012 исключение var = var_NET; при условии что var_NET = null можно перехватить кодом ниже, можно просто пустой catch использовать, тоже перехватит.
X++: catch(Exception::CLRError) { error(strFmt('Environment variable %1 is not set or other CLR error', env)); return ''; } X++: catch { error(strFmt('Environment variable %1 is not set or other error', env)); return ''; }
__________________
Sergey Nefedov |
|
![]() |
#5 |
Участник
|
Заметил что в обоих случаях генерируется ошибка:
X++: var = CLRInterop::getAnyTypeForObject(var_NET); // тут var = var_NET; // тут |
|
|
![]() |
||||
Тема | Ответов | |||
Объект не имеет метода "mandatory" | 4 | |||
Как программно "выделить" объект AOT? Или про глюки на открытии формы поиска | 4 | |||
"LIKE" и "OR" в "qbds" | 14 |
|