2017-02-15 2 views
0

В моем графике я следующие внутренние соединения цепи:Как Acumatica лечит пять внутренних соединений классов, которые являются родственниками

public PXSelectJoin<APRegister, 
     InnerJoin<APPayment, On<APPayment.docType, Equal<APRegister.docType>>, 
      InnerJoin<CATran, On<CATran.origTranType, Equal<APRegister.docType>>, 
       InnerJoin<Vendor, On<Vendor.bAccountID, Equal<APRegister.vendorID>>, 
        InnerJoin<BAccount, On<BAccount.bAccountID, Equal<BAccount.bAccountID>>, 
         InnerJoin<VendorClass, On<VendorClass.vendorClassID, Equal<Vendor.vendorClassID>>>>>>>> ReleasedPayments; 

и я особенно интересует, как Acumatica структура «чувствует» и, возможно, ведет себя о внутренних соединений между классы, которые являются родственниками. Например APRegister - это базовый класс для APPayment, а BAccount - базовый класс для Поставщика. Будет ли система Acumatica работать с ними должным образом? Я задаю этот вопрос, потому что упомянутый запрос привел к тому, что мой процессор был загружен, память исчерпана, а затем сбой процесса w3wp. Итак, у меня сложилось впечатление, что чего-то не хватает

+1

Назад в мир Acumatica? Рад видеть вас здесь снова! – Gabriel

+0

Спасибо, Габриэль! –

+0

Я уже назначил вас для Acumatica MVP для следующего саммита :) – Gabriel

ответ

0

Моя мысль, что она должна работать до тех пор, пока соединения правильные. Я помню, что у меня возникли проблемы при попытке сделать соединение в одной таблице с использованием одной и той же таблицы несколько раз. До тех пор, пока имя класса для BQL было другим, оно работало отлично. Не проверяя это, вы действительно не будете знать наверняка.

В отношении двух из одних и тех же таблиц в объединение: Acumatica BQL Query with the same table more than once

+0

Я задаю этот вопрос, потому что упомянутый запрос заставил мой процессор перегружаться, память исчерпалась, а затем разрушила процесс w3wp. Поэтому у меня создается впечатление, что чего-то не хватает –

+0

запустите профайлер, чтобы посмотреть, как выглядит sql. – Brendan

+1

Кроме того, я бы поместил ваш комментарий о всплеске обработки в ваш первоначальный вопрос, поскольку он помогает поддерживать то, почему вы задаете вопрос. – Brendan

1

Я заметил, что вы присоединялись BAccount.bAccountID к себе. Вероятно, вы хотели присоединиться к Продавцу. Поскольку BAccount только присоединяется к себе, а не к другим таблицам каким-либо образом, он может действовать как декартово объединение, как если бы не было задано условие объединения. Если вы действительно хотите присоединиться к BAccount.bAccountID для себя по какой-то причине, скорее всего, вы захотите использовать BAccountR или BAccount2 - которые являются подклассами BAccount или самим подклассом. Затем он должен использовать другой псевдоним в сгенерированном SQL-выражении и получать ожидаемые результаты.

Примечание: Возможно, вам даже не понадобится присоединение BAccount к поставщику. Я обнаружил, что выбор из BAccount уже включает внутреннее соединение с Продавцом по умолчанию. Однако подкласс BAccountR не работает.

Смежные вопросы