Как установить настраиваемое поле на основе настраиваемого поля для другого объекта? - PullRequest
0 голосов
/ 23 марта 2019

У меня есть флажок на расширении ЦАП для учетной записи BA, который я хочу использовать, чтобы установить флажок в случае, когда выбран клиент.Вот как выглядит флажок на экране Бизнес-счет .

Вот поле на экране Дело , которое я хочу установить при выборе клиента.

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

Вот что я пробовал.Я не уверен, что мне не хватает.

protected void CRCase_CustomerID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
  var crcase = e.Row as CRCase;
  if (crcase.CustomerID != null)
  {
    var customer = PXSelectorAttribute.Select<CRCase.customerID>(sender, crcase) as BAccountR;
    if (customer != null)
    {
      var customerExt = customer.GetExtension<BAccountExt>();
      var crcaseExt = crcase.GetExtension<CRCaseExt>();
      crcaseExt.UsrContractCustomer = customerExt.UsrSage100;
    }
  }
}

Я не понимаю, почему BAccountR используется вместо просто BAccount.Ни один из них не работает прямо сейчас.

Я решил проблему, объединив ответ, полученный в предыдущем посте.Я изменил две последние строки следующим образом:

      var customerExt = customer.GetExtension<BAccountExt>();
      //var crcaseExt = crcase.GetExtension<CRCaseExt>();
      //crcaseExt.UsrContractCustomer = customerExt.UsrSage100;
      sender.SetValueExt<CRCaseExt.usrContractCustomer>(crcase, customerExt.UsrSage100 != null);

Итак, вот последний вопрос, который мне нужно решить.Флажок, который я использовал на экране «Бизнес-аккаунт», открывает новую вкладку, в которой отображаются настраиваемые поля.Эти настраиваемые поля являются расширением ЦАП BAccount под названием DSDSage100.Это похоже на расширение BAccount под названием Customer.В расширении DSDSage100 есть поле с именем UsrContractCustomer.Это поле, которое я хочу прочитать и установить поле Case на то же значение.Вот как выглядит Sage 100 Tab .У меня есть директива using для моего проекта, но я не могу найти правильную ссылку на расширение DSDSage100.

      var customerExt = customer.GetExtension<DSDSage100>();
      sender.SetValueExt<CRCaseExt.usrContractCustomer>(crcase, customerExt.UsrContractCustomer != null);

1 Ответ

0 голосов
/ 04 апреля 2019

Acumatica предоставила ответ.Хотя я «расширил ЦАП BAccount» своей собственной таблицей (DSDSage100, аналогично тому, как Customer является расширением ЦАП BAccount), это его собственный ЦАП.Решение было:

DSDSage100 mydac = PXSelect<DSDSage100, Where<DSDSage100.bAccountID, Equal<Required<DSDSage100.bAccountID>>>>.Select(Base, crcase.CustomerID); 
sender.SetValueExt<CRCaseExt.usrContractCustomer>(crcase, mydac.UsrContractCustomer != null);

Спасибо за помощь и поддержку.

...