![]() |
#1 |
Участник
|
Ошибка запроса типа Union в лукапе
DAX 2012 R3
версия приложения 6.3.5000.133 версия ядра 6.3.5000.138 Ошибка проявилась в стандартном функционале: при создании нового ресурса (Управление и учет по проектам/Обычный/Ресурсы проекта/Ресурсы). Если в форме создания в поле Рабочий ввести предварительный фильтр с использованием символа *, то при срабатывании лукапа возникает ошибка "Несоответствие числа полей в запросе типа UNION. Номер поля HcmWorkerCubeDimension_1 отличается от номера поля HcmWorkerCubeDimension_2". При этом вызов того же лукапа из поля, не содержащего *, проходит штатно. При попытке отфильтровать появившийся список, используя этот же текст с *, ничего предосудительного не происходит. Как выяснилось в ходе экспериментов, чтобы воспроизвести такое поведение, достаточно на пустую форму добавить StringEdit, перекрыть у него lookup примерно таким образом: X++: public void lookup() { Query query = new Query(); QueryBuildDataSource qbds_1; QueryBuildDataSource qbds_2; SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(ProjTable), this); query.queryType(QueryType::Union); qbds_1 = query.addDataSource(tableNum(ProjTable)); qbds_2 = query.addDataSource(tableNum(ProjTable)); qbds_2.unionType(UnionType::Union); sysTableLookup.parmQuery(query); sysTableLookup.addLookupField(fieldNum(ProjTable, ProjId), true); sysTableLookup.addLookupField(fieldNum(ProjTable, Name)); sysTableLookup.performFormLookup(); } В таком примере ошибочное поведение лукапа воспроизводится чуть более, чем полностью. Ещё нюанс, трассировка запросов показывает, что в ошибочной ситуации запрос на SQL не отправляется. Ядро само видимо решает, что что то не так и генерирует ошибку. Хочу спросить у уважаемого сообщества, сталкивался ли кто нибудь с подобным? Есть ли сборки DAX 2012, на которых описанная ситуация не происходит? И есть ли у кого нибудь мысли, что же тут может происходить, и как с этим
__________________
Здесь могла быть Ваша реклама! |
|
|
|