Как получить доступ к расширению таблицы в бизнес-логике Acumatica

#acumatica #business-logic

Вопрос:

Приношу извинения, если на этот вопрос был дан ответ в другом месте, у меня возникли проблемы с поиском каких-либо ресурсов по этому вопросу. Сценарий таков. Я создал пользовательское поле на экране налоговых предпочтений под названием Usrapikey. Это значение содержит ключ api для вызова, который выполняется в некоторой пользовательской бизнес-логике. Однако пользовательская бизнес-логика отображается на экране Налоги. Поэтому в обработчике событий мне нужно получить доступ к этому значению ключа API с другого экрана. Я пробовал создавать экземпляры графиков и использовать linq и bql, но безрезультатно. ниже приведено то, что у меня есть в настоящее время, и моя ошибка: нет перегрузки для метода «getExtension», принимающего 1 аргумент

Если я поступаю неправильно, пожалуйста, дайте мне знать, есть ли более цивилизованный способ сделать это

 protected virtual void _(Events.FieldUpdated<TaxRev, TaxRev.startDate> e)

   {

  var setup = PXGraph.CreateInstance<TXSetupMaint>();
  var TXSetupEX = setup.GetExtension<PX.Objects.TX.TXSetupExt>(setup);

  var rateObj = GetValues(e.Row.TaxID, TXSetupEX.Usrapikey);
  decimal rate;

  var tryRate = (Decimal.TryParse(rateObj.rate.combined_rate, out rate));
  row.TaxRate = (decimal)rate * (decimal)100;
  row.TaxBucketID = 1;

  }
 

Большое Спасибо!

Ответ №1:

Что ж, поддержка acumatica вернулась. Похоже, если вы хотите получить доступ к базовой странице, используйте:

     TXSetup txsetup = PXSetup<TXSetup>.Select(Base);
 

Чтобы получить расширение, используйте:

     TXSetupExt rowExt = PXCache<TXSetup>.GetExtension<TXSetupExt>(txsetup);
 

Затем вы можете получить доступ к полям расширения следующим образом:

     var foo = rowExt.Usrfield;