2017-02-02 10 views
0

В сетке, в которой я работаю, есть Селектор для контакта, на входе Я пытаюсь проверить связанную учетную запись «Контакты» для моего настраиваемого поля даты.Получить связанный BAccount от контакта?

Ошибка enter image description here

protected void atcProjectDistributionTable_RowUpdated(PXCache cache, PXRowUpdatedEventArgs e, PXRowUpdated InvokeBaseHandler) 
    { 
     if (InvokeBaseHandler != null) 
      InvokeBaseHandler(cache, e); 
     var row = (atcProjectDistributionTable)e.Row; 
     if (row.ContactID != null) 
     { 

      Contact con = PXSelectorAttribute.Select<atcProjectDistributionTable.contactID>(cache, row) as Contact; 
      row.ContactCD = con.FullName; 
      row.BAcc = con.BAccountID; 

      if (row.BAcc != null) 
      { 
       BAccount bAcc = PXSelectorAttribute.Select<atcProjectDistributionTable.bAcc>(cache, row) as BAccount; 
       PX.Objects.CR.BAccountExt ba = bAcc.GetExtension<PX.Objects.CR.BAccountExt>(); 
       if (ba.UsrExpiring != null) 
       { 
        PXUIFieldAttribute.SetError<atcProjectDistributionTable.bAcc>(cache, row, "Termination date:" + ba.UsrExpiring + " Reason:" + ba.UsrExReason); 
       } 
      } 

     } 
    } 

enter image description here

+0

Вы успешно получаете контактную бизнес-учетную запись. Проблема заключается в том, что BAccount не содержит расширение BAccountExt. Вы должны посмотреть, почему расширение DAC не применяется к ЦАП BAccount. –

+0

Спасибо, я не могу понять, почему, тот же код работает на экране поставщика BAccount bAcc = Base.BAccount.Current; PX.Objects.CR.BAccountExt ba = bAcc.GetExtension (); – nickivey

+0

Пожалуйста, покажите нам свой код BAccountExt –

ответ

0

Не уверен, что обработчик события в вопросе прямо сейчас: RowInserting, RowInserted или RowUpdated ... На основе представленной трассировки стека ошибка происходит из-за bAcc.GetExtension<PX.Objects.CR.BAccountExt>(); заявления вызывается, когда bAcc переменная равна null. К сожалению, сообщение об ошибке не очень описательно.

Как упоминалось в статье How to call SetPropertyException from another event handler?, ни один из трех обработчиков, упомянутых здесь (RowInserting, RowInserted или RowUpdated), никогда не должен использоваться для сообщения об ошибках или предупреждения пользователям. Я настоятельно рекомендую реорганизовать ваш код, чтобы он соответствовал дизайну структуры.

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

  • Нет связанных вопросов^_^