Цитата:
Сообщение от
MikeR
5 Корректный код
X++:
while select ItemId
from salesLine
{
select firstOnly forUpdate ItemType, ItemBuyerGroupId
from inventTable
where inventTable.ItemId == salesLine.ItemId;
If (inventTable && (inventTable.ItemType == InventItemType::Item))
{
ttsBegin;
inventTable.ItemBuyerGroupId = ;
inventTable.update();
ttsCommit;
}
}
И все же насколько обоснованно выбирать буфер для обновления (forUpdate) ВНЕ транзакции (ttsbegin…ttscommit)? Типа код оптимизирован для уменьшения блокировок путем перемещения tts* ?
Что мешает при той же оптимизации выбирать внутри транзакции? Не знаю, у меня глаза режет от такого.
Почему бы не так:
X++:
while select ItemId
from salesLine
{
select firstOnly ItemType, ItemBuyerGroupId
from inventTable
where inventTable.ItemId == salesLine.ItemId;
If (inventTable && (inventTable.ItemType == InventItemType::Item))
{
ttsBegin;
[B]inventTable.forupdate(true);[/B]
inventTable.ItemBuyerGroupId = ;
inventTable.update();
ttsCommit;
}
}
Я возможно не прав, но глаза