Сложная проблема источника данных в Dynamics AX
У меня есть сетка, которая отображает линии из таблицы. Теперь у меня есть эти два требования:
- Показывать только те строки, которые содержат значения в полях "час". Поле "час" является типом массива.
- Показать строки из проекта и его подпроекта
Моя проблема заключается в следующем: для удовлетворения требования № 1 мне нужно использовать оператор выбора в моем источнике данных, поскольку я не могу получить доступ к значению массива с помощью QueryBuildDataSource (это известное ограничение в Dynamics AX).
Но для удовлетворения требований № 2 мне нужно иметь два "существующих соединения", а в Dynamics AX это невозможно. Например, следующий код не будет работать:
select from table where
exists join tableChild where projectId = MyProjectId OR
exists join tableChild where parentProjectId = MyProjectId
Как кто-то может решить эту проблему?
2 ответа
Из приведенного вами примера оператора select может показаться, что нет необходимости иметь два существующих объединения. Одно существующее объединение с "ИЛИ" для двух возможных условий в его предложениях where может быть достаточным, конечно, вы все равно должны иметь некоторую связь между table и tableChild, чтобы объединение имело логический смысл.
select from table
exists join tableChild
where (tableChild.projectId = MyProjectId || tableChild.parentProjectId = MyProjectId)
Вы можете использовать значения массива в диапазонах запросов, предоставляя идентификаторы полей с помощью функции fieldID2Ext.
Вы можете построить вид и применить конфессии над ним.