Если кому интересно, я накопала в чем проблема, вот ток как лечить - ума не приложу, тк мне кажется, это баг
Все дело в коде класса VersioningPurchaseOrder метод archivePurchLine, в самом конце вызывыается такое дело :
X++:
purchLine.skipDataMethods(true);
purchLine.skipDatabaseLog(true);
update_recordset purchLine
setting IsModified = NoYes::No
where purchLine.PurchId == purchTable.PurchId
&& purchLine.IsModified
&& purchLine.InventTransId != skipInventTransId;
Все работает хорошо. если я это дело комменчу.
Дело в том,что мне кажется, это куски того, что должно вызываться при галке, упомянутой SRF , но 1) у нас она не стоит 2) в коде нет никаких проверок на какие-либо парметры и настройки (ну или я не вижу). Стек вызовов у меня такой
X++:
[s] \Classes\VersioningPurchaseOrder\archivePurchLine 99
[s] \Classes\VersioningPurchaseOrder\archiveCurrentVersion 28
[s] \Classes\VersioningDocument\change 40
[s] \Classes\VersioningPurchaseOrder\change 26
[s] \Classes\PurchLineType\updatePurchTable 11
[s] \Classes\PurchLineType\update 79
[s] \Classes\PurchLineType_Purch\update 38
[s] \Data Dictionary\Tables\PurchLine\Methods\update 17
То есть, подтверждается теория S.Kuskov о том, что обновляется не тек запись, а другие, кот присутствуют в выборке.
Вопрос вечный : Кто виноват и что теперь делать???