2009-08-24 7 views
7

Tengo formulario con cuadrícula VendTable, por ejemplo, que tiene el campo CustAccount.Dynamics ax 4.0, forma de apertura sin aplicar filtro en el registro actual

Quiero colocar el botón, haga clic en el cual abrirá el formulario de CustTable donde están visibles todos los clientes.

Si simplemente coloco el elemento de menú CustTable, al hacer clic en él se abrirá el formulario CustTable, pero de esta forma solo se muestra un registro, uno que tiene el mismo número de cuenta que en vendTable.CustAccount.

Cómo abrir toda custTable? ¿Hay una mejor solución que crear el botón, y luego usar ClassFactory :: FormRunOnClient para mostrar el formulario?

PS. Necesito el botón, por lo que RMB -> "Ir a la tabla principal" no cuenta.

Respuesta

6

El problema es que el registro VendTable se aplica como argumento al formulario CustTable, que a continuación crea un marcador de sincronización. La solución es evitar el argumento.

reemplazar el método clicked en el elemento de menú CustTable pantalla como esta:

void clicked() 
{ 
    this.menufunction().run(new Args(element)); 
} 

Para esto se necesitan la forma CustTable sólo con y sin el argumento de registro del objeto que llama.

0

Tiene 2 opciones, puede crear un botón y anular su método clicked(), o usar un MenuItemButton y asignarle un Action MenuItem.

El uso de MenuItems es una práctica recomendada, ya que le permite utilizar el marco de configuración de seguridad de AX &. Puede asociar una clase al elemento MenuItem y en el método main() de la clase puede ejecutar el material FormRunOnClient() según sea necesario.

3

Sé que esta es una pregunta bastante antigua, pero si alguien viene aquí buscando la respuesta, simplemente llame al método clearDynalinks() en el objeto QueryBuildDataSource.

Por ejemplo, se ha creado un formulario y que es filtrado automáticamente el origen de datos debido a las Dynalinks que la dinámica crea automáticamente, a resolverlo poniendo el siguiente código dentro del método init(), en el formulario de origen de datos:

QueryBuildDatasource qbds; 
; 


qbds = this.query().dataSourceTable(tablenum(MyTableName)); 
qbds.clearDynalinks(); 

// Next line is optional, it clears initial ranges 
qbds.clearRanges(); 

// if you need to add any ranges you can do it right after you clear the initial dynalinks/ranges 

Espero que ayude ...

Cuestiones relacionadas