sobre modificar ficha en proceso


([N1] samuelblanquez.net) #1

Hola a todos, a ver si alguien me desatasca, que estoy con una tonteria y no veo el porque…
tengo un proceso que recorre una Lista, … cargo cada una de las fichas en un segundo proceso que tiene como origen ficha, (de la misma tabla se entiende), dentro del segundo proceso modifico valores de campos … y. … … cuando salgo del proceso (al proceso lista), he perdido los cambios… que hago mal???

hago un modificar campo, y el valor cambia seguro porque me he puesto un mensaje que me enseña el valor y lo ha cambiado…


([N1] Pepeto) #2

El proceso lista, lo recorres en lectura/escritura?

  • Si en ese proceso no modificas nada, hazlo en Solo lectura

El 2º proceso lo ejecutas con “Ejecutar proceso” directamente?

  • Si es asi, deberias pensar mejor en ejecutarlo con el manejador de objetos y ya de paso, en 3º plano, si es posible.

El problema, puede ser que el 1º proceso se bloquea las fichas y por eso no te funcionan los cambios realizados en el 2º proceso.

un saludo
José Luis
http://www.ascsl.com


([N1] samuelblanquez.net) #3

Gracias pepeto,
El caso es que he probado a recorrer 1 proceso en solo lectura y en lec/esc y en ambos casos me sucede lo mismo.

lo lanzo con crear manejador de objeto,
añado ficha al objeto, y despues disparo,… he probado a disparar en 1, 2 y 3 plano.
Incluso he probado a devolver del proceso la misma ficha (añadir ficha a la salida) para ver que está pasando…

En la imagen, dentro da un valor y fuera otro:

no me deja adjuntar :frowning:

bueno escribo codigo que no me deja adjuntar imagen.

crear manejador( obj2
Recorrer lista solo lectura
añadir ficha al objeto(obj2
disparar(obj2, (he probado en 1, 2 ,3)
mensaje dentro
mensaje fuera


([N1] samuelblanquez.net) #4

imagen


([N1] Pepeto) #5

Creia que el proceso seria:

Recorrer lista solo lectura
– crear manejador( obj2
– añadir ficha al objeto(obj2
– disparar(obj2,
– -- mensaje dentro
– mensaje fuera

un saludo.
josé Luis
http://www.ascsl.com


([N1] Pepeto) #6

Aunque, visto de otra forma, si tienes que recorrer toda la lista
porque no creas un proceso lista para modificar y recorres la lista dentro del proceso en 3 plano

(Lista de registros)
crear manejador( obj2
disparar(obj2,
– mensaje dentro
mensaje fuera

(Proceso en 3º plano de lista)
Recorrer lista lectura/escritura
– aqui lo que tengas que modificar.

un saludo
José Luis
http://www.ascsl.com


([N1] samuelblanquez.net) #7

Te contesto pepeto:
del post #24536
creo el manejador de objeto fuera del bucle por optimización, creo que es más efectivo no crear una instancia del objeto cada vez.
y en otros casos me ha funcionado sin problemas.

creo el manejador fuera del bucle … y despues creo el bucle (que sea necesario) añadiendo todas las fichas que sean necesarias, y despues lo lanzo, (si la entrada en el proceso es de lista).

(sobre post #24537)
Si la entrada en el proceso es de ficha, no veo el porque volver a hacer que la base de datos busque el registro… si tengo un proceso que lo recorre y ya estoy en el registro que quiero modificar, … se lo paso al proceso ficha … y actuo…

Estoy buscando tener el proceso para cada documento en un unico sitio, … y llamarlo desde lista cuando se trate de trabajar con muchas fichas a la vez… o cuando se trate de una unica…

Ejemplo : proceso contabilizar factura… (es el mismo si el origen es una unica factura, o si son 1000) … en caso de 1000 las recorro con un proceso de lista… y se las mando a un proceso de ficha… no es esa la lógica???

no está pensado el uso de ficha y de lista para eso? ¿pregunto … (sin ironia) ?

MUUCHAS GRACIAS


([N1] JaimeNA) #8

Quizás sea una tontería, pero ¿has utilizado “Seleccionar ficha por posición()” antes de modificar el campo?, porque a veces se me olvidaba y no se grababa el dato

De todas formas si lo único que haces es modificar un campo de cada registro, no entiendo para que tienes que hacerlo en un segundo proceso y no en el mismo que recorre la lista.

Un saludo


([N1] Pepeto) #9

Tienes razon,
Pero como no se el uso que le vas a dar al proceso, te doy ideas.
Para segun que casos, lo hago de una forma o de otra y me funciona.
Quiza para poder ayudarte mejor, tendria que ver los procesos.

un saludo
José Luis
http://www.ascsl.com


([N1] samuelblanquez.net) #10

el proceso es bastante complejo, y cuando lo termino, doy una serie de valores a la ficha actual, (por ejemplo en Nº de asiento),
además el proceso debe poder ser llamado individualmente, (contabilizar una unica factura), o contabilizar un ciento…

ese es el motivo por el que intento hacerlo con origen ficha.

te enseñaria los procesos pero no me deja adjuntar… :frowning:

voy a abrir un soporte

sobre lo de leer ficha por posicion… creo que es solo para listas, y no para fichas… no es así???

Gracias por adelantado

(nadie ha usuado una lista para pasar valores a una ficha y operara con esta??? tengo la sensación de que el paso de parametros es por referencia… en vez de por valor… :frowning:


([N1] Pepeto) #11

Si no puedes adjuntar, aqui tienes mi correo, jose@ascsl.com

un saludo
José Luis
http://www.ascsl.com


([N3] rc) #12

([N1] samuelblanquez.net) #13

gracias pepeto, no te he molestado porque me han contestado de soporte adjunto para que la comunidad se pueda beneficiar:

Buenos días,xxxxxxx.

Este comando no genera transacción por sí mismo; esto quiere decir que el uso de este comando modifica el contenido del campo pero no graba el cambio en disco.

En un proceso, para que el nuevo valor del campo sea guardado en disco, la ficha deberá haber sido abierta previamente en modo lectura/escritura en ese mismo proceso, por ejemplo, mediante el uso de comandos del tipo “modificar ficha seleccionada”, “recorrer lista lectura/escritura”, etc.

Ejemplo:

Veamos los siguientes procesos:

Proceso principal:

Recorrer lista lectura/escritura
….Ejecutar proceso -> MODIFICAR_CAMPOS

Proceso MODIFICAR CAMPOS:

Modificar campo -> FECHA, currentDate()Modificar campo -> HORA, currentTime()

La modificación es hecha en el subproceso pero no se retorna al volver al proceso principal.

En este caso lo más recomendable sería hacer la modificación de campos en el proceso principal:

Recorrer lista lectura/escritura
….Modificar campo -> FECHA, currentDate()….Modificar campo -> HORA, currentTime()

ESTO LO AÑADE samuel:

Vamos que dado que los comando recorre lista, modificar ficha seleccionada …etc son para origen de datos lista,… .en ficha… solo lectura… (abreviando)