Visión general
Visión general
a3ERP permite personalizar buena parte de su comportamiento sin escribir ni una línea de código de aplicación: basta con escribir SQL en las pantallas de configuración que la propia herramienta ofrece. A eso lo llamamos parametrización, y es importante no confundirlo con los addons — DLLs y desarrollos a medida que sí son programación y están documentados en su propia categoría, Addons a3ERP. La frontera práctica es esta: si la personalización consiste en pegar una consulta SQL en una pantalla de a3ERP, es parametrización; si hay que compilar, instalar o registrar algo, es un addon.
Los cuatro artefactos#
a3ERP tiene cuatro sitios distintos donde se puede inyectar SQL, cada uno con su propósito:
| Artefacto | Qué es | Dónde se configura |
|---|---|---|
| Listados de impresión | Los documentos e informes imprimibles (facturas, ofertas, resúmenes de pedidos...). Combinan un diseño gráfico con consultas SQL | Diseñador de listados |
| Vistas SQL | Consultas o procesos que el usuario ejecuta desde el menú; al ejecutar, a3ERP pide los parámetros en una ventana | Vistas personalizadas |
| Parrillas de búsqueda | El grid que aparece al abrir una opción de a3ERP (clientes, facturas...) o en las pantallas de selección de ficheros | Botón SQL de la propia opción |
| Cubos de BI | Datasets anchos y denormalizados que alimentan el pivot grid de a3ERP BI | a3ERP BI |
Cada uno tiene su propio artículo en esta categoría con el detalle de parámetros, trampas y patrones recomendados. Este artículo cuenta lo que necesitas saber antes de tocar cualquiera de ellos.
La idea clave: tu SQL pasa por el intérprete de a3ERP#
Aunque los cuatro artefactos acaban ejecutando T-SQL contra SQL Server, ninguno le pasa tu consulta directamente. Los listados de impresión, las parrillas de búsqueda y las vistas SQL viven dentro de a3ERP y comparten su intérprete: un analizador que recorre el texto SQL antes de enviarlo, sustituyendo los marcadores de parámetros y reaccionando a caracteres especiales como : o [...] — incluso cuando aparecen dentro de un comentario. Los cubos de BI son la excepción: a3ERP BI es una aplicación aparte, con su propio motor, que no interpreta marcadores y ejecuta la consulta tal cual.
Esto tiene una consecuencia que conviene interiorizar desde el primer día: una consulta puede funcionar perfectamente en SSMS y aun así petar dentro de a3ERP. El error no está en el SQL — está en cómo el intérprete ha leído el texto. El síntoma típico es el error Sentencia incorrecta: Objeto Parameter mal definido. Se proporcionó información incompleta o incoherente. cuando el intérprete encuentra un : o un [...] donde no esperaba. Por eso SSMS sirve para validar la sintaxis y probar la lógica, pero la prueba real siempre es dentro de a3ERP. Los listados, además, pasan por un segundo motor — el de informes, que mapea los datasets del diseño — con sus propias trampas, detalladas en su artículo.
El intérprete es común, pero cada pantalla activa unos parámetros u otros. Esta tabla resume lo que significa cada sintaxis según dónde estés:
| Regla | Listados | Vistas SQL | Parrillas | Cubos BI |
|---|---|---|---|---|
Parámetros :nombre |
Sí (runtime del motor) | No | No | No |
| Marcadores propios del motor | [CondicionesListado,...] |
— | [Condicion*], [TextoBusqueda] |
— |
Parámetros de usuario [Nombre,TIPO,Default] |
Sí (poco común) | Sí — es su mecanismo principal | Sí (poco común) | No |
| Corchetes como alias de columna | Evitar (el intérprete lee [...]) |
Prohibido — usar 'Nombre' |
Prohibido — usar 'Nombre' |
Permitido — 'Nombre' o [Nombre] |
: o [...] en comentarios SQL |
Prohibido | Prohibido | Prohibido | Permitido |
El matiz que más errores causa
La gracia de poner los alias de columna entre comillas simples o corchetes es la misma: poder usar espacios y tildes para humanizar los nombres que ve el usuario. Pero dentro de a3ERP (vistas y parrillas) los corchetes están reservados para los marcadores de parámetro, así que los alias van siempre con comillas simples (SELECT col 'Nombre'). En los cubos de BI no hay marcadores ni variables, y por eso ahí sí valen las dos formas — 'Nombre' o [Nombre].
Lo que sí comparten todos#
- Dialecto: T-SQL para SQL Server.
WITH (NOLOCK)por defecto en todos los joins. Estas consultas se ejecutan en bases de datos de producción mientras hay transacciones en curso — alguien está facturando o modificando documentos en ese mismo momento. Sin el hint, la consulta puede bloquear esos documentos o quedarse bloqueada ella. No lo quites salvo que tengas un motivo claro, y en ese caso déjalo documentado.- Los códigos están "cuadrados". Es el término de a3ERP para cómo guarda los códigos en la base de datos: completados con espacios por la izquierda hasta una longitud fija, normalmente 8 caracteres (
CODFAMEST = ' 1'son ocho). UnWHERE CODFAMEST = '1'sin los espacios no encuentra nada, así que en los literales hay que respetar el espaciado exacto.
Las longitudes de cuadrado que se salen de la norma de 8:
| Campo | Tipo |
|---|---|
CODART (artículo) |
CUADRADO(15) |
LOTE / SERIE (lote y número de serie) |
CUADRADO(25) |
CODPROVI / CODPAIS (provincia y país) |
CUADRADO(4) |
TIPOCONT (tipo contable) |
VARCHAR(3) — no va cuadrado |