2015-12-29 2 views
1

Чтобы создать метод просмотра для создания вычисляемого столбца, можно использовать код, как это:Dynamics AX Programatically Обратитесь к полей запроса в режиме

private static server str createMySqlScript() 
{ 
    str cellName = SysComputedColumn::returnField(tableStr(MyViewName), identifierStr(MyDataSourceName), fieldStr(TableName, ColumnName)); 
    return strFmt('LEFT(%1, 5)', cellName); 
} 

Работает отлично подходит для обычных представлений, с регулярными источниками данных.

Однако при использовании представления с источником запроса вместо традиционных источников данных вся вещь разваливается.

On the first line: "Stack trace: The method has been called with an invalid number of parameters." 

Кто-нибудь знает, как назвать имя поля запроса вместо поля источника данных в представлении?

+0

У вас есть * UNION * view? – Matej

+0

В запросе, на который ссылается представление, используется UNION. Изменилось ли это так, как вы называете метод returnField()? – Brad

ответ

0

Код returnField гласит:

public static client server str returnField(TableName _viewName, str _dataSourceName, FieldName _fieldName) 
{ 
    DictView dictView = new DictView(tableName2id(_viewName)); 
    return dictView.computedColumnString(_dataSourceName ,_fieldName, FieldNameGenerationMode::FieldList); 
} 

Второй аргумент метода должен ссылаться на допустимое имя источника данных:

Имя источника данных на представлении, который содержит поле, которое значение используется как возвращаемое значение.

Также для запроса объединения он должен быть первым источником данных в запросе. По умолчанию добавляются имена источников данных запроса и суффикс _1, во втором аргументе должно быть указано полное имя источника данных, включая суффикс. См. Представление для правильного названия; поля вида будут иметь это имя в свойстве Datasource.

Остерегайтесь того, что встроенная функция identifierStr не имеет возможности проверить входной аргумент в отличие от других функций, таких как tableStr.

0

Для представлений на основе союза запросов, целочисленный параметр передается методам вычисленных столбцов:

private static server str createMySqlScript(int iDatasource) { 
str cellName = SysComputedColumn::returnField(tableStr(MyViewName), identifierStr(MyDataSourceName), fieldStr(TableName, ColumnName)); 
return strFmt('LEFT(%1, 5)', cellName); 
} 

Если вы не определили этот параметр, странные вещи случаются ... См https://msdn.microsoft.com/en-us/library/gg846293.aspx