REDA One Centro de ayuda
ES
Idioma
English EN Español ES Português PT Italiano próximamente Français FR Deutsch próximamente العربية próximamente
reda.one ↗
Inicio / REDA Financials AI / API e integración / APIs de Salesforce / Bulk API (importación y exportación de datos)

Bulk API (importación y exportación de datos)

Migraciones, cargas iniciales, archivos de interfaz mensuales — cuando el conteo de registros tiene comas de miles, la herramienta es la Bulk API estándar (y su versión más amigable, Data Loader). En los objetos de REDA Financials se comporta exactamente igual que REST, con una propiedad crucial intacta: cada trigger se ejecuta en cada fila, así que los documentos cargados en masa son documentos reales — numerados, validados, listos para contabilizarse.

El patrón de carga que funciona

Carga en orden de dependencia, como borradores

Primero los datos maestros (cuentas, productos, cuentas contables — normalmente por la interfaz o la configuración, no en masa), luego los encabezados de documento (Borrador), y después las líneas. Conserva tu referencia de origen en el campo Referencia para la trazabilidad y la idempotencia.

Contabiliza en un segundo pase

Una actualización masiva que cambia refin__Status__c a 'Posted' ejecuta el motor completo por registro. Como alternativa, contabiliza desde la interfaz con Contabilización masiva — la misma maquinaria, con una tabla de resultados visible para las personas. De cualquier forma, los fallos son por registro: los éxitos se mantienen y el archivo de errores indica la razón exacta de cada fallo.

Verifica como un contador, no como un ingeniero

Que coincida el conteo de filas es necesario, pero no suficiente: ejecuta la balanza de comprobación y concíliala con el sistema de origen. La guía de migración es la lista de verificación completa.

Notas de ajuste para objetos contables

  • Contabilizar es el paso pesado — el motor de impuestos, las escrituras al libro mayor y las validaciones se ejecutan por documento. Usa tamaños de lote moderados en el pase de contabilización (empieza alrededor de 50 a 100 documentos por lote y observa) en lugar de llevarlo al máximo; el modo serial evita la contención de bloqueos sobre padres compartidos como entidades y secuencias.
  • La numeración de documentos bajo carga es segura — las secuencias se asignan de forma atómica; las inserciones en paralelo no duplicarán números. Si en cambio estás preservando números heredados, escribe el Name (Nombre) de forma explícita y la unicidad se valida.
  • Las exportaciones son triviales — una consulta Bulk sobre cualquier objeto refin__; el libro mayor (refin__Accounting_Transaction__c) se exporta sin problemas para alimentar un almacén de datos.
Las cargas obedecen a los libros. Fechas de período cerrado, controles de aprobación, cuentas inactivas — las filas cargadas en masa fallan exactamente en lo mismo en que fallaría un usuario. Eso es una característica: planea las fechas de la migración contra las fechas de cierre, y establécelas deliberadamente después de cargar (nunca cargues "alrededor" de ellas).

Bulk API 2.0, en el cable

El ciclo de vida estándar del trabajo, apuntado a objetos refin__:

PasoMétodo y endpoint
Crear un trabajo de ingestaPOST /services/data/v65.0/jobs/ingest (el cuerpo indica el objeto, p. ej. refin__Purchase_Invoice__c, y la operación)
Subir el CSVPUT /services/data/v65.0/jobs/ingest/{jobId}/batches
Iniciar el procesamientoPATCH /services/data/v65.0/jobs/ingest/{jobId} con el estado UploadComplete
Consultar el estadoGET /services/data/v65.0/jobs/ingest/{jobId}
Recopilar resultadosGET …/{jobId}/successfulResults y …/{jobId}/failedResults
Exportar a escalaPOST /services/data/v65.0/jobs/query con tu SOQL

El pase de contabilización es el CSV más simple que enviarás en tu vida — Ids de registro y un solo campo:

Id,refin__Status__c
a0Y8d000002GhIjEAK,Posted
a0Y8d000002GhIkEAK,Posted
a0Y8d000002GhIlEAK,Posted

Cada fila que falla llega a failedResults con el mensaje de validación textual del paquete en la columna de error — la misma frase que leería un usuario, lista para tu hoja de conciliación.

La carga inicial de Meridian, en números

Cuando la entidad del Reino Unido de Meridian Properties Group salió en vivo, la puesta en marcha fueron tres trabajos Bulk ejecutados en secuencia un sábado: 1,830 encabezados de facturas de venta abiertas (Borrador), sus 2,614 líneas, y luego el pase de contabilización. El trabajo de contabilización devolvió 1,821 éxitos y 9 fallos — todos los fallos con el mismo mensaje sobre un período que no se había abierto para las facturas heredadas más antiguas. El equipo abrió el período, volvió a ejecutar un CSV de 9 filas, y concilió la balanza de comprobación con el sistema heredado antes del almuerzo del domingo. La lección que se quedaron: el archivo de errores es la lista de pendientes — pequeña, literal y finita.

Errores comunes que debes evitar

ErrorPor qué perjudicaHaz esto en su lugar
Cargar líneas antes de que terminen sus encabezadosLas líneas hacen referencia a encabezados que aún no existen — una pared de fallos de búsquedaSecuencia los trabajos: primero los encabezados completos, luego las líneas, después el pase de contabilización
Maximizar el paralelismo en el pase de contabilizaciónContabilizar es el paso pesado; los lotes en paralelo compiten por bloqueos sobre padres compartidos (entidades, secuencias, períodos)Modo serial o concurrencia modesta para contabilizar; observa y luego escala
Esperar un "modo de carga de datos" que se salte la validaciónNo existe — los 52 triggers empaquetados se ejecutan en cada fila Bulk, sin bandera de omisión, de forma deliberadaPrepara datos que cumplan las reglas; las reglas son el producto
Cargar documentos históricos en períodos que ya cerrasteCada fila falla el control de cierreSecuencia la migración: carga y contabiliza el histórico primero, establece las fechas de cierre al final
Tratar la paridad en el conteo de filas como un éxitoTodas las filas entraron, pero los libros siguen mal — los importes, las monedas o los mapeos contables pueden estar sistemáticamente equivocadosConcilia la balanza de comprobación con el sistema de origen antes de darlo por terminado

Qué sigue

  1. Saldos iniciales y migración de datos — la metodología.
  2. Contabilización masiva — la versión de interfaz del pase de contabilización.
  3. API REST — la contraparte registro por registro.
Documentación oficial de Salesforce La carga masiva es una capacidad estándar de Salesforce. Las referencias autorizadas son la Guía del desarrollador de Bulk API 2.0 y la Ayuda de Data Loader. Los enlaces se abren en una pestaña nueva.

Preguntas frecuentes

El mismo motor por debajo: Data Loader para cargas ocasionales o manuales (la costumbre de tu socio de implementación), Bulk 2.0 para flujos programáticos. El comportamiento de los triggers y el patrón anterior son idénticos.

Están divididos de forma limpia, no dañados: los éxitos son documentos completos, los fallos simplemente no ocurrieron (atomicidad por registro). Corrige las causas del archivo de errores y vuelve a ejecutar solo esas filas — la idempotencia basada en la Referencia mantiene seguras las reejecuciones.

Sí — los objetos de aplicación se cargan como cualquier registro, con todas las validaciones de coincidencia aplicadas por fila. Cárgalos después de que ambos lados estén contabilizados, o mejor aún: deja que la aplicación automática haga la coincidencia una vez que los documentos ya estén cargados.

No hay un límite estricto publicado — el costo de contabilizar varía según las líneas por documento, la complejidad fiscal y las dimensiones. Empieza con moderación (50 a 100 documentos por lote, en serie), observa el tiempo del trabajo y cualquier error de bloqueo en una prueba en seco en un sandbox al volumen de producción, y escala a partir de la evidencia, no del optimismo.

Lo mismo que necesitaría una persona haciendo el trabajo: el conjunto de permisos empaquetado para los documentos que se cargan, además de un puesto de licencia de REDA — la validación de licencia se aplica a las escrituras Bulk igual que a cualquier otra. Nada más, nada menos.

¿Te resultó útil?