Вроде разобрался из за чего в 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 ?