|
![]() |
#1 |
Участник
|
Особенности работы X++ и CIL
Добрый день!
При реализации сервиса в Dynamics AX 2012, внутри которого идет работа со стандартными классами, я нашел некоторую особенность. Код на Х++ и CIL работает по-разному: X++: container emptyFields; ; if (! _rec.DocumentNumber) { emptyFields += "@SYS8434"; } if (! _rec.DocumentDate) { emptyFields += "@SYS2587"; } if (! _rec.PayerAccount) { emptyFields += "@GLS100568"; } if (! _rec.PayeeAccount) { emptyFields += "@GLS100577"; } if (!_rec.AmountCur) { emptyFields += "@SYS860"; } if(emptyFields) { // даже если emptyFields пустое, в CIL вызывает исключение throw error(strFmt("@GLS115341", con2Str(emptyFields, #comma))); } |
|
![]() |
#2 |
Участник
|
X++: if (conlen(emptyFields) > 0)
{
...
} |
|
![]() |
#3 |
Участник
|
|
|
![]() |
#4 |
Участник
|
Прям весь?
![]()
__________________
Ivanhoe as is.. |
|
![]() |
#5 |
Участник
|
Утрирую, конечно, но как минимум проверять надо теперь весь.
Не писал никогда, бизнесу функционал нужен "уже вчера", а МС когда выпустят свои обновления? |
|
![]() |
#6 |
Участник
|
А зря. Обычно система работает довольно быстро, и хотфикс получают в короткие сроки - и тогда "все тестировать" не придется.
|
|
![]() |
#7 |
Участник
|
А можно подробнее, как это "писать код на CIL"?
__________________
Ivanhoe as is.. |
|
![]() |
#8 |
Участник
|
|
|
![]() |
#9 |
Участник
|
|
|
![]() |
#10 |
Участник
|
|
|
![]() |
#11 |
Участник
|
![]() ldc.i4.0 bne.un.s 004a ldc.i4 0x5182 stloc.0 br.s 004b nop ldloc.0 ret |
|
|
За это сообщение автора поблагодарили: EVGL (1). |
![]() |
#12 |
Участник
|
Обычно пишем на X++, есть известные ограничения (https://msdn.microsoft.com/EN-US/library/hh397320.aspx), а также неявные преобразования типов. В целом все предсказуемо и понятно, поддерживать легче. Переходить на C#, мне кажется, стоит только в случае ожидаемого большого ускорения кода или когда бОльшая часть Аксы сама перейдет на C#.
На практике, нововведения с внешними библиотеками в AX вызывают огромные лишние телодвижения (планирование мощности в сводном, расчеты в TMS), как в плане понять "как оно работает", так и в плане "а как это поменять?".
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: ski (1). |
![]() |
#13 |
Участник
|
Цитата:
Сообщение от Ivanhoe
![]() Обычно пишем на X++, есть известные ограничения (https://msdn.microsoft.com/EN-US/library/hh397320.aspx), а также неявные преобразования типов. В целом все предсказуемо и понятно, поддерживать легче. Переходить на C#, мне кажется, стоит только в случае ожидаемого большого ускорения кода или когда бОльшая часть Аксы сама перейдет на C#.
На практике, нововведения с внешними библиотеками в AX вызывают огромные лишние телодвижения (планирование мощности в сводном, расчеты в TMS), как в плане понять "как оно работает", так и в плане "а как это поменять?". |
|
![]() |
#14 |
NavAx
|
Забавный вопрос. Конечно же используем X++ И конечно же он компилируется в CIL.
__________________
Isn't it nice when things just work? |
|
|
|