![]() |
#15 |
Участник
|
Недавно словили эту багу при работе в 2009-й аксапте.
В итоге разработали способ как это просто вылечить не удаляя слой. Пусть для определенности у нас кривая вьюха на usr слое. При любых попытках что-то сделать с ней аос падает по причине Падает служба Dynamics AX 1. Тогда берем другое приложение. Заходим там на usp слой. Создаем там вьюху с таким же именем и идентификатором. 2. Перекладываем usp слой в проблемное приложение. 3. Рестартуем аос 4. В итоге прямая вьюха на usp слое закрывает кривую вьюху и аос перестает падать. Дальше лечим usr слой. Запускаем на сервере джобик: X++: static server void main(Args _args) { UtilElements utilElements; Tableid viewId = 50900; // поставить свой id вьюхи UtilEntryLevel utilEntryLevel = UtilEntryLevel::usr; Identifiername name = 'Metadata'; // имя узла надо предварительно перепроверить при просмотре в обозревателе таблички UtilElements str str2Scan; void locView(str _str2Scan) { int i; str s; int charCode; ; _str2Scan = strRem(_str2Scan, "\n\r"); for (i = 1; i<= strlen(_str2Scan); i += 2) { charCode = str2int('0x' + substr(_str2Scan, i, 2)); s += num2char(charCode); } info(s); } ; ttsbegin; flush utilElements; utilElements.disableCache(true); utilElements.skipTTSCheck(1); utilElements.ttsbegin(); select forupdate utilElements where utilElements.utilLevel == utilEntryLevel && utilElements.parentid == viewId && utilElements.name == name // по идее может сработать и без этого условия && utilElements.recordType == UtilElementType::ViewQuery; str2Scan = BinData::dataToString(UtilElements.code); locView(str2Scan); // throw info("Ну очень стремно удалять"); utilElements.doDelete(); utilElements.ttscommit(); ttscommit; } Можно удалять usp слой. P.S. Возможно, что сработает и без манипуляция с usp слоем - я не пробовал. Нет желания повторять. Если в джобе поставить переменную с типом utilIdElements то почему-то не срабатывает - отказывается редактировать или удалять запись с такими сообщениями: Цитата:
Невозможно удалить запись в Application Model (UtilIdElements).
Номер записи не соответствует первоначальному номеру. Если таблицей используется весь кэш таблицы, это может быть вызвано тем, что этот кэш был сброшен. В этом случае следует перезапустить задание. Цитата:
Невозможно отредактировать запись в Application Model (UtilIdElements).
Номер записи не соответствует первоначальному номеру. Если таблицей используется весь кэш таблицы, это может быть вызвано тем, что этот кэш был сброшен. В этом случае следует перезапустить задание. Интересно, почему так. Последний раз редактировалось Logger; 09.02.2018 в 13:04. |
|
|
За это сообщение автора поблагодарили: DSPIC (10), Pasha_x (1), gl00mie (10), fed (5), raz (5), _scorp_ (10). |
Теги |
aos crash, bugfix, view, баг, падает |
|
|