Показать сообщение отдельно
Старый 02.07.2018, 10:16   #1  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Использование Like оператора в X++ SQL и кнопка перекомпилировать
Хотел сделать функцию которая подгружает лог компиляции и перекомпилирует его.
Но выяснил, что кнопка "Перекомпилировать всё" не перекомпилирует все объекты, а только некоторые.
В классе SysCompilerOutput.reCompileElement:
X++:
likePath = SysCompilerOutput::buildLikePath('\\');
в результате чего переменная likePath становится равной "\\\\*"(Четыре бэкслеша и звёздочка).

Дальше вызывается запрос:

X++:
    while select forupdate tmpCompilerOutput
        group by UtilElementType, SysUtilElementName
        where tmpCompilerOutput.TreeNodePath like likePath
    {
        compileSetInsert(tmpCompilerOutput.TreeNodePath);
    }
Который отбирает некоторые элементы из лога компиляции, которые будут перекомпилироваться. Но не тот где ошибка есть.

Вопрос: Какие элементы должны быть выбраны этим запросом в чём вообще его смысл - как отработает Like?

Мне кажется что можно было бы заменить его на просто *.

Ещё не совсем понятно если TreeNodePath не указан в group by, почему он использован внутри запроса и что в нём будет?