Necesito ayuda con lo siguiente:
Tengo un formulario de toma de pedidos, pero el mismo lo uso para capturar la toma de devoluciones, el asunto es que quiero evitar que el usuario tenga que hacer el cambio entre lo uno o lo otro (pedidos o devoluciones), es decir, que desde que se abra el formulario desde la opción de menú correspondiente se le puedan pasar los valores para que se abra como lo uno o como el otro. (lo he hecho desde un proceso, el cual es disparado por una acción, pero me abre en modo dialogo y lo deseo es en pantalla completa).
Lo que quiero es activar o desactivar controles del formulario en base parámetros o valores de ficha que se le pasen durante el evento pre o postinicializado.
A un formulario en modo Vista no se le pueden pasar parámetros. En realidad, en Velneo no existe el concepto de parámetros sino el de variables locales que se pueden configurar antes de mostrar el formulario.
Tienes la opción socorrida de usar una Variable Global que fijas a “P” o “D” antes de ejecutar la Acción.
Otra solución, un poco más rebuscada es la siguiente:
Tienes 2 formularios PEDIDO y DEVOLUCION, con origen pedidos y únicamente con los botones <Guardar> y <Cancelar>. Tienen una variable local CTIPO_DOC que vale “P” o “D” según sea el caso.
Tienes otro formulario PEDIDO_DEVOLUCION con origen pedidos y con todos los campos de la tabla pedidos y también una variable local CTIPO_DOC.
En cada formulario PEDIDO y DEVOLUCION insertas un control PILA_DATOS de tipo Pila de formularios con un único componente que será el formulario PEDIDO_DEVOLUCION
De esta forma consigues editar la misma ficha desde el formulario principal y el embebido dentro de la Pila de formularios.
Tendrás 2 Acciones que llamarán a los formularios PEDIDO y DEVOLUCION con una ficha nueva.
En el POS_INI de los formularios PEDIDO y DEVOLUCION
Rem (Asignamos el tipo de documento según sea PEDIDO o DEVOLUCION)
Set ( CTIPO_DOC, "P" o "D" )
Rem (Indicamos el tipo de Ficha que vamos a añadir)
Modificar campo ( TIPO_DOC, CTIPO_DOC )
Rem (Indicamos al formulario con los datos del Pedido/devolución qué tipo de documento es)
Interfaz: Set variable local de vista de datos ( PILA_DATOS.FRM_DATOS, CTIPO_DOC, CTIPO_DOC )
En el ON_SHOW del formulario PEDIDO_DEVOLUCION
Rem (En el Show del formulario ya podemos saber qué tipo de documento estamos añadiendo)
Rem (Actuamos en consecuencia)
Rem (¡¡Cuidado con el ON_SHOW que se ejecuta cada vez que activas la Pestaña!!)
Rem (Usa un semáforo o indicador que se ponga a 1 cuando se ejecuta el código una vez)
if (CTIPO_DOC = "P")
...
else
...
En este caso, en el evento POS_INI de cada formulario PEDIDO y DEVOLUCION fijamos el “parámetro” CTIPO_DOC. Tenemos que hacerlo en el POS_INI porque es donde ya existe el control PILA_DATOS y podemos usar Interfaz: Set variable local de vista de datos.
El POS_INI del formulario PEDIDO_DEVOLUCION se ejecuta antes que el de PEDIDO y DEVOLUCION, por esa razón debemos acudir al evento ON_SHOW y obtener el valor de CTIPO_DOC. Un poco lioso pero es que Velneo tiene grandes limitaciones con el tema de eventos.
Tienes la opción socorrida de usar una Variable Global que fijas a “P” o “D” antes de ejecutar la Acción.
Y como le cambio el valor antes de ejecutar la acción.
he creado un proceso en el que lo hago, y lo pongo en la acción en el objeto1 y en el objeto dos el formulario que deseo, pero no se dispara el formulario.
tanto el proceso como el formulario no están asociados a ninguna tabla.
Es necesario que el Proceso tenga salida de Ficha para que pueda ser disparado el Formulario que a su vez tendrá origen de Ficha, de lo contrario no funciona.
No, la idea es un solo formulario, ya que es similar en casi todo solo cambia el destino del los registros. (Y así evitar tener que mantener dos formularios)