Показать сообщение отдельно
Старый 18.09.2020, 16:18   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,656 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Идентификация иерархических таблиц в методах таблиц-родителей
dax2012

Таблица AgreementLineQuantityCommitment наследник от AgreementLine

Вызывается метод

AgreementLineQuantityCommitment.validateWrite()

В этой таблице этого метода нет, поэтому вызывается метод таблицы-родителя. Там идет вызов

avl = PdsApprovedVendorListCheck::newFromTable(this);

Ну, и внутри этого метода идентифицируется таблица через обычный switch

X++:
    switch (_buffer.TableId)
    {
        case tableNum(AgreementLine):

        default :
            throw error(strfmt("@PRO1805",tableid2name(_buffer.TableId)));
    }
Это все нормально работало, но неожиданно, при запуске в пакетном режиме (и только там!) _buffer.TableId стал возвращать идентификатор AgreementLineQuantityCommitment и пошли ошибки

При этом при работе "вручную" (на клиенте, на сервере, с CIL, без CIL) - никаких проблем. Только и исключительно при пакетной обработке. CIL пересобирал, AOS перезагружал


В данном конкретном случае понятно, что можно просто дописать нужный case. Вопрос в том, "почему"? Т.е. в каких случаях, какой именно TableId будет идентифицироваться? В чем причина проблемы? Что могло спровоцировать такое поведение?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...