Por tanto, si queremos por ejemplo, mostrar en una pantalla de parámetros los valores de cada dimensione de organización para que el usuario pueda seleccionar un valor existente. Lo primero seria agregar nuestros campos a una tabla de parámetros, en este caso, voy agregar estos campos al form de parámetros de ventas y marketing, cada uno extendiendo del dato: DimValue
Posterior a esto, agregaría los campos de esta tabla al formulario de parámetros y sobreescribiria el método el lookup de cada campo.
Este método lookup, debe llamar a mi método nuevo en la tabla donde tengo mis campos creados de dimensiones, donde en este método se hace la búsqueda de los valores por cada dimension de organización. Aquí el ejemplo de los tres métodos lookup.
Centro de costo
public client static void lookupCentroCosto(FormStringControl _ctrl)
{
Query query = new Query();
SysTableLookup sysTableLookup;
QueryBuildDataSource queryBuildDataSource;
sysTableLookup = SysTableLookup::newParameters( tableNum(OMOperatingUnit), _ctrl, true);
sysTableLookup.parmUseLookupValue( false);
sysTableLookup.addLookupfield( fieldNum(OMOperatingUnit, OMOperatingUnitNumber));
sysTableLookup.addLookupfield( fieldNum(OMOperatingUnit, Name));
queryBuildDataSource = query.addDataSource( tableNum(OMOperatingUnit));
queryBuildDataSource.addSortField( fieldnum(OMOperatingUnit, OMOperatingUnitNumber));
queryBuildDataSource.addRange( fieldNum(OMOperatingUnit, OMOperatingUnitType)).value(int2str (any2int(OMOperatingUnitType::OMCostCenter)));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
Departamento
public client static void lookupDepartamento(FormStringControl _ctrl)
{
Query query = new Query();
SysTableLookup sysTableLookup;
QueryBuildDataSource queryBuildDataSource;
sysTableLookup = SysTableLookup::newParameters( tableNum(OMOperatingUnit), _ctrl, true);
sysTableLookup.parmUseLookupValue( false);
sysTableLookup.addLookupfield( fieldNum(OMOperatingUnit, OMOperatingUnitNumber));
sysTableLookup.addLookupfield( fieldNum(OMOperatingUnit, Name));
queryBuildDataSource = query.addDataSource( tableNum(OMOperatingUnit));
queryBuildDataSource.addSortField( fieldnum(OMOperatingUnit, OMOperatingUnitNumber));
queryBuildDataSource.addRange( fieldNum(OMOperatingUnit, OMOperatingUnitType)).value(int2str (any2int(OMOperatingUnitType::OMDepartment)));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
Unidad de negocio o BusinessUnit
public client static void lookupBusinessUnit(FormStringControl _ctrl)
{
Query query = new Query();
SysTableLookup sysTableLookup;
QueryBuildDataSource queryBuildDataSource;
sysTableLookup = SysTableLookup::newParameters( tableNum(OMOperatingUnit), _ctrl, true);
sysTableLookup.parmUseLookupValue( false);
sysTableLookup.addLookupfield( fieldNum(OMOperatingUnit, OMOperatingUnitNumber));
sysTableLookup.addLookupfield( fieldNum(OMOperatingUnit, Name));
queryBuildDataSource = query.addDataSource( tableNum(OMOperatingUnit));
queryBuildDataSource.addSortField( fieldnum(OMOperatingUnit, OMOperatingUnitNumber));
queryBuildDataSource.addRange( fieldNum(OMOperatingUnit, OMOperatingUnitType)).value(int2str (any2int(OMOperatingUnitType::OMBusinessUnit)));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
Post relacionados:
Lookup para dimensiones financieras personalizadas
Consultas en tablas con ValidTimeState
Crear lookup en clase dialog
Y por cierto, acuerdate de darle click a algún anuncio si el post te sirvio de algo.
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.