Цитата:
Сообщение от
fed
Опыт показал, что если в классе создать переменную типа tempDB, положить туда данные, потом FormDataSource прикрепить к этому же инстанцу временной таблицы через myDataSource_ds.cursor().linkPhysicalTableInstance(MyCalculationClass.tempDbBuffer()), а потом вызвать для исходных табличных переменных из MyCalculationClass метод Dispose(), то последствия бывают самые интересные и не вполне предсказуемые. В том числе иногда падает Productive AOS
...
В общем - похоже что после linkPhysicalTableInstance() вызывать Dispose для табличных переменных просто нельзя.
P.S. D365FO. Но я подозреваю что в DAX2012 грабли аналогичной конструкции.
Да, совсем недавно на 2012 с этим столкнулся.
Правда у меня падает не АОС, а клиент и не через некоторое время, а практически сразу при закрытии формы.
Но и кейс немного другой, я вызываю linkPhysicalTableInstance не на датасорсе, а наоборот, передаю курсор датасорса и его прикрепляю к локальной переменной:
X++:
public void inventToShipPrepare(
ShipmentJournalRequestMap_OVK _journalRequest,
ShipmentInventToShipMap_OVK _inventToShip
)
{
ShipmentInventToShipMap_OVK inventToShip;
;
inventToShip = _inventToShip.emptyRecord();
if (_inventToShip.isTempDb())
{
inventToShip.linkPhysicalTableInstance(_inventToShip);
}
...
// TODO: AKlim 12.10.2022 Попробовать разобраться в причине падения клиента
// Пока освобождение закомментировано, так как падает клиент при закрытии формы
/*
if (_inventToShip.isTempDb())
{
inventToShip.dispose();
}
*/
}