Как мне автоматически заполнить поле на основе другого поля в Acumatica? - PullRequest
1 голос
/ 18 июня 2019

Я пытаюсь автоматически заполнить поле на основе другого поля. У меня есть поле выбора для Контрактов, и я создал поле «Менеджер 1» для основного менеджера, которое отображается на экране «Контракты».

Я могу получить правильные результаты при открытии поля селектора для менеджера 1. Он заполняет код контракта и менеджера, связанного с ним; однако я хочу, чтобы он автоматически заполнял поле после выбора контракта. Я пытался использовать PXDefault, но мне не повезло. Код ниже - это то, что я работаю до сих пор:

[PXInt] 
[PXUIField(DisplayName="Manager 1")] 
[PXSelector(typeof(Search2<PX.Objects.CR.BAccount.bAccountID, 
  InnerJoin<JPMContract, 
  On<JPMContract.contractMgrBAccountID, 
  Equal<PX.Objects.CR.BAccount.bAccountID>>>>), 
  typeof(JPMContract.contractCode), 
  typeof(PX.Objects.CR.BAccount.acctCD), 
  typeof(PX.Objects.CR.BAccount.acctName), 
  SubstituteKey = typeof(PX.Objects.CR.BAccount.acctCD), 
  DescriptionField = typeof(PX.Objects.CR.BAccount.acctName))]

Опять же, когда я открываю поле селектора и выбираю соответствующий результат, я получаю результаты, которые хочу, но я хочу, чтобы это делалось для меня после выбора контракта. Любой совет?

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

[PXInt]
[PXSelector(typeof(Search2<PX.Objects.CR.BAccount.bAccountID,
   InnerJoin<JPMContract,
   On<JPMContract.contractMgrBAccountID,
   Equal<PX.Objects.CR.BAccount.bAccountID>>>,
   Where<JPMContract.jPMContractID, Equal<Current<JPMSubContract.jPMContractID>>>>),
   typeof(JPMContract.contractCode),
   typeof(PX.Objects.CR.BAccount.acctCD),
   typeof(PX.Objects.CR.BAccount.acctName),
   SubstituteKey = typeof(PX.Objects.CR.BAccount.acctCD),
   DescriptionField = typeof(PX.Objects.CR.BAccount.acctName))]
[PXDefault(typeof(Search2<PX.Objects.CR.BAccount.bAccountID,
   InnerJoin<JPMContract,
   On<JPMContract.contractMgrBAccountID,
   Equal<PX.Objects.CR.BAccount.bAccountID>>>,
   Where<JPMContract.jPMContractID, Equal<Current<JPMSubContract.jPMContractID>>>>))]
[PXUIField(DisplayName="Manager 1")]

1 Ответ

1 голос
/ 18 июня 2019
public sealed class DACExt : PXCacheExtension<PrimaryDAC>
{
    // For this field in aspx file set CommitChanges=true
    [PXDBInt]
    [PXSelector(typeof(Search<Table.field0>))]
    [PXUIField(DisplayName = "Field 1")]
    public int? Field1 { get; set; }
    public abstract class field1 : IBqlField { }

    [PXInt]
    //This line auto-populate a field based on Field1 field
    [PXDefault(typeof(Search<Table1.field2, Where<Table1.field0, Equal<Current<Table.field0>>>>), PersistingCheck = PXPersistingCheck.Nothing)]
    [PXUIField(DisplayName = "Field 2", Enabled = false)]
    public int? Field2 { get; set; }
    public abstract class field2 : IBqlField { }
}


public virtual void PrimaryDAC_Field1_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
    if (e.Row is PrimaryDAC row)
    {
        sender.SetDefaultExt<DACExt.field2>(e.Row);
    }
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...