Цитата:
Сообщение от
kornix
X++:
static void testExport(Args _args)
{
XMLDataExport dataExport;
EmplTable emplTable;
QueryBuildDataSource qbds;
QueryRun qr;
Query query;
;
query = new query();
qbds = query.addDataSource(tablenum(EmplTable));
qbds.addRange(fieldnum(Empltable, EmplId)).value('10000');
qr = new queryRun(query);
dataExport = new XMLDataExport('');
dataExport.doExport(qr);
}
В результате вываливается ошибка: "Неправильный тип аргумента функции"

Добрый день!
Ошибка вылетает видимо из-за того, что в таблице EmplTable есть поле типа 'массив' вещественных чисел (workingHours (EDT HRMworkingHours)), например, если взять табличку InventTable - то все ок, трассировки стека не будет.
Видимо не большая ошибка в данном классике есть, а именно в методе writeRecord вместо
X++:
// Array field. Traverse the elements
for (arrayIndex = 1; arrayIndex <= fieldObject.arraySize(); arrayIndex++)
{
result += fieldName + ' offset="' + int2str(arrayIndex) + '">'
+ global::XMLString(record.(fieldList.field(fieldNo)), fieldObject.baseType(), _indent + 8)
+ '</Table:Field>\n';
}
нужно написать следующее :
X++:
// Array field. Traverse the elements
for (arrayIndex = 1; arrayIndex <= fieldObject.arraySize(); arrayIndex++)
{
result += fieldName + ' offset="' + int2str(arrayIndex) + '">'
//srf -->
//+ global::XMLString(record.(fieldList.field(fieldNo)), fieldObject.baseType(), _indent + 8)
+ global::XMLString(record.(fieldId2Ext(fieldList.field(fieldNo), arrayIndex)), fieldObject.baseType(), _indent + 8)
//srf <--
+ '</Table:Field>\n';
}
P.S. Данный класс выводит информацию в инфолог, поэтому, если нужно, чтобы вывод был в файл, то надо дорабатывать метод output этого же класса.