05.02.2009, 19:26 | #11 |
MCITP
|
Поехали дальше....
2 на мой взгляд бага на 4-ке сп2 с нашей локализацией (восточная европа), слои GLS & GLP. (На 2009 локализации пока не видел, так что не знаю как там... Может ещё не поздно предупредить ) Таблицы PurchLine & SalesLine. Для начала метод PurchLine.delete() (та же картина, только вид сбоку, наблюдается и в SalesLine.insert() и в SalesLine.update() - но там касается только братьев-поляков ) X++: public void delete(boolean _showInfoDelReserv = true, boolean deletePBA = true) { PurchLineType purchLineType; ; purchLineType = this.type(); purchLineType.delete(_showInfoDelReserv, deletePBA); TaxWorkRegulation::deleteRegulation_W(this); } Теперь перейдём к методу SalesLine.delete(): X++: void delete(Common childBuffer = null, boolean deletePBA = true) { SalesLineType salesLineType; ; ttsbegin; if (this.AssetId_RU && this.SalesStatus != SalesStatus::Invoiced && ! this.creditNoteLine()) { RAssetTable::updateStatus(this.AssetId_RU, RAssetStatus::Open); RAssetTable::updateCustInfo(this.AssetId_RU, '', ''); } salesLineType = this.type(); salesLineType.delete(childBuffer, deletePBA); TaxWorkRegulation::deleteRegulation_W(this); ttscommit; } Видим внутреннюю транзакцию и перехват ошибок типа Deadlock, UpdateConflict и т.п. И что происходит из-за появления "внешней" транзакции на SalesLine.delete()? Правильно, весь эти тщательно пИсаный старшими товарищами код по перехвату ошибок дружно встаёт и уходит сами знаете куда... Нехорошо, как-то... Я всё-таки в подобных случаях предпочитаю вносить все свои доработки в единую транзакцию в класс Sales/PurchSalesLine. И, на мой взгляд, так должны были поступить и "локализаторы"... Или я пропустил какую-то глубокую мысль, которую всё это преследовало?
__________________
Zhirenkov Vitaly |
|
Теги |
bug report, баг, ошибка, dynamics |
|
|