Software Lab

REGEX – Regular expressions, ejemplos

Dic
20

REGULAR EXPRESSIONS

 

Ejemplos prácticos para hacer sustituciones de texto en editores compatibles con regular expressions, como por ejemplo: SublimeText, Notepad+ o Ultraedit.

 

  1. Sustituir en una línea el valor de la  fecha 20161217 por otra fecha (un día menos): 20161216


175129|001TIE|20161111
175129|002TIE|20161217
175129|001NIJ|20161217

REGEX = ON

Search : (.*)(2016121)(7)
replace : $1$2\66

Resultado:


175129|001TIE|20161111
175129|002TIE|20161216
175129|001NIJ|20161216

 

SQL – consultas útiles de estructura de bases de datos, campos, vistas, etc

Dic
12


–¿Cómo buscar por nombre de campo en todos los objetos de la base de datos?

SELECT sysobjects.name AS table_name, syscolumns.name AS column_name,
systypes.name AS datatype, syscolumns.LENGTH AS LENGTH
FROM sysobjects INNER JOIN
syscolumns ON sysobjects.id = syscolumns.id INNER JOIN
systypes ON syscolumns.xtype = systypes.xtype
WHERE 1=1
–and (sysobjects.xtype = ‘U’) /*U=SOLO TABLAS*/
and (UPPER(syscolumns.name) like upper(‘%lopd%’))
ORDER BY sysobjects.name, syscolumns.colid

 

–¿Cómo consultar la definición de una Vista?

SELECT definition, uses_ansi_nulls, uses_quoted_identifier, is_schema_bound
FROM sys.sql_modules
WHERE object_id = OBJECT_ID(‘vRG_Clientes_DatosAux’);

EXPORTAR EXCEL A CSV

May
03

CÓMO EXPORTAR UNA HOJA DE EXCEL A FORMATO CSV ENTRECOMILLADO

Excel exporta a formato de texto o csv con el separador de campos definido por defecto en el pc. Pero Excel no dispone de una opción de formateo de salida de los campos para que, por ejemplo, se exporten los campos entrecomillados.

Para conseguir la exportación de una hoja en formato csv estándar, es decir, todos los campos entrecomillados con comillas dobles (“) y separados con punto y coma (;) indicamos un procedimiento empleando una macro de excel.

 

CREAR LA MACRO EN EXCEL

Desarrollador – Visual basic – Insertar –  Módulo – <pegar macro> – Guardar

 

EJECUTAR LA MACRO EN EXCEL

  1. En la hoja se marca el bloque a exportar
  2. Acceder a Vista – Macros – Seleccionar la macro QuoteCommaExport
  3. Teclear la unidad, carpeta y fichero csv de exportación

 

CÓDIGO FUENTE DE LA MACRO QuoteCommaExport

Sub QuoteCommaExport()

  ‘ Dimension all variables.

  Dim DestFile As String

  Dim FileNum As Integer

  Dim ColumnCount As Integer

  Dim RowCount As Integer

  ‘ Prompt user for destination file name.

  DestFile = InputBox(«Enter the destination filename» _

  & Chr(10) & «(with complete path):», «Quote-Comma Exporter»)

  ‘ Obtain next free file handle number.

  FileNum = FreeFile()

  ‘ Turn error checking off.

  On Error Resume Next

  ‘ Attempt to open destination file for output.

  Open DestFile For Output As #FileNum

  ‘ If an error occurs report it and end.

  If Err <> 0 Then

  MsgBox «Cannot open filename » & DestFile

  End

  End If

  ‘ Turn error checking on.

  On Error GoTo 0

  ‘ Loop for each row in selection.

  For RowCount = 1 To Selection.Rows.Count

  ‘ Loop for each column in selection.

  For ColumnCount = 1 To Selection.Columns.Count

     ‘ Write current cell’s text to file with quotation marks.

     Print #FileNum, «»»» & Selection.Cells(RowCount, _

           ColumnCount).Text & «»»»;

     ‘ Check if cell is in last column.

     If ColumnCount = Selection.Columns.Count Then

           ‘ If so, then write a blank line.

           Print #FileNum,

     Else

           ‘ Otherwise, write a comma.

           Print #FileNum, «;»;

     End If

  ‘ Start next iteration of ColumnCount loop.

  Next ColumnCount

  ‘ Start next iteration of RowCount loop.

  Next RowCount

  ‘ Close destination file.

  Close #FileNum

End Sub

 

OBSERVACIONES

Para dejar la macro permanente y disponible para todas las hojas abiertas consulta la documentación de tu versión de excel, al objeto de crear una plantilla de macro reutilizable. De lo contrario, la macro se almacenará solo en la hoja activa.

 

FUENTE

Microsoft: https://support.microsoft.com/en-us/kb/291296

 

Sage X3 – Qué es soporte, consultoría, configuración, desarrollo y formación.

Mar
23

Al hablar de servicios de empresa y de buen servicio no demos nada por entendido y aclaremos conceptos.

Nosotros vemos así, desde dentro, cómo es nuestro trabajo y cómo lo organizamos para prestar al cliente la mejor experiencia posible.

El objetivo es ser eficaz, poder interactuar con los usuarios de la forma más fluida y cordial posible, cada uno cumpliendo su rol.

¿Qué es Soporte?

-Facilitar información técnica a distancia por diversos medios con el fin de intentar resolver las dudas técnicas u operativas de los usuarios. En estas acciones el compromiso de la intervención del técnico no implica actuaciones sobre las aplicaciones, sino las respuestas a las preguntas del usuario.

 

-Facilitar los parches y actualizaciones de las aplicaciones informáticas sin incluir acciones técnicas para su descarga o instalación.

 

¿Qué es consultoría?

-Aconsejar al cliente la estrategia a seguir ante situaciones empresariales, consultas o problemas de las empresas y sus órganos. La consultoría es multidisciplinar incluyendo soluciones en el ámbito del marketing, la organización, la fiscalidad, la tecnología, etc.

 

-Saber lo que hay que hacer no implica ser quien lo hace. Llevar a cabo las soluciones las realiza el equipo técnico de configuración, desarrollo, soporte y formación.

 

¿Qué es Configuración/Parametrización?

-Son acciones técnicas de un nivel de dedicación y conocimiento superior al soporte técnico de nivel básico. La parametrización implica, bien presencial o a distancia, una dedicación del técnico a la solución directa del problema actuando dentro del sistema informático.

 

-Son acciones técnicas para configurar las tablas existentes, pantallas, vistas, listas, consultas, u otros objetos, que llevan implícito un conocimiento funcional del responsable técnico.

 

-Normalmente para configurar se emplean asistentes de software que guían al técnico funcional en la edición de tablas de parámetros y otros objetos que entre todas configuran un proceso o circuito de negocio.

 

-Instalar aplicaciones, módulos, actualizaciones de versión, parches correctivos, parches funcionales, su verificación y puesta en producción.

 

Ejemplo de configuración/Parametrización:

Siguiendo directrices de los consultores, cumplimentar los valores de una tabla de un proceso, como por ejemplo, una tabla de estados de una entidad:

 

¿Qué es Desarrollo?

-Es codificar módulos de las aplicaciones informáticas de software, mediante uno o más lenguajes de programación, o crear herramientas de software, o implementar funciones a medida más allá de la configuración por asistentes.

 

-Crear nuevas bases de datos, tablas, campos, vistas y objetos de datos y sus propiedades.

 

-El desarrollo implica el conocimiento de código programado para crear objetos de tipo funcional, procesos, circuitos, procedimientos, listas, vistas, pantallas, etc., que después configura funcionalmente un técnico de configuración para que lo explote un usuario entro de la funcionalidad establecida.

 

-Configurar las nuevas consultas, campos y filtros de los modelos de documentos de compra, venta, etiquetas, listados, informes a medida, etc., su aspecto formal y su exportación o explotación en diferentes medios.

 

-Tratar datos para su importación y exportación en bases de datos y sistemas de Información, como migraciones, exportaciones a ofimática, intercambio de datos EDI, etc.

 

-Desarrollos externos a Sage X3.

 

-Desarrollo de informes en Ms SQL Reporting Service, Crystal Reports o Qlickview (Business Intelligence).

 

-Analizar y codificar aplicaciones específicas dentro de Sage X3 para enriquecer la  funcionalidad estándar.

 

Nivel 1: Desarrollo dentro de X3 – añadir un nuevo campo, vista, pantalla, etc. (hasta 1 jornada).

 

Ejemplo nivel 1:

-Creación de campos en ficha artículos, clientes, leads, etc.

 

Nivel 2: Desarrollo dentro de X3 – Añadir código y funcionalidad (más de 1 jornada).

 

Ejemplos nivel 2:

-Desarrollo de aplicaciones para enlace con aplicaciones externas.

-Desarrollo de funcionalidad nueva dentro de X3.

-Interfaz entre una plataforma web de captura de datos y Sage X3.

-Cálculo de un campo estadístico de consumos en base a criterios predefinidos. Reproceso automático del campo estadístico e incorporación al maestro de clientes.

 

Ejemplo gráfico de desarrollo:

Siguiendo directrices de los consultores, crear campos en una tabla y formatearlos en sus objetos relacionados, como pantallas y listas.

Incluirlos en modelos de importación.

Incluirlos en código desarrollado para que estén implicados en procesos de negocio.

 

¿Qué es Formación?

-Es enseñar a los usuarios a utilizar una aplicación informática empleando técnicas docentes para facilitarles la curva de aprendizaje.

-La formación se realiza sobre producto terminado con una parte teórica y otra práctica que permite evaluar el nivel de competencia del usuario.

 

Joomla v3+ – Activar un popup modal en la carga inicial de una página, por ejemplo la de inicio.

Feb
23

//script modal en un artículo de joomla por ejemplo el INICIO, para que salte el popup en la carga incial de la página.

<p> </p>
<!–SCRIPT QUE PREPRA EL MODAL PARA LANZARLO EN EL INICIO–>
<script type=»text/javascript»>// <![CDATA[
window.addEvent(‘domready’, function(){
window.addEvent(‘load’, function(){
SqueezeBox.fromElement($(‘popup’));
});
});
// ]]></script>
<!– LANZAR EL POPUP EN EL INICIO –>
<p style=»color: white;»>
<a id=»popup» class=»modal» href=»images/images/FelicitacionNavidadADEMAN2013.jpg» rel=»{handler: ‘iframe’, size: {x: 900, y: 686}}»>
.</a></p>

 

//misma solución en php

<!–SCRIPT QUE PREPARA EL MODAL PARA LANZARLO EN EL INICIO–>
<script>
window.addEvent(‘domready’, function(){
window.addEvent(‘load’, function(){
SqueezeBox.fromElement($(‘popup’));
});
});
</script>
<!– LANZAR EL POPUP EN EL INICIO –>
<a class=»modal» id=»popup» rel=»{handler: ‘iframe’, size: {x: 900, y: 686}}» href=»http://www.ademan.com/images/images/FelicitacionNavidadADEMAN2013.jpg»></a>

 

SageCRM v7.3 – Entidad ‘personas’. Actualizar campo de ficha de empresa al actualizar persona. Tablescripts

Oct
02

Dentro de la funcionalidad avanzada de Sage CRM encontramos un elemento muy útil de programación, basado en javascript, para automatizar las actualizaciones de datos.

Se trata de los tablescripts o scripts de tabla. Se programan en cada entidad (no funcionan con entidades creadas por los usuarios).

Técnicamente son inserciones de código javasript dentro de los eventos del registro

InsertRecord() , PostInsertRecord(), UpdateRecord() , function DeleteRecord()

…y utilizando el API de Sage CRM integrado en el código javascript se pueden realizar por ejemplo procesos como el siguiente:

Modificar un campo de la ficha de empresa al modificar un registro de persona de esa empresa:

function InsertRecord()
{
// Handle insert record actions here
}

function PostInsertRecord()
{
// Handle post insert record actions here
}

function UpdateRecord()
{

var compctext = CRM.GetContextInfo(‘person’,’pers_companyid’);
var complink = CRM.FindRecord(‘company’,’comp_companyid=’+compctext);

while (!complink.EOF)
{
complink.comp_integradox3 = ‘N’;
complink.NextRecord();
}
complink.SaveChanges();

}

function DeleteRecord()
{
// Handle delete record actions here
}

 

Sage 100 – SQL Server 2008 – Procedimiento almacenado para consultar una factura

Sep
30

100% compatible con Sage 100 v15 SQL y Ms SQL Server 2008
80% compatible con Sage 100 v16+ SQL y Ms SQL Server 2008 R2, 2012

 

Si necesitamos consultar o imprimir un documento en el cual estén contemplados los datos de campos virtuales suplementarios de Sage 100, solo tenemos la opción de hacerlo mediante una lectura del driver ODBC.

Empleando el driver ODBC las consultas son muy lentas por lo que se recomienda realizar las consultas con queries SQL.

 

Si además por motivos de optimización de código queremos crear una vista  para la consulta tendremos un obstáculo: las vistas de SQL Server 2008 no admiten parámetros. Por lo tanto la solución que nos queda es crear un procedimiento almacenado y ejecutarlo pasando cada vez los parámetros necesarios, en este caso el número de documento a consultar.

En nuestro ejemplo tenemos una consulta que hace referencia a los campos fundamentales enlazados con todas las tablas que intervienen en una venta. Además el negocio emplea gamas (tallas y colores), código de barras de cruce de gamas y forma de pago múltiple.

Esta es nuestra query:

 

USE BIJOU
GO

DECLARE @DOPIECE varchar(10)
SET @DOPIECE = ‘T2141175’

SELECT
DL.DO_DOMAINE, DL.DO_TYPE, DL.DO_PIECE, DL.DO_DATE, DL.DL_Ligne, DL.DL_No, DL.AR_Ref, DL.DL_MontantHT
, DL.DL_MontantTTC, DL.DL_MvtStock, DL.DL_PrixUnitaire, DL.DL_Qte, DL.DL_Remise01REM_Valeur, DL.DL_PUBC
, DL.DL_PUTTC, DL.DL_Taxe1, DL.DL_TypeTaux1, DL.DL_Valorise

, DT.DO_Tiers
–NO EXISTEN EN SAGE100 SQL: ,FNT_TOTALTTC, FNT_NETAPAYER
, (SELECT SUM(F_DOCLIGNE.DL_MontantTTC)FROM F_DOCLIGNE WHERE F_DOCLIGNE.DO_DOMAINE=0 AND F_DOCLIGNE.DO_Type=6 AND F_DOCLIGNE.DO_Piece=@DOPIECE) AS TOTALCONIVA
, (SELECT SUM(F_DOCREGL.DR_Montant)FROM F_DOCREGL WHERE F_DOCREGL.DO_Type=6 AND F_DOCREGL.DO_Piece=@DOPIECE AND F_DOCREGL.DR_Regle=0) AS NETOAPAGAR

, DR.DR_EQUIL, DR.DR_DATE, DR.DR_MONTANT
–NO EXISTE EN SAGE100 SQL: , DR.INT_REGLEMENT
, PA.R_INTITULE

, CT.CT_Intitule, CT.CT_NUM

, RE.RE_NOM

, FA.FA_Intitule

, AN.AE_CODEBARRE

FROM
F_DOCLIGNE DL

INNER JOIN F_DOCENTETE DT ON
DL.DO_Domaine = DT.DO_DOMAINE
AND DL.DO_Piece = DT.DO_PIECE
AND DL.DO_TYPE = DT.DO_TYPE

INNER JOIN F_DOCREGL DR ON
DR.DO_DOMAINE = DL.DO_DOMAINE
AND DR.DO_PIECE = DL.DO_PIECE
AND DR.DO_TYPE = DL.DO_TYPE

INNER JOIN P_REGLEMENT PA ON
PA.cbIndice = DR.DR_TypeRegl

INNER JOIN F_COMPTET CT ON
CT.CT_NUM = DL.CT_Num

INNER JOIN F_REPRESENT RE ON
RE.RE_No = DL.RE_No

INNER JOIN F_ARTICLE AR ON
AR.AR_Ref = DL.AR_Ref

INNER JOIN F_FAMILLE FA ON
FA.FA_CodeFamille = AR.FA_CodeFamille

INNER JOIN F_ARTENUMREF AN ON
AN.AR_Ref = DL.AR_Ref
AND AN.AG_NO1 = DL.AG_NO1
AND AN.AG_NO2 = DL.AG_NO2

WHERE
DL.DO_Domaine = 0
AND DL.DO_Type = 6
AND DL.DO_Piece = @DOPIECE

ORDER BY
DL.DO_Piece, DL.DL_Ligne;
go

 

Nuestra query nos devolverá en un tiempo récord los registros del documento, 10 veces más rápido que ejecutando la misma consulta en ODBC.

Ahora nos enfrentamos a la integración de la query en un entorno codificado, es decir, en una aplicación o en un gestor documental. No podemos crear una vista cada vez que ejecutamos la consulta pues no resulta operativo ni eficiente al no poder pasarle parámetros, por consiguiente la solución que tenemos es la de utilizar un procedimiento almacenado de usuario.

 

SOLUCIÓN con STORED PROCEDURE para pasarle PARÁMETROS en tiempo de ejecución

La solución contiene 3 pasos:

1 –  Crear un procedimiento almacenado.

2 – Preparar el server SQL 2008 para servir datos desde stored procedures

3 – Ejecutar la consulta con parámetros dinámicos

 

1 Procedimiento almacenado:

USE BIJOU

GO

 

CREATE PROCEDURE AACAJATKT

@DOPIECE varchar(10)

AS
SELECT
DL.DO_DOMAINE, DL.DO_TYPE, DL.DO_PIECE, DL.DO_DATE, DL.DL_Ligne, DL.DL_No, DL.AR_Ref, DL.DL_MontantHT
, DL.DL_MontantTTC, DL.DL_MvtStock, DL.DL_PrixUnitaire, DL.DL_Qte, DL.DL_Remise01REM_Valeur, DL.DL_PUBC
, DL.DL_PUTTC, DL.DL_Taxe1, DL.DL_TypeTaux1, DL.DL_Valorise

, DT.DO_Tiers
, (SELECT SUM(F_DOCLIGNE.DL_MontantTTC)FROM F_DOCLIGNE WHERE F_DOCLIGNE.DO_DOMAINE=0 AND F_DOCLIGNE.DO_Type=6 AND F_DOCLIGNE.DO_Piece=@DOPIECE) AS TOTALCONIVA
, (SELECT SUM(F_DOCREGL.DR_Montant)FROM F_DOCREGL WHERE F_DOCREGL.DO_Type=6 AND F_DOCREGL.DO_Piece=@DOPIECE AND F_DOCREGL.DR_Regle=0) AS NETOAPAGAR

, DR.DR_EQUIL, DR.DR_DATE, DR.DR_MONTANT
, PA.R_INTITULE

, CT.CT_Intitule, CT.CT_NUM

, RE.RE_NOM

, FA.FA_Intitule

, AN.AE_CODEBARRE

FROM
F_DOCLIGNE DL

INNER JOIN F_DOCENTETE DT ON
DL.DO_Domaine = DT.DO_DOMAINE
AND DL.DO_Piece = DT.DO_PIECE
AND DL.DO_TYPE = DT.DO_TYPE

INNER JOIN F_DOCREGL DR ON
DR.DO_DOMAINE = DL.DO_DOMAINE
AND DR.DO_PIECE = DL.DO_PIECE
AND DR.DO_TYPE = DL.DO_TYPE

INNER JOIN P_REGLEMENT PA ON
PA.cbIndice = DR.DR_TypeRegl

INNER JOIN F_COMPTET CT ON
CT.CT_NUM = DL.CT_Num

INNER JOIN F_REPRESENT RE ON
RE.RE_No = DL.RE_No

INNER JOIN F_ARTICLE AR ON
AR.AR_Ref = DL.AR_Ref

INNER JOIN F_FAMILLE FA ON
FA.FA_CodeFamille = AR.FA_CodeFamille

INNER JOIN F_ARTENUMREF AN ON
AN.AR_Ref = DL.AR_Ref
AND AN.AG_NO1 = DL.AG_NO1
AND AN.AG_NO2 = DL.AG_NO2

WHERE
DL.DO_Domaine = 0
AND DL.DO_Type = 6
AND DL.DO_Piece = @DOPIECE

ORDER BY
DL.DO_Piece, DL.DL_Ligne;
go

 

2 Preparar SQL Server 2008 para acceso a datos de stored procedures

USE BIJOU
GO
EXEC sp_addlinkedserver @server = ‘MySqlServerName’, @srvproduct = »,
@provider = ‘SQLOLEDB’, @datasrc = @@servername;

sp_serveroption ‘MySqlServerName’, ‘DATA ACCESS’, TRUE;

GO

 

3 Sintaxis de la consulta del procedimiento almacenado con parámetros

 

USE BIJOU

GO

 

SELECT * FROM OPENQUERY(MySqlServerName,’EXEC BIJOU.dbo.AACAJATKT »T2141184»’);

GO

 

 

Según la aplicación que necesitemos aportar pueden existir variantes de esta solución:

A)  insertar la consulta del procedimiento almacenado en una tabla con SELECT INTO

B) Emplear una tabla temporal para la consulta y consultar todas sus líneas desde la aplicación

C) Exportar los datos de la consulta a un formato XML ó CSV

 

Comentarios y sugerencias, siempre bienvenidas.

Hasta pronto.

 

SageCRM v7.2 – Direcciones. Dirección de Trabajo (business) por defecto.

Jun
20

¿Cómo predeterminar al crear una nueva dirección que esta sea de tipo TRABAJO?

Creamos una función Javascript y la cargamos en el arranque de la pantalla de alta de direcciones con el siguiente código:

 

<script type=»text/JavaScript»>

window.onload=function aa() {
document.getElementsByName(«AdLi_TypeBusiness»)[0].checked = true;
}
</script>

 

El resultado será un pantalla como esta:

Captura

 

 

Sencillo y útil.

Se aceptan comentarios y sugerencias.

SageCRM v7.2 – Purga de archivos de datos de una solución Sage CRM

Jun
01

¿No te ha sucedido nunca que instalas Sage CRM, lo configuras, creas un paquete de datos de prueba y después de completar la configuración y querer salir a producción te quieres deshacer de los datos de tests?

O por ejemplo: ¿nunca has querido eliminar los datos de un juego de pruebas?

Tenemos una solución en este artículo: un script de Ms SQL Server.

Utilizando este script podrás mantener tus configuraciones y tablas de parámetros sin datos de empresas, contactos y otras entidades relacionadas.

NOTA importante:

RECOMENDAMOS SE REALICE SIEMPRE UN BACKUP ANTES DE PROCEDER A CUALQUIER MANIPULACIÓN DE DATOS A NIVEL DE CÓDIGO.

No nos responsabilizamos del uso que realices de nuestro código en circunstancias diversas. A nosotros nos ha funcionado muy bien en nuestros proyectos en una versión concreta en una lengua concreta, pero ignoramos qué licencias, condicionantes o procedimientos puede haber en tus soluciones. Por tanto avisad@ quedas y entiende que este artículo y todos los de nuestra publicación son una guía de ayuda no vinculante por nuestra parte.

Código del script de purga de datos entidades maestras en Sage CRM, respetando parámetros y tablas de listas:

Use CRM

DELETE QuoteItems
DELETE Quotes
DELETE Pricing
DELETE PricingList
DELETE NewProduct
DELETE Opportunity
DELETE Cases
DELETE Library
DELETE Campaigns
DELETE Address_Link
DELETE EmailLink
DELETE Person_Link
DELETE PhoneLink
DELETE Address
DELETE Email
DELETE Person
DELETE Phone
DELETE Company

UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=5
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=1
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=21
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=6
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=10209
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=13
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=31
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=14
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=10208
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=10
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=3
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=7
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=32
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=10162
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=10160
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=139
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=141
UPDATE SQL_Identity SET Id_NextId=1 WHERE Id_TableId=137

Como ves, el primer bloque del script -borrados de registros-  está escrupulosamente ordenado conforme al modelo de integridad referencial de Sage CRM. El segundo bloque -la inicialización de los índices- son la guinda del pastel ya que te van a permitir salir a producción inmediatamente después de la purga.

 

Esperamos que este artículo te ayude a ganar tiempo en tus procesos de puesta en producción y limpieza de datos con Sage CRM v7.2.

 

Artículo redactado en colaboración con Florentino Presumido.

Floren es desarrollador de software experto en lenguajes .NET, Visual Basic, PHP y MsSqlServer dentro de las áreas de negocio ERP, Ecommerce, TPV y CRM.

flopresumido@hotmail.com

 

 

 

 

SageCRM v7.1 – Asignar fecha del día por defecto a un campo fecha.

Mar
31

Para asignar la fecha del día a un campo de tipo fecha utilizaremos una función javascript en la propiedad OnCreate() o bien OnChange() en función de si se ha de activar al cambiar el valor de otro campo o al acceder a la pantalla en modo creación.

El código de la función:

<script>
function empresadepurada()
{
//var indice = document.formul.comp_empresadepurada.selectedIndex;
//var texto = document.formul.comp_empresadepurada.options[indice].text;
//if (texto == ‘Sí’){
if (document.getElementById(‘comp_empresadepurada’).value==»Y»){
var f = new Date();
var dia = f.getDate();
var mes = f.getMonth()+1;
var agno = f.getFullYear();
if(dia<10) {
dia=»0″+dia;
}
if(mes<10) {
mes=»0″+mes;
}
fecha = agno+»-«+mes+»-«+dia;
EntryForm.comp_empresadepuradafecha.value = fecha;
}
}
</script>

En la propiedad OnChange() o Oncreate() del campo simplemente invocaremos a la función:

empresadepurada()

Para cualquier aclaración o consulta puedes ponerte en contacto con nosotros por email.

Gracias y saludos.