Уважаемые участники axforum.info!
Никак не получается программно открыть форму строк журнала спецификации.
Делаю так:
Функция insertInventJour создает журнал и строку в ней и возвращает код журнала:
X++:
//формируем строку inventJournalTable.Description
descr = strfmt("к заказу %1", SalesTable.SalesId);
//ищем тип журнала спецификация
select firstonly inventJournalName where inventJournalName.JournalNameId == 'Спецификация';
//ищем журнал спецификации к этому заказу
select firstonly inventJournalTable where (inventJournalTable.JournalNameId == inventJournalName.JournalNameId) && (inventJournalTable.Description == descr);
//если не нашли, создаем журнал и строку в нем с приходом номенклатуры-спецификации
if (!inventJournalTable)
{
ttsbegin;
inventJournalTable.initFromInventJournalName(inventJournalName);
inventJournalTable.Description = descr;
inventJournalTable.isDocOutput = NoYes::Yes;
inventJournalTable.Dimension = SalesLine.Dimension;
inventJournalTable.insert();
ttscommit;
select firstonly inventTable where inventTable.ItemId == 'НОМ1';
ttsbegin;
inventJournalTrans.initFromInventJournalTable(inventJournalTable);
inventJournalTrans.initFromInventTable(inventTable);
inventJournalTrans.TransDate = today();
inventJournalTrans.Dimension = SalesLine.Dimension;
inventJournalTrans.insert();
ttscommit;
}
//возвращаем код журнала спецификации
ret = InventJournalTable.JournalId;
В основном коде:
X++:
inventJournalTableT = InventJournalTable::find(element.insertInventJour());
if(inventJournalTableT)
{
select inventJournalTransT where inventJournalTransT.JournalId == inventJournalTableT.JournalId;
args.record(inventJournalTransT);
args.parm(inventJournalTableT.JournalId);
frmInventJournalTrans = new MenuFunction(menuItemDisplayStr(InventJournalTransBOM), menuItemType::Display).create(args);
frmInventJournalTrans.run();
}
И получаю ошибку из класса JournalFormTrans о том, что необходим активный буфер.
Она вываливается из метода new
X++:
if (! formRun.args().caller() || ! formRun.args().dataset())
throw error(strfmt("@SYS22678",formRun.name()));
Можно ли как-то это обойти?
Версия Аксапты - 4 SP2