Creo que en algún momento hace tiempo pregunté sobre esto, pero el problema se ha vuelto a presentar. El sistema me ha vuelto a duplicar fichas.
Sobre esto hay varias cosas particulares y otras que no les encuentro mucho sentido:
Esto solo le ha pasado a un usuario en particular (creo que ha pasado en el mismo equipo que la primera vez que sucedió).
Las fichas tienen campos de tiempo de creación, el tiempo es exactamente el mismo.
Existe un campo #ID autoincrementable por el sistema, las fichas estan consecutivas.
La aplicación esta basada en vERP, por lo que el control de existencias está en las fichas. Este dato no se duplicó sino que “calculó” las existencias finales para cada ficha “correctamente”.
La aplicación genera, aparte del ID, un consecutivo que se usa para el identificador del documento/ficha para el usuario, este dato tampoco está duplicado, sino que son consecutivos.
Ahora aquí viene lo extraño en cuanto a datos. Hay un campo, que mediante validación por código no permite valores repetidos. Aquí sí aparece el mismo dato duplicado cuando se supone que el código no lo permite.
La aplicación, despues de guardar el registro, pregunta si se quiere imprimir el documento (ficha), el usuario lo imprime y el que se imprime es la segunda ficha. El usuario no se da cuenta del registro duplicado hasta que lo ve en la rejilla.
¿A nadie le ha pasado esto?
Creo que el origen esta en el primer punto, pero ¿Que hace el equipo que duplica la ficha haciendo los calculos “correctos” para una nueva ficha, pero sin hacer las respectivas validaciones?
Hola Marco, “no permite duplicación por codigo” ?
explicanos a que le llamas no permitir por código para que entendamos que hiciste para no permitir la duplicación.
Si el #ID autoincremental no se duplica, entonces funciona bien, no conozco ningun sistema velneo que duplique el #ID autoincremental que es primary key de cualquier tabla.
Hola, qué tal. En cuanto al ID no es el problema, lo que menciono es que tengo otro campo, que por medio de validaciones en código checo que no esté duplicado (una larga historia que es punto y aparte).
Entonces al generarse una de las fichas con ese campo con un valor, digamos “ABC123”, ninguna otra ficha podrá tener ese mismo valor en ese campo, ya que en el proceso de guardado valido en todas las fichas que no exista ese valor, y si existe, mando el correspondiente mensaje de error y termino el proceso sin guardar, pero en esta ocasión el sistema me guardó las dos fichas idénticas (salvo los campos que mencioné) y con este campo con el mismo valor, lo cual genera las siguientes dudas:
Debido a que ciertos campos (entre ellos el ID, y el número de serie, el cual este último se genera mediante triggers) en ambas fichas siguen su orden consecutivo, quiere decir que no se generaron “al mismo tiempo exacto” sino que en un momento del tiempo existió primero uno y luego el otro, pero con el campo que yo valido en el código del botón guardar que no se duplique, pareciera que no existió alguno de ellos previamente en un momento del tiempo, por que la validación no falla, y tan no falla que ambas fichas guardan el mismo valor “ABC123”, como si no existiera una ficha previa a la segunda. No se si me logre explicar correctamente estos casos como tipo el gato de Schrödinger.
Como lo comenté, este caso me pasó hace ya casi dos años, y retomando la documentación de aquel caso te puedo complementar lo siguiente:
Es otro proceso (pantalla) diferente, pero que guarda en la misma tabla. En este otro caso, el proceso genera dos fichas. En resumen, ¿Qué fue lo que pasó en esa ocasión? pues que me aparecen las fichas con ID 7324 y 7325 de manera correcta, pero también aparecieron dos fichas extras, con ID 7326 y 7327, siendo la 7326 una copia de la 7324 y la 7327 una copia de la 7325. Es decir, la ficha duplicada no se generó en el momento de la “original”, sino que al parecer, parecería que el proceso de guardado se ejecutó nuevamente después, pero en este proceso que te menciono en este momento, no existe la validación del “otro” campo (aquí va vació). Aquí también reitero que el código usado no fue el mismo para todos los casos.
La verdad es que el caso es muy extraño y tal vez por eso es tan complicado de explicar porque la lógica de programación y de BD al parecer no aplican.
Saludos cordiales.
Mira, sin ver código y estudiarlo no te puedo dar un veredicto claro pero es evidente que el problema no es Velneo, sino tu programación. A saber;
Revisa los triggers, especialmente los “Anteriores a…”
Revisa las actualizaciones que estes haciendo, me ha pasado que al tener varias actualizaciones actuando en la misma tabla producen “problemas” según el orden en el que esten siendo ejecutadas.
Revisa que el campo que se está duplicando tenga un indice por clave única, de esta forma velneo no dejara que duplique, por mas que en tu código algo quiera duplicarlo.
Hola Matías.
NOTA: En américa solemos usar la palabra “registro” en lugar de “ficha”, que aunque trato de usar este último para homologar, por costumbre suelo usar el primero, por eso a veces pongo uno u otro.
Cierto, como dices, sin ver código es muy complicado, pero con lo que me comentas me quita varias telarañas y yo mismo puedo ver un poco más allá. Como comenté, las pantallas donde se han generado los problemas no son las mismas, por lo que “esa parte de código” a revisar sería más complejo de lo que parece, por que no estamos hablando de un solo procedimiento o código, sino de varios, pero lo que sí es lo mismo es la tabla, y como bien comentas pudieran ser los triggers, pero me salta la duda nuevamente en el ejemplo que puse de la imágen, si fueran los triggers, en el caso del proceso que debe de generar dos fichas (y termino con 4), si fueran los triggers, se generaría un registro y su duplicado, luego el otro registro y su correspondiente duplicado, más no fue así, se generaron los dos registros que deberían y luego se generaron los dos registros duplicados, como si el código se hubiera ejecutado dos veces, pero nuevamente insisto, si esto sucedió también en los.procesos que solamente generan una ficha y hacen una validación antes de guardarla, como es que se genera la primera ficha y se guarda, y luego se genera la segunda ficha y entonces ahí no se ejecuta el famoso código que valida el valor único en el campo, ya que al final si se guarda la ficha duplicada. La verdad todo un caos lo de encontrarle pies y cabeza a esto.
Sobre el campo que valido a pie para que sea único, no puedo cambiar el tipo de campo a “único”, ya que esto de validar el campo de manera única se hizo de manera posterior, y existen entonces fichas con valores duplicados (hablando solo de este campo) anteriores a este cambio y pues no debería de modificarlas ya que quedan como historial de alguna manera.
Además, lo que también es bien inquietante es que únicamente esto ha pasado en la misma sucursal y al parecer en el mismo equipo, ya que del resto de los usuarios nunca les ha sucedido.
De cualquier manera se agradecen mucho tus comentarios.
Yo también soy de Latam pero me he acostumbrado al lenguaje neutro, o eso creo.
No hay mucho más que acotar, es un automatismo que se te está pasando… en Velneo las actualizaciones y otras abstracciones son súper cómodas pero en el momento en que te descuidas se te empiezan a mover las cosas solas “sin haberlas programado” y no es nada más que algún pedazo de código o abstracción invisible.
A lo mejor te convenga programar una tabla nueva con las mismas relaciones que la vieja que tiene problemas, después programar un proceso que corra en 3P y que ejecutes para traspasar los datos viejos a los nuevos, asi puedes marcar ese campo que duplica como de clave unica, en el proceso de traspaso validas que no se dupliquen y si se duplican haces que el proceso le cambie el código para asi tener registros unívocos. De esta forma puedes iniciar a trabajar con una tabla nueva y “saneada” de vicios de programación viejos.
A mi me ha pasado esto de un mismo registro duplicado cuando el botón Guardar ejecuta un proceso. Al parecer el usuario presiona varias veces el botón (o el sistema lo interpreta de esa forma), mientras espera a que se cierre la ventana.
La solución que me ha funcionado es que en la primera línea de este proceso activo una variable local que deshabilita el botón guardar, por eso sospecho de que el usuario presiona varias veces el botón. En un proceso que se ejecuta al abrir la ventana, esta variable local se desactiva.
Un saludo.
Hola aguevara, eso me parece bastante sensato y sobre todo explica el que se haya presentado en diferentes pantallas y explica también un poco el caso del proceso que debe generar dos fichas, y después de esas dos fichas vienen los duplicados de cada una y no enseguida de cada registro como cabría esperar si el problema estuviera en los triggers, más sin embargo, tomando en cuenta ahora el caso del proceso que solo genera una sola ficha y hace la validación de un campo para que el valor sea único, si se ejecuta dos veces, como comentas, una tras de otra, en este caso, la segunda debería de fallar, ya que las validaciones no me dejarían guardarlo por lo que expliqué del campo único que valido manualmente. Ahora bien, ¿Cómo es que la ficha “duplicada” ignora la validación, como si no existiera o no pudiera ver a la original, pero a la vez, el folio consecutivo (tanto el ID como un folio controlado por tipo de documento) si consideran que hubo un registro anterior, ya que ambas fichas estan en consecutivos perfectamente asignados?
Esa es mi duda más grande, que parece que el sistema si ve la ficha “original” para unas cosas cuando procesa la “duplicada”, pero no la toma en cuenta para otras.
Finalmente, el proceso de guardado, al final de todas las validaciones, si estas han pasado correctamente, viene el comando para guardar en disco y mandar el formato a impresión. ¿Por qué solo aparece esto para la “duplicada” y no para la “original”?
Aunque finalmente, a pesar de que el orden en que suceden las cosas, como traté de explicar, no tienen mucho sentido, si pudiera esto deberse tal vez a un ratón dañado que haga una doble pulsación involuntaria, y por eso solo ha sucedido en una sola ubicación física y creo que en el mismo equipo hace dos años y en esta ocasión.
Hace dos años pasó sólo dos veces y en esta ocasión también. No se si darle más tiempo a esta eventualidad, pero de cualquier manera la quise compartir para ver si alguien había pasado por algo similar.
Una actualización que tal vez pueda servir.
El equipo donde se ha presentado estos casos, es un equipo con windows 8, y justo ahorita me lo han reportado por algo que creo que puede ser el motivo.
Me reporta el usuario que últimamente la aplicación le manda el mensaje que se ha desconectado del servidor.
Lo primero que hice fue revisar si la desconexión se debe a nivel de LAN o de Internet. Dejé un ping continuo hacia el router y nunca bajo de 1 ms y un ping continuo hacia Internet, y nunca bajo de 6-7 ms. Y así estaban cuando de pronto apareció el mensaje de la app que se desconectó del servidor y los ping seguían estables. Ojo, no pude dejar el ping hacia mi servidor en la nube ya que está descativada la respuesta por el firewall, pero si fuera el servidor, a todos, o a más de un usuario de CUALQUIER localidad le haría lo mismo y nadie más me ha reportado casos de desconexión.
¿Acaso el cliente tiene algún tipo de problema para correr en Windows 8?