¡Hola a todos!
En esta ocasión, quiero abordar un error común que seguramente muchos de vosotros habéis experimentado y que puede resultar muy frustrante.
¿Alguna vez os ha sucedido que al intentar registrar un pedido, una factura o una devolución, os aparece el siguiente error: “Los campos siguientes deben ser del mismo tipo…”?
Este es un error bastante habitual y suele ocurrir debido a la falta de coordinación al crear campos en las tablas relacionadas.
Es sumamente importante asegurarse de que los campos estén replicados correctamente entre las tablas.
Sin más preámbulos, ¡vamos manos a la obra! 😎
El error que se genera con mayor frecuencia, es debido a que no se crean los campos correctamente entre las tablas vinculadas. El ejemplo que vamos a seguir seria con las tablas de ventas.
Como podemos observar en las tres tablas, el mismo número de campo tiene un tipo diferente.
Esto representa un problema, y aunque podríamos pensar que cada tabla es independiente y que no es necesario replicar los campos, nos hemos encontrado con casos que tienen decenas de campos personalizados.
Mantener el control de eso en cada una de las tablas sin replicar los campos resulta ser toda una odisea.
Este error suele ocurrir en las codeunits de registro al utilizar el comando TRANSFERFIELDS.
Un ejemplo de ello lo encontramos en la codeunit 80, que se encarga del registro de documentos de venta.
Como podemos ver, lo que se está haciendo es transferir los datos de la tabla 36, correspondiente a la cabecera de ventas, a la tabla 110, que representa la cabecera de albaranes de ventas.
Debido a que los campos no son iguales, tal como hemos mostrado anteriormente, se produce el tan esperado error.
Si ya se tenéis este error, solo se puede hacer una cosa, y es crear un nuevo campo en alguna de las tablas afectadas.
Normalmente, esto se hace en aquella que está generando el desequilibrio.
Luego, se debe desarrollar una solución para transferir los datos al nuevo campo, eliminar el campo que está causando problemas y replicarlo en las demás tablas.
Siguiendo el ejemplo anterior, el resultado sería el siguiente:
En algunas tablas, hemos deshabilitado el campo, ya que no es necesario en ellas. Esto es lo que se debería hacer al replicar un campo: habilitarlo solo cuando sea necesario para la tabla correspondiente.
Replica de campos
Ahora, seguramente os preguntareis cuáles son las tablas en las que se deben replicar estos campos para evitar que el error vuelva a ocurrir. Aquí os dejo la lista de las que he encontrado hasta ahora:
Compras y ventas
- Cabeceras de ventas: 36, 110, 112, 114, 5107, 6660.
- Líneas de ventas: 37, 111, 113, 115, 5108, 6661.
- Cabeceras de compras: 38, 120, 122, 124, 5109, 6650.
- Líneas de compras: 39, 121, 123, 125, 5110, 6651.
Clientes/proveedores/bancos/contactos
- Tablas relacionadas: 18, 23, 270, 5050.
Cartera
- Cabeceras de cartera: 295, 297.
- Líneas de cartera: 296, 298.
Servicios
- Cabeceras de servicios: 5900, 5990, 5992, 5994.
- Líneas de servicios: 5901, 5989, 5993, 5995, 5902, 5991.
- Cabeceras de contrato: 5965, 5970.
- Líneas de contrato: 5964, 5971.
Almacén
- Cabeceras de picking: 5766, 5772
- Líneas de picking: 5767, 5773
Diario general
- Diario general: 81,181
Producto – Plantilla
- Plantilla de producto: 1382
- Producto: 27
Se recomienda en Business Central para una mayor facilidad de replica el poner en las tableextension un identificativo de la replica, así se pueden buscar con mayor facilidad, en todas las tablas relacionadas y con un simple copiar y pegar estarán todas las tablas replicadas.
tableextension 60000 "Sales Header" extends "Sales Header"
{
//REPLICA CAMPOS (36, 110, 112, 114, 5107, 6660)
fields
{
}
}
¡Y eso es todo! Espero que esta explicación os hayan sido de ayuda. Si tenéis algún comentario o pregunta, no dudéis en hacerla. ¡Hasta la próxima semana!