![]() |
#5 |
Участник
|
Более простой способ воспроизвести баг.
Пусть у нас есть 2 лота из описания выше, выполняем для них такой код X++: // Запускать на сервере - в джоб поставить недостаточно, потому что джоб всегда на клиенте исполняется. // лучше поставить в статический метод какого то класса server static void test() { InventTransID InventTransID; Object Object; Object Object2; Qty grd_calcQty(InventTransId _inventTransId, boolean _disablecache, str _s) { InventTrans inventTrans; ; inventTrans = null; if (_disablecache) inventTrans.disableCache(true); select sum(qty) from inventTrans index hint TransIdIdx where inventTrans.inventTransId == _inventTransId && // inventTrans.StatusIssue >= StatusIssue::ReservPhysical // && inventTrans.StatusIssue <= StatusIssue::OnOrder (inventTrans.statusIssue == StatusIssue::ReservPhysical || inventTrans.statusIssue == StatusIssue::ReservOrdered || inventTrans.statusIssue == StatusIssue::OnOrder) ; info(strFMT("%3 DisableCache = %1 Количество %2", inventTrans.disableCache(), inventTrans.Qty, _s)); // здесь в плохом случае возвращает 0 для ЛОТ2. Если все в порядке то -5 } ; ttsBegin; InventTransID = "ЛОТ1"; // ЛОТ1 Количество 4 (2 физрезерв; 2 скомплектовано) Object = InventTrans::viewCacheInventTransId(InventTransId, true); // GRD_calcQty(InventTransId); InventTransID = "ЛОТ2"; // ЛОТ2 Количество 5 (5 физрезерв) GRD_calcQty(InventTransId, false, "Кеширование не отключали."); GRD_calcQty(InventTransId, true , "Отключили кеширование."); Object2 = InventTrans::viewCacheInventTransId(InventTransId, true); GRD_calcQty(InventTransId, false, "Кеширование не отключали. Создан RecordViewCache по второму лоту"); GRD_calcQty(InventTransId, true , "Отключили кеширование. Создан RecordViewCache по второму лоту"); ttsCommit; } Последний раз редактировалось Logger; 28.01.2008 в 14:02. Причина: подправил джоб |
|
Теги |
ax3.0 |
|
|