|
![]() |
#1 |
MCITP
|
![]() Цитата:
Ну по крайней мере я бы использовал рекурсию... OFFTOP: не знал, что PL\SQL Formatter можно к Х++ прикрутить... ![]()
__________________
Zhirenkov Vitaly Последний раз редактировалось ZVV; 18.07.2012 в 15:44. Причина: синтаксис |
|
|
За это сообщение автора поблагодарили: MikeR (2). |
![]() |
#2 |
MCT
|
Коллеги, вы не поверите, но суть в том, что цикл вообще не нужен.
![]() X++: WHILE(TRUE) Я подумал, что это очевидно.....
__________________
Axapta book for developer |
|
![]() |
#3 |
Участник
|
Цитата:
![]()
__________________
С уважением, Александр. |
|
![]() |
#4 |
MCITP
|
![]() Цитата:
Он нужен для того что бы запускать и следующие итерации тоже, а не только первую. Цикл будет выполнятся, кока не закончится дерево (не будет парента) и сработает брэйк. Ну собственно такая эмуляция рекурсии...
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
![]() |
#5 |
MCT
|
Собственно да, человек запускает перебор (чтобы более корректно было), но в других местах это вообще не требуется.
![]() Используется конструкция X++: while select forupdate ... {} X++: while select { ttsbegin; select forupdate ttscommit; }
__________________
Axapta book for developer |
|
![]() |
#6 |
MCT
|
Кстати, а действительно кто-нибудь пишет рекурсию через
X++: while (true)
__________________
Axapta book for developer |
|
![]() |
#7 |
Участник
|
Цитата:
Сообщение от MikeR
![]() Собственно да, человек запускает перебор (чтобы более корректно было), но в других местах это вообще не требуется.
![]() Используется конструкция X++: while select forupdate ... {} X++: while select { ttsbegin; select forupdate ttscommit; } Вы хотите поломать целостность данных?
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#8 |
MCT
|
X++: table t1,t2; ttsbegin; while select t1 { select forupdate t2 where t2.recid == t1.RecId; ..... t2.update(); } ttscommit;
__________________
Axapta book for developer Последний раз редактировалось MikeR; 18.07.2012 в 16:45. |
|
![]() |
#9 |
Участник
|
Цитата:
В чем в этом варианте большая корректность перед первоначальным?
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#10 |
MCITP
|
![]() Цитата:
Сообщение от MikeR
![]() Собственно да, человек запускает перебор (чтобы более корректно было), но в других местах это вообще не требуется.
![]() Используется конструкция X++: while select forupdate ... {} X++: while select { ttsbegin; select forupdate ttscommit; } ![]()
__________________
Zhirenkov Vitaly |
|
![]() |
#11 |
Axapta
|
Почему? По-моему, это такой обход дерева. И без "while true" работать не будет. При каждой итерации меняется InvGUID и цикл прервется только тогда, когда не найдется parent. И "while true" при таком написании кода очень даже нужен. Понятно, что код можно переписать иначе.
|
|
![]() |
#12 |
MCT
|
Да дело в том, что не для всех это понятно.
![]()
__________________
Axapta book for developer |
|
![]() |
#13 |
Участник
|
ИМХО, рекурсию лучше организовывать через отдельно написанную функцию внутри метода.
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 18.07.2012 в 16:33. Причина: 111 |
|
|
|