Цитата:
Сообщение от
Logger
... Есть какой нибудь нормальный способ ?
Наиболее логичным способом помещения record в контейнер, как мне кажется является вариант, предложенный
DSPIC, использование функций
container
buf2Con(Common common) и static void
con2Buf(container c, Common common), по всей видимости они для этого и предназначены
Цитата:
Сообщение от
DSPIC
Есть 2 отличные функции у класса Global:
container
buf2Con(Common common)
static void
con2Buf(container c, Common common)
...
X++:
static void dspic(Args _args)
{
CustTable custTable;
container conCustTable;
;
select firstonly custTable;
conCustTable = buf2con(custTable);
changecompany ("DAT")
{
con2buf(conCustTable, custTable);
info (strfmt("%1", custTable.dataAreaId));
}
}
Однако стоить помнить, что функция Global \ container
buf2Con(Common common) в версиях AX 3.0(возможно только в некоторых, проверял на AX 3.0 SP 2, AX 3.0 SP 3 CU 1)
не работает(выпадает эксепшен), если у табличных переменных есть поля-массивы(т.е. выше описанный job работать не будет

)
Также в случае использования одной табличной переменной и функции xRecord.company(...) можно получить реальную компанию(однако, если в changeCompany("dat") вместо CustTable, использовать CustTable2, то в обоих случаях будет выведено "dat")
X++:
static void srf_test(Args _args)
{
CustTable custTable;
Container conCustTable;
;
select firstOnly custTable;
conCustTable = [custTable];
changecompany("dat")
{
custTable.clear();
custTable.data(conpeek(conCustTable, 1));
info(custTable.dataAreaId);
info(custTable.company());
}
}