26.12.2014, 16:17 | #1 |
Участник
|
Битый AOT
Приветствую!
У нас стоит Axapta 3.0 (рабочая из трех звеньев) и такая же Axapta (для разработки только из двух звеньев), последняя стоит на общем диске. Признаюсь честно данный диск периодически улетал и с доступом к нему были проблемы. Буквально неделю назад были замечены повреждения в AOT-е, а именно в ExtendedDataTypes и Forms. В ExtendedDataTypes были обнаружены разорванные Relation, а в Forms было замечена потеря в Data Source наименования таблицы. После проведенных расследований виновников данных ошибок найдено не было и мы стали грешить на общий диск, и да ко всему этому были выявлены пустые записи в системной таблице UtilElements Уважаемые знатоки прошу Вашей помощи, может кто то решал данные проблемы и сталкивался с данными проблемами. |
|
26.12.2014, 16:38 | #2 |
Участник
|
Такое еще бывает когда модификацию переносят частями.
Сперва EDT затем форму а затем табличку. Особенно если без сохранения идентификаторов. можете попробовать. Может просто криво накатывали ? |
|
|
За это сообщение автора поблагодарили: Мышелов Федор (1). |
26.12.2014, 17:11 | #3 |
Участник
|
Спасибо за оперативность.
Действительно при таком способе накатывания связка в EDT-шке разрывается, но при всем этом остается вопрос как данные ошибки появились в SYS слое. |
|
26.12.2014, 20:24 | #4 |
Участник
|
восстановите из бакапа да и всё, зачем что-то чинить?
что значит "стоит на общем диске"? что значит "диск улетал"? куда улетал? в космос? тогда вероятно он был поврежден радиоактивным излучением |
|
|
За это сообщение автора поблагодарили: someOne (0). |
29.12.2014, 08:59 | #5 |
Участник
|
"стоит на общем диске" - значит что Ax стоит на сетевом диске на котором кроме нее находится много всего интересного
"диск улетал" - значит что диск работал нормально а потом резко пропадал и Windows выдавал сообщение что данный диск недоступен |
|
29.12.2014, 14:57 | #6 |
Участник
|
вот Job чтобы проверить наличие битых EDT - шок
X++: static void findErrorRalations_SeveralRelation(Args _args) { Int i; QtyInteger qtyLines; DictType dictType; DictTable relatedDictTable; DictRelation dictTypeRelation; TableId relatedTableId; FieldId relatedFieldId; UtilElements utilElements; ; while select utilElements where utilElements.parentId == 0 //&& utilElements.name == 'AssetSortingId' && utilElements.recordType == UtilElementType::ExtendedType { //----------------------------------------------------------------> dictType = new DictType(extendedTypeName2Id_RU(utilElements.name));//'PriceTagTaskId')); while (dictType) { dictTypeRelation = dictType.relationObject(); if (dictTypeRelation == null) { break; } qtyLines = dictTypeRelation.lines(); for (i=1; i<=qtyLines; i++) { if (dictTypeRelation) { relatedTableId = dictTypeRelation.table(); relatedFieldId = dictTypeRelation.lineExternTableValue(i); relateddictTable = new DictTable(relatedTableId); if (relatedTableId == 0 || relatedFieldId == 0 || relateddictTable == null) { info(utilElements.name); continue; } else { continue; } } else { dictType = null; break; } } dictType = null; } } } |
|
30.12.2014, 09:02 | #7 |
Участник
|
Цитата:
Поищите эти таблицы в других ваших приложениях или проектах, сохраненных на компьютерах разработчиков. И перенесите найденные таблицы на это кривое приложение. Тут дело скорее всего не в том, что диск "улетал", а в том, что кто-то либо удалил таблицы, либо накатил с другого приложения новые формы и EDT, а таблицы забыл перенести. То есть тут чисто человеческий фактор. В более узком смысле - программистский. UPD: не заметил в более позднем сообщении, что это у вас на SYS-слое. На картинках у вас показаны "самодельные" таблицы. Но все равно попробуйте накатить отсутствующие таблицы с других приложений, либо из бэкапа. UPD2: я запутался Если у вас таблицы в приложении есть, то перенесите туда EDT и формы с резервного приложения. Но лучше целиком восстановить приложение из резервной копии, если она есть Последний раз редактировалось Ace of Database; 30.12.2014 в 09:14. |
|
30.12.2014, 09:20 | #8 |
Участник
|
Я бы сделал так: так как у вас рабочий АОС в порядке, то можно не заморачиваться. Я создал бы девелоперский АОС, скопировал на него рабочее приложение и базу. И начал бы разработку в трехзвенке. Двухзвенка тут не нужна.
|
|
30.12.2014, 10:03 | #9 |
Участник
|
Спасибо за предложенный вариант, но к сожалению бэкапа нет((((((, а в других приложениях были найдены абсолютно те же битые типы. Но мы уже все восстановили руками))) осталось только 2 вопроса про пустые записи в системной таблице UtilElements и как в дальнейшем избежать ошибок с битыми типами потому как перенос доработок производится только после их выверки и только проектами которые содержат все типы таблицы и прочие необходимые элементы
|
|
30.12.2014, 11:01 | #10 |
Участник
|
|
|
|
|