#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;