viernes, 13 de agosto de 2010

crmForm.que?

Este post está orientado a personas que recién están empezando a realizar códigos de javascripts para los formularios y campos de CRM. Al menos cuando yo empecé en este mundo lo primero que me mandaron hacer fue justamente esto y en muchas ocasiones ignoraba de las propiedades y métodos que permitirían realizar rápidamente mi trabajo... en fin. Para que no les pase como a mí, les voy a dejar un listado de propiedades y métodos:
Variables Globales
SERVER_URL Nos proporciona una cadenta de texto con el nombre del servidor
USER_LANGUAGE_CODE Proporciona el codigo del lenguaje seleccionado por el usuario
ORG_LANGUAGE_CODE Proporciona el codigo del paquete de lenguaje dela organización
ORG_UNIQUE_NAME Proporciona el nombre de la organización

Propiedades crmForm
crmForm.all Nos permite acceder a todos los campos del formulario
crmForm.IsDirty Retorna un booleando. True si el campo ha sido modificado
crmForm.FormType Obtiene un entero según el modo en el que se encuentre el formulario. Como valores
válidos tenemos:

-Undefined Form Type = 0

-Create Form = 1

-Update Form = 2

-Read Only Form = 3

-Disabled Form = 4

-Quick Create Form = 5

-Bulk Edit Form = 6
crmForm.ObjectId Retorna un string que muestra el GUID del registro abierto. En caso que el
formulario sea de tipo"Create Form" el vaslor será null.
crmForm.ObjectTypeCode Obtiene el código de la entidad del formulario abierto.
crmForm.ObjectTypeName Obtiene el nombre de la entidad del formulario abierto.

Lookup Multientity - (como el de cliente)

En ocasiones hemos necesitado de un lookup el cual nos permita manejar tanto Cuentas como Contactos (similar al que hay en el formulario de Casos) o lookups como los "Referente a". Si bien es cierto que es una funcionalidad propia de CRM, en este ejempplo (que tiene como base este post) vamos a emular un lookup multi-entidad el cual nos permita hacer el registro de un contacto o cuenta.
Supongamos que tienen una entidad personalizada llamaba: jl_entidad. Deberán crear relaciones con la entidad account y contact donde éstas son las entidades principales. Agregar los campos de tipo lookup jl_accountid y jl_contactid en el formulario de jl_entidad.
Ahora en el evento OnLoad, copiar el siguiente código:
var accountLookup = crmForm.all.jl_accountid;
var contactLookup = crmForm.all.jl_contactid;
accountLookup.lookuptypes = "1,2";
accountLookup.lookuptypenames = "account:1,contact:2";
accountLookup.lookuptypeIcons = "/_imgs/ico_16_1.gif:/_imgs/ico_16_2.gif";
if (contactLookup.DataValue != null) {
   accountLookup.DefaultValue = contactLookup.DataValue;
   accountLookup.DataValue = contactLookup.DataValue;
   if (typeof (accountLookup.DataValue[0].data) != "undefined") {
      accountLookup.DefaultValue[0].data = accountLookup.DataValue[0].data;
   }
}
En el evento OnSave copiar lo siguiente:
var accountLookup = crmForm.all.jl_accountid;
var contactLookup = crmForm.all.jl_contactid;
if (accountLookup.DataValue == null) {
   contactLookup.DataValue = null;
}
else {
   var customer = accountLookup.DataValue[0];
   if (customer.type == "1") {
      contactLookup.DataValue = null;
   }
   else {
      contactLookup.DataValue = accountLookup.DataValue;
      accountLookup.DataValue = null;
   }
}

miércoles, 11 de agosto de 2010

Personalizando FULLNAME

Como ya sabemos podemos personalizar el FULLNAME mediante la Configuración del sistema, pero este medio es un poco limitante ya solo nos da la oportunidad de elegir uno de los siguientes formatos:
  • Apellidos, Nombre
  • Nombre Apellidos
  • Apellidos, Nombres Iniciales
  • Nombres Iniciales Apellidos
  • Apellidos, Nombre Segundo nombre
  • Nombre Segundo nombre Apellidos
  • Apellidos Nombre
  • ApellidosNombre
Pero qué pasaría si tenemos el apellido paterno y el apellido materno por separado y queremos que éste forme parte del FULLNAME
Para ello crearemos 2 nuevos campos: jc_apellidopaterno y jc_apellidomaterno.
No utilizamos el atributo lastname ya que lo emplearemos para la concatenación de los atributos que creamos. Por último implementaremos la siguiente porción de JScript:
En el evento OnLoad
//Ocultar el campo lastname que viene por defecto
crmForm.all.lastname.style.visibility='hidden';
crmForm.all.lastname_c.style.visibility='hidden';
En el evento OnSave:
//Concatenación de campos
crmForm.all.lastname.DataValue=crmForm.all.jc_apellidopaterno.DataValue+' '
+ crmForm.all.jc_apellidomaterno.DataValue;
Con esto el campo FULLNAME mostrará el nombre, el apellido paterno y el apellido materno.

No se puede validar la instalación de servidor de informes SQL Server Reporting Services

Tal vez cuando has intentado instalar el CRM Data Connector en un servidor que cuenta con SQL Server 2008 RS te has encontrado con este inconveniente.

Según información oficial este problema se soluciona con las actualizaciones más recientes que se descargan de internet durante la instalación, pero que pasa cuando nuestro servidor de reportes (por motivos de seguridad) no cuenta con salida a la red de redes. Bajo estas circunstancias se vuelve un poco tedioso poder realizar la instalación pero no se vuelve imposible.

Para poder conseguir nuestro objetivo deberemos realiar los siguientes pasos:

1. Copiar la carpeta SRSDataConnector, que viene en el CD de instalación, en una de las particiones del servidor (esto para una mayor facilidad de trabajo). Ejemplo: E:\SrsDataConnector
2. Dentro de la nueva carpeta creada (E:\SrsDataConnector) copiaremos la carpeta VCRedist que también se encuentra en el CD de instalación (Redist\amd64\ VCRedist ó Redist\i386\ VCRedist).
3. Abrir un comand prompt y ejecutar la siguiente instrucción:
Path:>msiexec /i E:\SrsDataConnector\SrsDataConnector.msi PATCH=E:\SrsDataConnector\SrsDataConnector_amd64.msp

4. Aquí se mostrará una ventana de progreso de instalación.
5. Abrir el archivo install-config.xml que se encuentra en E:\SrsDataConnector. La modificación consistirá en agregar la siguiente etiqueta:
<Patch update="true">E:\SrsDataConnector\SrsDataConnector_amd64.msp</Patch>
6. Luego volveremos a abrir un comand promt y ubicarnos en la ruta elegida donde se encuentra el SrsDataConnector(E:\SrsDataConnector). Todo esto se hará vía de comandos
7. Una vez ubicado en E:\SrsDataConnector> ejecutaremos:
SetupSrsDataConnector.exe /config install-config.xml
8. Finalmente se ejecutará el Wizard de instalación y seguiremos hasta culminar la instalación.

Éstos pasos nos permitirán poder instalar satisfactoriamente el Conector de reportes.

Inventario de jscripts crmForm

A quien no le ha pasado que como parte de los entregables de los diferentes proyectos con Dync CRM nos han solicitado realizar un inventario de los scripts desarrollados para los diferentes formularios y atributos de las diferentes entidades :S Bueno esto puede volverse una tarea muy engorrosa (especialmente si uno no ha desarrollado dichos scripts). Felizmente contamos con herramientas que nos pueden facilitar la vida. En esta oportunidad les comento sobre una herramienta que nos va a servir de mucho: FormJavascriptManager que lo puedes descargar haciendo click aquí.
Para utilizar esta herramienta deberemos crear una conexión al servidor de CRM de la siguiente manera:

(Primero hacer click en el botón [...] y luego en [new connection])

En la siguiente ventana le pondremos un nombre a la conexión, escogeremos el tipo de autenticación e ingresaremos información correspondiente al servidor de CRM

Finalmente aparecerá una ventana donde podremos apreciar las entidades personlizables de donde podremos seleccionar aquellas que querramos analizar. Por cada entidad que selecciones nos permitirá visualizar los métodos OnChange, OnSave y OnLoad de los atributos y formularios respectivamente.