Цитата:
Сообщение от
S.Kuskov
Интересно было бы создать тестовый проектик
Попробуйте запустить следующий job(recId только свой подставьте

) и посмотреть в Журнале трассировки операторов SQL план запроса
X++:
static void Job17(Args _args)
{
InventJournalTrans inventJournaltrans;
InventDim inventDim;
InventTable inventTable;
InventItemBarcode inventItemBarcode;
;
ttsbegin;
select forupdate inventJournaltrans
where inventJournaltrans.RecId == 5637149414
join inventDim
where inventDim.inventDimId == inventJournaltrans.InventDimId
join inventTable
where inventTable.ItemId == inventJournaltrans.ItemId;
inventJournaltrans.CostAmount = 8933.72;
inventJournaltrans.update();
ttscommit;
}
У меня получился следующий план запроса:
UPDATE INVENTJOURNALTRANS SET COSTAMOUNT=8.93372E3,RECVERSION=702523288 WHERE (((DATAAREAID=N'mhv') AND (RECID=5637149414)) AND (RECVERSION=902287041))
Как видно CostAmount представлен в экспоненциальном виде и SQL воспринимает его как 8933.719999999999
Удалив из job таблицу Inventtable
X++:
static void Job17(Args _args)
{
InventJournalTrans inventJournaltrans;
InventDim inventDim;
InventTable inventTable;
InventItemBarcode inventItemBarcode;
;
ttsbegin;
select forupdate inventJournaltrans
where inventJournaltrans.RecId == 5637149414
join inventDim
where inventDim.inventDimId == inventJournaltrans.InventDimId;
inventJournaltrans.CostAmount = 8933.72;
inventJournaltrans.update();
ttscommit;
}
получим план запроса
UPDATE INVENTJOURNALTRANS SET COSTAMOUNT=?,RECVERSION=? WHERE (((DATAAREAID=?) AND (RECID=?)) AND (RECVERSION=?))