|
![]() |
#1 |
Moderator
|
В общем, вроде нашел решение.
Вот джоб, которым тестировал: Код: static void Tutorial_ChangeFieldId(Args _args) { UtilIdElements uie; SQLDictionary dict; ; ttsbegin; select forupdate uie where uie.name == "Field2" && uie.parentId == tableNum(Tutorial_ChangeFieldId); if (!uie) warning("Запись в UtilIdElements не найдена"); else { uie.id = 50005; uie.update(); } // appl.dbSynchronize(tableNum(Tutorial_ChangeFieldId), false); // select forUpdate dict // where dict.tabId == tableNum(Tutorial_ChangeFieldId) && dict.fieldId == fieldNum(Tutorial_ChangeFieldId, Field2); // if (!uie) // warning("Запись в SQLDictionary не найдена"); // else // { // dict.fieldId = 50005; // dict.update(); // } ttscommit; } НО: если тупо после этого сделать синхронизацию таблицы - о чудо, все восстановилось! Id поменялся, данные в таблице остались. Абсолютно интуитивно непонятный механизм - смотрим на какую-то фигню (UNKNOWN), после синхронизации получаем конфетку ![]() То, что закомментировал, оказалось ненужным. Программная синхронизация таблицы не помогает, нужно почему-то обязательно через АОТ делать. Так что решение таково: программно изменяем IDшники полей в UtilIdElements и делаем синхронизацию таблицы. Вуаля! Спасибо всем, принявшим участие в эксперименте.
__________________
Андрей. |
|
Теги |
axapta, id объекта, sqldictionary, как правильно, синхронизация |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|