Показать сообщение отдельно
Старый 12.05.2010, 09:58   #1  
AGRESSOR is offline
AGRESSOR
Сам.AX
Аватар для AGRESSOR
Самостоятельные клиенты AX
 
28 / 12 (1) ++
Регистрация: 26.04.2010
Адрес: Тюмень
? Открытие формы строк журнала спецификации
Уважаемые участники 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