Problema con nueva instalación "Error Ejercicio+Numero: Requiere valor unico"

已查看 38 次
跳至第一个未读帖子

mfdezp

未读,
2016年7月1日 07:07:142016/7/1
收件人 Eneboo
Al grabar la primera venta o factura, me aparece el Error Ejercicio+Numero: Requiere valor unico, y ya hay otro registro con el valor 2016+1

Resulta que el problema está en que no graba la secuencia "nasiento" en la tabla "co_secuencias" la primera vez, si manualmente se graba, funciona, perfectamente.

He estado haciendo debug a donde se produce el fallo, que es en la función oficial_siguienteNumero de conpcpal.qs.

Resulta que cuando graba la secuencia, el valor de "valorout", aunque lo calcula no lo graba. Está en "undefined".

Ese campo tiene en la tabla "co_secuencias", una definición algo "rara" de "outtransaction" a true.

¿Sabéis que es lo que puede estar pasando?

deavid

未读,
2016年7月3日 08:20:562016/7/3
收件人 Eneboo
Suele pasar en general, en muchas de las creaciones del primer registro en secuencias y en co_secuencias. A veces en creaciones de nuevos registros también pasa.

La solución sencilla es que crees uno manualmente y ya empezará a funcionar sin problemas.

El "outtransaction" que comentas es para que las modificaciones en secuencias las haga con la segunda conexión, la que no tiene ninguna transacción. Eso evita que dos personas insertando albaranes o asientos les dé el mismo número.

Por otra parte, el error podría venir provocado por intentar hacer un insert+edit con "outtransaction". Cuando el modo es insert, supongo que lo realiza la transacción actual. Si más tarde intenta un edit, lo hace con la externa. La transacción externa seguramente no ve el registro, por lo que no lo modifica.

Otra explicación posible es que la transacción actual ya tenga el registro bloqueado por algún motivo, por lo que las actualizaciones externas no se ven.



--
Has recibido este mensaje porque estás suscrito al grupo "Eneboo" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a eneboo+un...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

mfdezp

未读,
2016年7月4日 11:44:092016/7/4
收件人 Eneboo
Muchas gracias David.

Ya lo había solucionado como cuentas, creando el registro manualmente, de hecho he modificado el formulario de ejercicios para poner un botón que lo haga.

Lo que no entiendo es por qué falla, si ese codigo está en los modulos base directamente y falla cuando al crear una factura, por ejemplo, se van a crear los registros de apuntes en la contabilidad, al crear más de uno, por eso debe poner el undefined, pero es que falla la creación de una factura, y claro se te queda cara de tonto....

Lo que no entiendo es la explicación que das para el "outtransaction", porque si realmente funcionara, no debería dar ese error, ¿no te parece?

Muchas Gracias de todas formas.

deavid

未读,
2016年7月4日 15:45:262016/7/4
收件人 Eneboo
> Lo que no entiendo es la explicación que das para el "outtransaction", porque 
> si realmente funcionara, no debería dar ese error, ¿no te parece?

Deduzco que no entiendes a fondo cómo funciona una transacción y cómo comparten, especialmente en Postgresql, los datos entre distintas conexiones.

Precisamente por cómo se supone que funciona es el principal motivo que me hace sospechar que falle en ese caso; desde fuera de transacción, por mucho que cambies un registro, dentro no se ve si lo tienes bloqueado.

Eneboo tiene dos conexiones, la principal y la auxiliar. La principal es la que se usa para casi todo. La auxiliar se dedica a crear índices, al util.sqlSelect, los cambios con outtransaction y creo que poco más.

En fin, si necesitas saber algo más concreto, dímelo. Pero no puedo realizar una explicación que me tomaría seguramente varias páginas para detallar cómo funcionan las transacciones de base de datos a bajo nivel y los hándicaps usuales.

PostgreSQL también tiene manuales y páginas que explican cómo funciona una transacción y el MVCC, que es la madre del cordero aquí.

回复全部
回复作者
转发
0 个新帖子