![]() |
#5 |
Участник
|
Вроде разобрался из за чего в AX09 постоянно зависает. Дело в том что не происходит сохранение в кэш.
А не происходит из-за того что при обсчете всего AOT наталкивается на такой класс (см. ниже) который пытается инициализировать, генерируется исключение. Выделил данный класс в простой джоб. У всех так? X++: static void Job561(Args _args) { CustDocument_CustTable custDocument_CustTable; ; custDocument_CustTable = new CustDocument_CustTable(); } Если провалится в new в данном классе видно что тут: [c] \Classes\AfDataContainerDescriptors\createAxdDataContainerMetadata 19 [c] \Classes\AfDataContainerDescriptors\createDataContainerDescriptor 50 [c] \Classes\AfDataContainerDescriptors\getDataContainerDescriptor 46 [c] \Classes\AfDataContainer\new 23 [c] \Classes\AfStronglyTypedDataContainer\new 20 [c] \Classes\CustDocument_CustTable\new 3 [c] \Classes\AfDataContainerDescriptors\createAxdDataContainerMetadata 19 [c] \Classes\AfDataContainerDescriptors\createDataContainerDescriptor 50 [c] \Classes\AfDataContainerDescriptors\getDataContainerDescriptor 46 [c] \Classes\AfDataContainer\new 23 [c] \Classes\AfStronglyTypedDataContainer\new 20 [c] \Classes\CustDocument_CustTable\new 3 пытается найти класс которого нет в AOT - AxdCustDocument. Из-за этого и валится. Я посмотрел, этого класса и не было раньше. Странно. Создал класс заглушку: X++: class AxdCustDocument extends AxdBase { } AifActionInfoList getActionList() { AifActionInfoList ret; ret = super(); return ret; } void getConstraintList(Common _curRec, AifConstraintList _constraintList) { super(_curRec, _constraintList); } LabelString getLabel() { LabelString ret; ret = super(); return ret; } Но теперь валится Ошибка времени выполнения: QueryBuildDataSource Объект не инициализирован. (C)\Classes\QueryBuildDataSource\table (C)\Classes\AfDataContainerDescriptor\createDataItemsFromAxdDataSource - line 38 (C)\Classes\AfDataContainerDescriptor\constructFromMetadata - line 121 (C)\Classes\AfDataContainerDescriptors\createDataContainerDescriptor - line 64 (C)\Classes\AfDataContainerDescriptors\getDataContainerDescriptor - line 46 (C)\Classes\AfDataContainer\new - line 23 (C)\Classes\AfStronglyTypedDataContainer\new - line 20 (C)\Classes\CustDocument_CustTable\new - line 3 Ошибка тут: X++: private void createDataItemsFromAxdDataSource(AxdBase _axd, Map _constructionContext) { Query axdQuery; QueryBuildDataSource dataSource, childDataSource; int childDataSourceIndex, childDataSourceCount; AxInternalBase axbc; SysDictTable dictTable; Common table; Set tableDataItems; Set dataSourceDataItems; Set excludedDataItems; str documentHashDataItemName; int nextSerializationOrder = 1; // Get Axd query axdQuery = _axd.getQuery(); // Get data source dataSource = axdQuery.dataSourceName(this.get_DataSourceName()); // Create data item descriptors from the data source dictTable = new SysDictTable(dataSource.table()); // <-- тут ошибка table = dictTable.makeRecord(); axbc = AxInternalBase::construct(table); if (axbc != null) ... } Причем this.get_DataSourceName() возвращает CustTable, все должно быть корректно. но dataSource равен null. Подскажите почему он равен null ? Последний раз редактировалось oleggy; 11.11.2020 в 08:05. |
|
|
|