Для достижения sh того, что вы хотите, с помощью объекта Query
это сложно / необычно, и AX не предназначен для этого прямым способом и требует очень творческого решения.
Я бы, как правило, указал sh на написание чистого x++
запроса, поскольку я не верю, что LEFT
и LIKE
могут быть изначально объединены, особенно в запросе. Вы можете использовать *
в значении «like» в качестве опции.
Вы можете выполнить sh, используя выражений в диапазонах запросов каким-либо образом.
Если вы должны иметь запрос, я могу подумать, комбинируя View
, Computed Column
и Query
... и я не могу гарантировать, что он будет работать, но Я могу дать вам достаточно, чтобы у вас было что проверить. Некоторая информация в этом ответе довольно концентрированная, поэтому внимательно посмотрите на все, чтобы понять ее.
Создайте View
, добавьте приведенный ниже вычисляемый столбец, а затем добавьте его к Query
, как показано ниже. Для вычисляемого столбца необходимо добавить новое поле String
в представление и установить для свойства ViewMethod
имя метода. См. Здесь для получения дополнительной информации о добавлении Computed Columns
.
Computed Column
выполняет часть left(..., 17)
, и вы можете просмотреть представление для подтверждения.
Последнее part пытается присоединиться либо с помощью relation
(как показано ниже, но не выполняет sh * like
), либо с помощью выражения Value
, используя выражение, следуя ссылке выше. Вам может потребоваться создать пользовательское выражение в \Classes\SysQueryRangeUtil
. Вам нужно поэкспериментировать, чтобы проверить, работает ли он.
private static server str compColDescLeft()
{
#define.ViewName(InventJournalTableView)
#define.DataSourceName("InventJournalTable_1")
#define.FieldDescription("Description")
#define.LeftCount("17")
str sReturn;
str sLeftDesc;
DictView dictView;
dictView = new DictView(tableNum(#ViewName));
sLeftDesc = dictView.computedColumnString(#DataSourceName, #FieldDescription, FieldNameGenerationMode::FieldList, true);
sReturn = "left(" + sLeftDesc + ", " + #LeftCount + ")";
return sReturn;
}