18.03.2016, 08:32 | #1 |
Участник
|
Баг или фича - неожиданное поведение метода xRecord.data()
Вчера разрабатывая одну модификацию наткнулся на странный баг.
1) Берем запись таблицы. 2) Меняем в ней некоторые поля. 3) Затем отбираем для обновления эту же запись в другой курсор (отбирам по recid) 4) В запись для обновления записываем все поля измененной записи сразу – через метод .data() 5) Сохраняем запись, выбранную для обновления 6) Сохранилось все без ошибок, но запись в результате не изменяется. Решилась проблема просто – вместо п.4 и использования метода .data() достаточно оказалось присвоить измененные поля напрямую. Может быть кто-то знает, из-за какого механизма проявляется такое странное поведение при использовании метода data ? Удалось повторить в виде джоба (баг замечен в 2009й и проверен в 4ке): X++: static void ButTestJob180316(Args _args) { CustTable custTable, custTable_upd; ; select custTable where custTable.accountNum == 'Иванов В.В.'; print strfmt("оригинальная запись %1, %2, %3", custTable.RecId, custTable.AccountNum, custTable.Name); custTable.name += 'test'; print strfmt("изменили имя %1, %2, %3", custTable.RecId, custTable.AccountNum, custTable.Name); ttsbegin; select forupdate custTable_upd where custTable_upd.RecId == custTable.RecId; print strfmt("выбрали ту же запись forUpdate %1, %2, %3", custTable_upd.RecId, custTable_upd.AccountNum, custTable_upd.Name); custTable_upd.data(custTable); //а это не работает //custTable_upd.name = custTable.name; //это работает как надо print strfmt("перезаписали поля %1, %2, %3", custTable_upd.RecId, custTable_upd.AccountNum, custTable_upd.Name); custTable_upd.doUpdate(); print strfmt("после сохранения %1, %2, %3", custTable_upd.RecId, custTable_upd.AccountNum, custTable_upd.Name); ttscommit; select custTable where custTable.accountNum == 'Иванов В.В.'; print strfmt("снова перевыбрали запись %1, %2, %3", custTable.RecId, custTable.AccountNum, custTable.Name); pause; } Последний раз редактировалось Pandasama; 18.03.2016 в 08:44. |
|
Теги |
ax2009, баг, метод data, фича, ax4.0 |
|
|