02.07.2018, 10:16 | #1 |
Участник
|
Использование Like оператора в X++ SQL и кнопка перекомпилировать
Хотел сделать функцию которая подгружает лог компиляции и перекомпилирует его.
Но выяснил, что кнопка "Перекомпилировать всё" не перекомпилирует все объекты, а только некоторые. В классе SysCompilerOutput.reCompileElement: X++: likePath = SysCompilerOutput::buildLikePath('\\'); Дальше вызывается запрос: X++: while select forupdate tmpCompilerOutput group by UtilElementType, SysUtilElementName where tmpCompilerOutput.TreeNodePath like likePath { compileSetInsert(tmpCompilerOutput.TreeNodePath); } Вопрос: Какие элементы должны быть выбраны этим запросом в чём вообще его смысл - как отработает Like? Мне кажется что можно было бы заменить его на просто *. Ещё не совсем понятно если TreeNodePath не указан в group by, почему он использован внутри запроса и что в нём будет? |
|
02.07.2018, 12:07 | #2 |
Участник
|
Если мне не изменяет память, то
X++: like likePath Похоже ради этого все и делалось. Попробуйте заменить на *. На первый взгляд там нечего сломать. |
|
02.07.2018, 12:12 | #3 |
Участник
|
Немного разобрался, судя по всему "\\\\*" выбирает все элементы, но это не точно.
Но лог компиляции получающийся в результате многопоточной компиляции содержит не все поля TmpCompilerOutput, то есть поля UtilElementType вообще нет, оно пустое, а SysUtilElementName равно чему то вроде "\Data Dictionary\Tables" или "\Forms", а именно по ним идёт группировка, В результате получается, что оно компилирует по одной форме, одному классу, одной таблице и так далее. AX2012 R2. Лог обычной компиляции содержит все поля. |
|