SoporteIniciar sesión
Contáctenos
Usar DEX_ROW_TS como SourceControl con MS Dynamics GP

Usar DEX_ROW_TS como SourceControl con MS Dynamics GP

May 15, 2015 · Michael Bock · Funcionalidades

Cuando configuramos RapidiOnline para transferir datos de un sistema ERP a otro sistema, siempre intentamos encontrar la forma de leer solo los registros modificados de un tipo de datos determinado. Algunos sistemas tienen una columna timestamp en cada tabla: es el caso, por ejemplo, de MS Dynamics NAV. El tipo de columna timestamp de MSSQL es una columna numérica que el servidor MSSQL incrementa automáticamente con cada cambio en un registro de esa tabla, lo que resulta muy práctico para detectar cambios.

Con otros sistemas, como MS Dynamics GP, no tenemos tanta suerte. ¿Qué opciones nos quedan entonces?

Presentamos la columna DEX_ROW_TS

En MS Dynamics GP versión 2010 y posteriores, algunas tablas tienen una columna llamada DEX_ROW_TS. El campo es de tipo DateTime y lo mantienen unos scripts en el lado de SQL Server. Se actualiza con la fecha y hora UTC actuales cada vez que se crea o se modifica un registro, y se puede usar como SourceControl en RapidiOnline (RapidiOnline usa un campo SourceControl para detectar cambios en una tabla y transferir solo esos cambios a otro sistema).

Suena como la respuesta perfecta a nuestras necesidades: el servidor mantiene el campo automáticamente y nos basta con usarlo para detectar los registros nuevos y modificados que hay que transferir.

Usar la columna DEX_ROW_TS en RapidiOnline

campo Source Control DEX_ROW_TS en una transferencia

Para usar la columna DEX_ROW_TS como SourceControl en RapidiOnline, solo tienes que rellenar el Source Control Field como en la imagen de arriba. Cuando la transferencia se ejecuta, registra automáticamente el valor más alto transferido con éxito y aplica filtros para leer únicamente los registros nuevos o modificados de esa tabla.

Usa la columna DEX_ROW_TS con cuidado

Sin embargo, hay una serie de limitaciones, como también señala esta entrada de blog: http://www.timwappat.info/post/2014/12/04/Beware-DEX_ROW_TS-for-data-synchronisation

  1. la columna DEX_ROW_TS solo está implementada en unas 40 tablas de GP, así que no se puede usar de forma general para todas las tablas.
  2. en algunas tablas, como Customers e Items, la columna DEX_ROW_TS también se actualiza cuando cambia información relacionada en otras tablas (como Customer Master Address File e Item Quantity Master). Así se transfieren más datos de los necesarios.
  3. ten en cuenta también que los datos de demostración que vienen con GP 2010 tienen valores de DEX_ROW_TS del año 2017: al crearlos debieron adelantar la fecha del servidor. No es un gran problema, ya que son solo datos de demostración, pero si quieres probar la funcionalidad con ellos, tendrás que actualizar la columna DEX_ROW_TS a una fecha anterior para que los registros recién modificados tengan los valores más altos en DEX_ROW_TS.
  4. por último, pero no menos importante, otros scripts o importaciones personalizados pueden estar hechos de forma que la columna DEX_ROW_TS no se actualice. Los demás programadores y administradores que trabajen en tu sistema GP deben saber que DEX_ROW_TS se usa y que hay que actualizarla correctamente en todos los cambios.

Estos son algunos efectos secundarios no deseados, por lo que usar DEX_ROW_TS no es tan evidente como usar la columna timestamp en NAV: tienes que valorar bien cada caso antes de elegir esta columna como SourceControl.

Otras formas de detectar cambios

Como alternativa a SourceControl, RapidiOnline puede usar su Mirror Technology para detectar cambios en MS Dynamics GP. La Mirror Technology guarda automáticamente una copia de los datos que lees de cada tabla de GP y la usa para comparar y entregar solo los registros nuevos o modificados al sistema de destino. La tecnología es muy rápida y almacena y compara únicamente las columnas que lees de verdad (no todas las columnas de la tabla), lo que reduce aún más los cambios enviados al sistema de destino.

Para usar DEX_ROW_TS como SourceControl, tu RapidiConnector debe estar en la versión 3.2.91i o posterior. Contacta con el soporte si necesitas actualizarlo.

Como siempre, ¡los comentarios son bienvenidos!

Michael

No te pierdas más actualizaciones de producto

Compruebe si encaja con su entorno

Díganos qué sistemas utiliza y le diremos con franqueza si Rapidi es la herramienta adecuada.