|
![]() |
#1 |
Участник
|
Может кому понадобится.
Сегодня тоже столкнулись с подобной проблемой в форме InventTrans (4.0 SP2) при открытии по номенклатуре, по которой достаточно много проводок. Ошибка появлялась при активной прокрутке грида. Ничего из вышеперечисленного не помогало. Решение нашлось: http://www.programdoc.com/1318_10909_1.htm Суть сводится к тому, что в форме много кэшируемых дисплейных методов. А дисплейный метод оставляет курсор открытым. Закомментировали кэширование методов в Forms - InventTrans - Data Sources - InventTrans - Init(): X++: // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, pcsPrice)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, currencyCode)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, discAmount)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, discPercent)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, unit)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, inventVendCust)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, lineAmount)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, qtyUnit)); |
|
|
За это сообщение автора поблагодарили: sukhanchik (2), Logger (3), gl00mie (3). |
![]() |
#2 |
Участник
|
|
|
![]() |
#3 |
Участник
|
Я из-за этого дела переписал код в классе InventTransReference. Чтобы во всех формах не переписывать. Все перечисленные выше дисплейные методы дергают этот метод.
Axapta 3.0 SP5 X++: server static InventTransReference inventTransReference(inventTrans _inventTrans) { // SysGlobalCache cache = classFactory.globalCache(); // InventTransReference InventTransReference = cache.get(classStr(InventTransReference), funcname(), null); // // if (!inventTransReference || // inventTransReference.inventTrans().recId != _inventTrans.recId) // { // inventTransReference = InventTransReference::construct(_inventTrans); // cache.set(classStr(inventTransReference), funcname(), inventTransReference); // } // // return inventTransReference; // DEM от 28.01.2015 14:26:58 ---> // Из-за превышения по количеству открытых курсоров убрал кеш InventTransReference InventTransReference; ; inventTransReference = InventTransReference::construct(_inventTrans); return inventTransReference; // DEM от 28.01.2015 14:26:58 <--- } Последний раз редактировалось Ace of Database; 21.09.2015 в 13:54. |
|
|
За это сообщение автора поблагодарили: Logger (1). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|