02.09.2021, 08:47 | #1 |
Участник
|
как обойти ошибку - запись не выбиралась для обновления
Привет всем.
При выполнении такого джоба: X++: static void job123(Args _args) { ... void updateFieldValue(Common _common, FieldId _fieldId, anytype _value) { ... try { ttsBegin; _common.selectForUpdate(true); _common.(_fieldId) = _value; _common.doUpdate(); ttsCommit; } catch { ttsAbort; } ... } ... ; ... updateFieldValue(APMParameters::find(), fieldnum(APMParameters, Field1), valueField1); ... } генерируется ошибка: Цитата:
Невозможно отредактировать запись в Параметры (APMParameters).
Операция не может быть завершена, так как запись не выбиралась для обновления. Используйте TTSBEGIN/TTSCOMMIT наряду с выражением FORUPDATE. Попытка изменения записи в таблице "APMParameters", которая не выбрана для изменения (RecId = 5637144576). [W-0108] (S)\Classes\xRecord\doUpdate (C)\Jobs\job123 - line 77 Мне получилось ее обойти так: X++: static void job123(Args _args) { ... void updateFieldValue(Common _common, FieldId _fieldId, anytype _value) { ... try { //ttsBegin; // <-- убираем _common.selectForUpdate(true); _common.(_fieldId) = _value; _common.doUpdate(); //ttsCommit; // <-- убираем } catch { ttsAbort; } ... } ... ; ... ttsBegin; // <-- добавляем updateFieldValue(APMParameters::find(), fieldnum(APMParameters, Field1), valueField1); ttsCommit; // <-- добавляем ... } Вопросы: 1. возможно как то обойти данную ошибку но оставив ttsBegin/ttsCommit в методе updateFieldValue ? 2. Заметил что такая ошибка генерируется только для изменения данных у этой таблицы - APMParameters. Если такое же выполнять для других таблиц, например: RassetParameters, CompanyInfo таких ошибок нет. Не подскажете почему для одних таблиц нет ошибки а для APMParameters ошибка при вызове doUpdate()? Последний раз редактировалось oleggy; 02.09.2021 в 08:52. |
|
|
|