|
06.06.2010, 18:51 | #1 |
Участник
|
Цитата:
Сообщение от propeller
Запись эта находится в консолидирующей компании.
Ну и "код в студию". Подробности опусти, начни с места changeCompany, заполение полей, за исключением ключевых опусти, приведи только ключевые поля и места, где заполняются ключевые поля. При этом покажи как обнуляются переменные при смене компании (то есть, есть ли конструкции типа custVend = null и т.п.) |
|
06.06.2010, 19:10 | #2 |
Участник
|
Кстати. Для Ax30 была рекомендация при смене компании обнулять переменную, то есть, делать что-то подобное:
X++: changeCompany('XXX') { { custTable = null; } X++: changeCompany('XXX') { { custTable = null; custTable.disabeCash(true); } После этого взял в привычку после переключения компаний запрещать кеширование. В нашем коде нет проблем, а в стандартном делам это по мере обнаружения проблем. Так что, залезь в код импорта и вставиь в нужные места для переменной записи перед её заполнением .disableCash(true). |
|
06.06.2010, 19:25 | #3 |
Участник
|
Для примера, работал примерно такой код:
X++: InventTrans inventTrans;
InvenTrans inventTransNew;
InventTransId transId = 'Скл000001'; X++: select firstOnly inventTrans where inventTrans.InventTransId == transId; if (inventTrans ) { changeCompany('BBB') { inventTransNew = null; select firstOnly inventTransNew where inventTransNew.InventTransId == transId; } } Если же запретить кэш: X++: select firstOnly inventTrans where inventTrans.InventTransId == transId; if (inventTrans ) { changeCompany('BBB') { inventTransNew = null; inventTransNew .disableCach(true); select firstOnly inventTransNew where inventTransNew rans.InventTransId == transId; } } Так что начиная с DAX4.0 затим нужно следить не только в своем коде, но и в стандартнм. Последний раз редактировалось Raven Melancholic; 06.06.2010 в 19:28. |
|
07.06.2010, 09:36 | #4 |
Участник
|
Цитата:
Сообщение от Raven Melancholic
Причем, обнаружил эту особенность на таблице InventTrans, которая вообще не кэшируется! Получилось так, что в результате работы механизма Интеркомпани - получлось так, что лот в одной компании (по которому только что был произведен поиск, совпал с лотом в другой компании, для которой ищем лот). Если в одной компании нашли лот, то после переключения на другую компанию этот лот не ищется, а возвращается запись из первой компании!!!
После этого взял в привычку после переключения компаний запрещать кеширование. В нашем коде нет проблем, а в стандартном делам это по мере обнаружения проблем. Так что, залезь в код импорта и вставиь в нужные места для переменной записи перед её заполнением .disableCash(true). Судя по описанным симптомам, могло повлиять вот это : Глюки RecordViewCache Правда у меня все это воспроизводилось в Ax 3.0 Для 4-ки не проверял. |
|
Теги |
changecompany, импорт данных, кэш |
|
|