Ax2009. Как передать в новую нить (Thred) содержимое временной таблицы?
У меня пока единственная идея - это конвертация содержимого таблицы в нечто более примитивное. Например, в контейнер через buf2con() / con2buf(). Но, может есть варианты без конвертации?
PS: GlobalCache - не работает, поскольку в новом Thread получаю чистый (новый) GlobalCache
Пока работаю так:
X++:
// Вызов Thread
void run()
{
Thread thread;
Container conHeader;
;
while select headerData
{
conHeader += [global::buf2con(headerData)];
}
thread = new Thread();
thread.setInputParm([conHeader]);
thread.removeOnComplete(true);
thread.run(classnum(MyClass), staticmethodstr(MyClass, runThread));
thread.waitUntilSignaled();
infolog.import(thread.getOutputParm());
}
// Обработка
static void runThread(Thread _thread)
{
container packedArgs;
container conHeader;
container conValue;
int nextI;
MyClass report;
TmpTable headerData;
;
report = new MyClass();
packedArgs = _thread.getInputParm();
conHeader = conPeek(packedArgs, 1);
for (nextI = 1; nextI <= conLen(conHeader); nextI++)
{
conValue = conPeek(conHeader, nextI);
global::con2buf(conValue, headerData);
headerData.insert();
}
// Метод через setTmpData() актуализирует временную таблицу в контексте класса
report.setHeaderData(headerData);
// Выполнение
report.run();
_thread.setOutputParm(infolog.copy(1,infolog.num()));
}