Показать сообщение отдельно
Старый 11.11.2020, 06:40   #5  
oleggy is offline
oleggy
Участник
 
256 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
Вроде разобрался из за чего в 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.