martes, 22 de julio de 2014

Copiar lista de favoritos de un usuario a otro

El menú de favoritos es una herramienta muy útil en Dynamics AX. Ha existido desde hace tiempo en todas las versiones de AX
Una consulta común que me ha surgido dentro de la empresa es, poder copiar los favoritos de un usuario a otro.
De manera estándar no se puede, pero si buscamos un poco podemos hacerlo con ayuda de un job. Dynamics AX guarda los favoritos en la tabla SysPersonalization, en el campo “Buffer”.

El siguiente job copia el menú de favoritos del usuario A al usuario B. Si el usuario B tiene ya favoritos, se perderán, ya que primero han de ser borrados.

server static void FavoritesJob(Args _args)
{ SysPersonalization FromSysPersonalization;
SysPersonalization ToSysPersonalization;
UserId FromUserId='UserA';
UserId ToUserId='UserB';
;

ttsbegin;

// Paso 1 – eliminar los favoritos del usuario actual
while select forupdate ToSysPersonalization
where ToSysPersonalization.ElementType==UtilElementType::UserMenu
&& ToSysPersonalization.UserId==ToUserId
{
ToSysPersonalization.doDelete();
}

// Paso 2 – copier favoritos del usuario A
while select FromSysPersonalization
where FromSysPersonalization.UserId==FromUserId
&& FromSysPersonalization.ElementType==UtilElementType::UserMenu
{
ToSysPersonalization.data(FromSysPersonalization);
ToSysPersonalization.UserId=ToUserId;
ToSysPersonalization.doInsert();
}

ttscommit;
}

No hay comentarios:

Publicar un comentario