Compañeros estoy atorado con un problema.
Lo siguiente es que a la clase VendTransListContract le agregué un campo más el método se llama:
- parmGroupBy( ) (El nombre de este campo es Cadena)
Para que ese campo se vea reflejado en el reporte de transacciones de proveedor de AX 2012.
Más aparte, quiero que el campo Cadena se despliegue como un control de tipo SysLookupMultiSelectCtrl que me permita seleccionar y a la vez guardar varias opciones a la vez.
Esto lo logré creando la siguiente clase de tipo SrsReportDataContractUIBuilder con sus respectivos métodos:
class VendTransListUIBuilder extends SrsReportDataContractUIBuilder
{
DialogField groupByField;
container returnIds1;
SysLookupMultiSelectCtrl msCtrl1;
}
public void build()
{
VendTransListContract vendTransListContract;
super();
vendTransListContract = this.dataContractObject();
groupByField = this.bindInfo().getDialogField(vendTransListContract, methodStr(VendTransListContract, parmGroupBy));
groupByField.lookupButton(FormLookupButton::Always);
}
public void lookupChain()
{
Query query = new Query(querystr(ChainGroupLookup));
TableId multiSelectTableNum = tableNum(smmBusRelChainGroup);
container selectedFields = [multiSelectTableNum, fieldName2id(multiSelectTableNum, fieldStr(smmBusRelChainGroup, ChainId))];
msCtrl1 = SysLookupMultiSelectCtrl::constructWithQuery(this.dialog().dialogForm().formRun(), groupByField.control(), query, false, selectedFields);
}
public void postRun()
{
this.lookupChain();
}
- No se me olvidó colocarle también el método getFromDialog a mi clase Builder
public void getFromDialog()
{
#Characters
VendTransListContract vendTransListContract = this.dataContractObject();
;
super();
// Return Ids from the 1st mutli-select control
if (msCtrl1)
returnIds1 = msCtrl1.get();
vendTransListContract.parmGroupBy(con2StrUnlimited(msCtrl1.getSelectedFieldValues(), #SEMICOLON));
}
Activo el debugger y empiezo a correr el reporte:
1. En la pantalla de diálogo seleccionó los valores: VAL1 y VAL2 en mi campo Cadena y le doy en Aceptar.
2. En el debugger rastrea que en el método getFromDialog de mi clase Builder sí se están recibiendo todos los valores que seleccionó desde mi campo cadena al llamar el siguiente objeto en el código de mi método: msCtrl1.getSelectedFieldValues()
Esta parte si se se llevando a cabo de forma correcta.
Una vez que el debugger llega al código del método de la clase siguiente:
VendTransListDP.processReport( ) ahí es donde veo que me surge un problema.
Adentro de ese mismo método mando a llamar a mi campo cadena con la siguiente instrucción:
variable = contract.parmGroupBy( );
Pero resulta que en vez que reciba los valores: VAL1;VAL2
Está recibiendo un solo valor: VAL1 (usualmente es el valor de la primera opción que elijo desde mi campo Cadena)
El propósito del campo Cadena que le agregué al diálogo es que me permita generar el reporte de transacciones de proveedor también filtrando por los valores seleccionados desde Cadena.
He intentado todos los ejemplos que he encontrado investigando en google, pero hasta ahora nada me resulta.
¿Alguien sabe si algo le hace falta más a mi código?