WorkFlow error: No se encuentra el grupo de usuarios

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en WorkFlow

En instalaciones con idioma Español, cuando configuramos los Workflows como “Asignar a:” basado en Roles y escogemos Originador del flujo de trabajo.

Nos encontramos que este nunca es asignado a ningún usuario y en tiempo de ejecución nos encontramos con el siguiente error:

No se encuentra el grupo de usuarios

Esto es debido a un error en la clase SysWorkflowProviderService método resolveParticipant.

El problema lo encontramos en la línea del IF

if (strcmp(enum2str(WorkflowActorType::Originator), _participant) == 0)

Esto es debido a que el parámetro _participant tiene una longitud de 20 caracteres y el texto que pasamos es mayor a 20, produciendo que siempre se devuelva FALSE en la función

_participant = Originador del flujo de trabajo

La manera de resolver el siguiente error es cambiando el tamaño del Extended WorkFlowParticipantToken a 40 caracteres.

Como copiar registros

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en X++

En ciertas ocasiones, necesitamos poder copiar un registro, sin utilizar el método Data(),sino que lo que queremos es ir recorriendo uno a uno todos los campos de un registro seleccionado y copiarlo en otro variable del mismo tipo.

Para ello podemos utilizar el siguiente ejemplo, el cual se llamaría de la siguiente forma: copyFields(custTable, custTableTo);

static void CopyFields(Common _from, Common _to)
{
	DictTable 	t;
	DictField 	f;
	int 		i;
	fieldId 	id;
	FieldName 	fieldname;
	;
 
	t = new DictTable(_to.TableId);
	if (t)
	{
		for (i=1; i<=t.fieldCnt(); i++)
		{
			id = t.fieldCnt2Id(i);
			f = new DictField(_to.TableId,t.fieldCnt2Id(i));
 
			//Aqui podemos excluir campos del sistema como DataAreaid, RecId, CreatedDateTime ..
			if (f && !f.isSystem())
			{
				_to.(id) = _from.(id);
			}
		}
	}
}

Rollup 4.0 Microsoft Dynamics Ax

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en Tecnica

Microsoft acaba de publicar el Rollup 4.0 para Microsoft Dynamics Ax, tanto para la versión RTM como para la versión con SP1.

El siguiente Rollup contiene los Rollup anteriores, siendo acumulativo, una vez instalado la versión de Dynamics será 5.0.1500.2116

Como borrar un objeto del AOT por código

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en X++

Cuando trabajamos con Axapta en ciertas circunstancias podemos encontramos con la necesidad de borrar un objeto del AOT, ya sea por temas de programación o porque este objeto este corrupto y nos da error.

Si nos encontramos con que el objeto está corrupto, no podremos borrarlo de forma manual y lo tendremos que realizar por código, para hacer esto podemos utilizar el siguiente código, en el cual se muestra como borrar una tabla del AOT.

static void DAXBorradoObjeto(Args _args)
{
	UtilIdElements utilElement;
	UtilElementName tableName;
	UtilEntryLevel Layer;
	;
 
	tableName = 'Nombre del tabla';
	Layer = utilEntryLevel::usr;
 
	ttsbegin;
 
	select utilElement where utilElement.name == tableName
		&& utilElement.utilLevel == Layer
		&& utilElement.recordType == utilElementType::Table;
 
	if (utilElement)
	{
		utilElement.delete();
		ttscommit;
		info(strFmt('El objeto %1 en la capa %2 ha sido borrado!', tableName, Layer));
	}
	else
	{
		ttsAbort;
		warning(strFmt('El objeto %1 en la capa %2 no se ha encontrado!', tableName, Layer));
	}
}

Ocultar mensaje de ajuste en reports

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en X++

En ocasiones nos encontramos que a la hora de diseñar un report, este tiene que mostrar mucha información y se tiene que ajustar casi todo el tamaño posible, y en algunas ocasiones, al ejecutarlo Axapta nos muestra un mensaje indicando que se ha ajustado el tamaño del report:

Informe se ha definido en 76 por ciento para ajustarlo a la página

Si deseamos evitar que no se muestre este mensaje, simplemente tendremos que utilizar la siguiente línea de código en el método Init de nuestro Report

element.printJobSettings().SuppressScalingMessage(true);