A classe Args é uma das mais usadas no AX, Args é a abreviação de argumentos e um objeto Args é usado para passar informação de um objeto (caller) para outro objeto.

Usando a classe Args para criar objetos

O objeto Args também pode ser usado para ajudar na criação de objetos, em conjunto com a ClassFactory. Por exemplo, para abrir o formulário CustTable, você pode usar o codigo abaixo:

1
2
3
4
5
6
  Args    args = new Args("CustTable");
  FormRun formRun = ClassFactory.formRunClass(args);
  ;
  formRun.init();
  formRun.run();
  formRun.wait();

Métodos e Propriedade

caller – public Object caller( [Object _value] )

este método pega ou define o objeto caller (objeto que está fazendo a chamada). Quando você cria um objeto Args diretamente através de código, o caller não é setado automaticamente, então nós mesmos devemos setar.

record – public Common record( [Common _value] )

este método pega ou define um table buffer (registro) atachado ao Args. Um buffer de qualquer tabela pode ser acoplado ao objeto Args usando este método. Tenha em mente que o buffer não retornara dados, para tal você deve usar o método dataset mostrado abaixo para verificar o conteúdo do buffer.

Se o caller e o callee estão em diferentes tiers, então a aplicação irá copiar o buffer automaticamente para o tier alvo.

dataset – public tableId dataset()

este método pega o Id da tabela de um table buffer atachado ao Args.

Para recupearr seguramente um registro de um objeto Args, use código similar ao descrito abaixo. Este código certifica que há um table buffer atachado, e que é de fato um table buffer do tipo SalesTable, antes de tentar atribuir a variável salesTable.

1
2
if (args.record() AND args.dataset() == tableNum(SalesTable))
  salesTable = args.record();

lookupField – public fieldId lookupField( [fieldId _value] )
Veja lookupValue

lookupValue – public str lookupValue( [str _value] )

lookupField e lookupValue são usados juntos. Quando eles são preenchidos com um id de um campo e um valor, indica que o formulário será aberto usando o objeto Args e automaticamente selecionará o registro baseado no critério informado.

Por exemplo, o código seguinte assume que um cliente com a conta código “1000” existe. Ele abrirá o formulário CustTable com o cliente “1000” selecionado e continuará exibindo os demais clientes.

1
2
3
4
5
6
7
8
9
10
Args args = new Args("CustTable");
  FormRun formRun;
  ;
  // Look up customer 1000 when the form opens
  args.lookupField(fieldNum(CustTable, AccountNum));
  args.lookupValue("1000");
  formRun = ClassFactory.formRunClass(args);
  formRun.init();
  formRun.run();
  formRun.wait();

Note que este lookup é extremamente rápido e deve ser usado preferencialmente do que chamar .findValue ou .findRecord uma vez que o formulário foi aberto.

parm – public str parm( [str _value] )
parm é usado para passar uma string para o objeto aberto.

parmEnum – public anytype parmEnum( [int _value] )
veja parmEnumType

parmEnumType – public int parmEnumType( [int _value] )

parmEnum e parmEnumType são usados juntos para passar um valor Base Enum value até o objeto chamado. Um exemplo é exibido abaixo:

args.parmEnumType(EnumNum(AddressType));
args.parmEnum(AddressType::Delivery);

parmObject – public Object parmObject( [Object _value] )

parmObject é usado para passar uma referencia para qualquer objeto para o objeto chamado. Esteja ciente de assuntos cliente-servidor se o caller e o calle estiverem em diferentes tiers.

menuItemName – public final str menuItemName( [str _value] )
menuItemType – public final MenuItemType menuItemType( [MenuItemType _value] )

FONTE.