Archiv para enero, 2010

Instalar Dynamics AX 2009 sin estar en dominio

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

Si habéis realizado alguna vez una instalación de Ax 2009, sabréis que obliga a que la máquina esté dentro de un dominio, para poder lanzarla.

Existe un truco para poder lanzar la instalación en una máquina que no tengamos en dominio, para ello tendremos que realizar lo siguiente:

1- Abrir el editor de registro.

2- buscar la siguiente cable del registro:  HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName

3- Modificar la entrada UserDnsDomain, por cualquier valor, pero antes guardaros lo que estaba en esta entrada.

4- Instalar Ax 2009

5- Volver a dejar la entrada UserDnsDomain, con su valor original.

Con esto ya tendremos instalado Dynamcis Ax 2009 sin estar dentro del dominio.

Migrar Enterprise portal Ax 3.0 a DAX 2009

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

Bueno después de estar revisando todos los procesos publicados por Microsoft para la migración de Ax 3.0 a 2009, tengo que comentaros que por desgracia no es posible migrar Enterprise Portal de Axapta 3.0 a Dynamics Ax 2009.

Ha cambiado de forma radical la tecnología que utiliza dicha aplicación, con lo cual solo se puede reimplementar toda la funcionalidad desarrollada en versión 3.0 a la versión 2009.

Para que esto no sea tan duro para algunos, aquí os dejo un documento indespensable para empezar con EP de Dynamics Ax 2009

Descargar: EPDevCookBook

Errores CDO.Message (Envio Mail)

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

Cuando utilizamos Dynamics Ax para enviar mails, en algunas ocasiones, nos podemos encontrar un mensaje de error como el siguiente:

Method ‘send’ in COM object of class ‘CDO.Message’ returned error code 0x80040211

Para poder interpretar que significa este código de error, a continuación os dejamos una lista con los códigos de error y su descripción para poder entender un poco más estos mensajes crípticos.

Value Remarks
0x80040201 Exception %1 was generated at address %2.
0x80040202 No data source has been opened for the object.
0x80040203 The object does not support this type of data source.
0x80040204 The object does not support the requested property name or namespace.
0x80040205 The object does not support the requested property.
0x80040206 The object is not active.
It may have been deleted or it may not have been opened.
0x80040207 The object does not support storing persistent state information for objects.
0x80040208 The requested property or feature, while supported, is not available at this time or in this context.
0x80040209 No default drop directory has been configured for this server.
0x8004020A The SMTP server name is required, and was not found in the configuration source.
0x8004020B The NNTP server name is required, and was not found in the configuration source.
0x8004020C At least one recipient is required, but none were found.
0x8004020D At least one of the From or Sender fields is required, and neither was found.
0x8004020E The server rejected the sender address. The server response was: %1
0x8004020F The server rejected one or more recipient addresses. The server response was: %1
0x80040210 The message could not be posted to the NNTP server. The transport error code was %2. The server response was %1
0x80040211 The message could not be sent to the SMTP server.
The transport error code was %2. The server response was %1
0x80040212 The transport lost its connection to the server.
0x80040213 The transport failed to connect to the server.
0x80040214 The Subject, From, and Newsgroup fields are all required, and one or more was not found.
0x80040215 The server rejected the logon attempt due to authentication failure. The server response was: %1
0x80040216 The content type was not valid in this context. For example, the root of an MHTML message must be an HTML document.
0x80040217 The transport was unable to log on to the server.
0x80040218 The requested resource could not be found. The server response was: %1.
0x80040219 Access to the requested resource is denied. The server response was: %1.
0x8004021A The HTTP request failed.  The server response was: %1.
0x8004021B This is a multipart body part. It has no content other than the body parts contained within it.
0x8004021C Multipart body parts must be encoded as 7bit, 8bit, or binary.
0x8004021E The requested property was not found.
0x80040220 The “SendUsing” configuration value is invalid.
0x80040221 The “PostUsing” configuration value is invalid.
0x80040222 The pickup directory path is required and was not specified.
0x80040223 One or more messages could not be deleted.
0x80040227 The property is read-only.
0x80040228 The property cannot be deleted.
0x80040229 Data  written to the object are inconsistent or invalid.
x8004022A The requested property is not in the mail header namespace.
0x8004022B The requested character set is not installed on the computer.
0x8004022C The ADO stream has not been opened.
0x8004022D The content properties are missing.
0x8004022E Content properties XML must be encoded using UTF-8.
0x8004022F Failed to parse content properties XML.
0x80040230 Failed to convert a property from XML to a requested type.
0x80040231 No directories were specified for resolution.
0x80040232 Failed to resolve against one or more of the specified directories.
0x80040233 Could not find the Sender’s mailbox.
0x80040234 Binding to self is not allowed.
0x80044000 The first argument is invalid.
0x80044001 The second argument is invalid.
0x80044002 The third argument is invalid.
0x80044003 The fourth argument is invalid.
0x80044004 The fifth argument is invalid.
0x800CCE05 The requested body part was not found in this message.
0x800CCE1D The content encoding type is invalid.

Mensajes en EventLog (Visor de sucesos)

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

Si queremos generar un registro desde Axapta, para que aparezca en el visor de sucesos, podemos utilizar el siguiente código

Parametros:

Exception: Nos indica si queremos un mensaje de información , Aviso o Error

Event: Evento que produce el error.

static void WriteEventLog(Exception _exception, str _event)
{
	str 									eventSource 	= "Dynamics Axt";
	str 									logType 		= "Aplicación";
	int 									eventCategory 	= 9999;
	System.Diagnostics.EventLogEntryType 	eventLogEntryType;
	;
 
	switch(_exception)
	{
		case Exception::Info:
			eventLogEntryType = System.Diagnostics.EventLogEntryType::Information;
			break;
		case Exception::Warning:
			eventLogEntryType = System.Diagnostics.EventLogEntryType::Warning;
			break;
 
		default:
			eventLogEntryType = System.Diagnostics.EventLogEntryType::Error;
	}
 
	if (!System.Diagnostics.EventLog::Exists(eventSource))
	{
		System.Diagnostics.EventLog::CreateEventSource(eventSource, logType);
	}
 
	System.Diagnostics.EventLog::WriteEntry(eventSource, _event, eventLogEntryType, eventCategory);
}

Crear indice RecId en tablas com ModifiedDateTime

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

En Dynamics Ax 2009, si utilizamos Microsoft SQL Server 2005 como motor de base de datos, tenemos que crear el indice por RecId en todas aquellas tablas que tengamos configurado los de Fecha y Hora de Creación / Modificación.

Esto es debido a que cada vez que realizamos un Insert o Update en la base de datos, cuando la tabla tiene activos estos campos, se ejecuta la siguiente sentencia SQL

SELECT CreatedDateTime From (nombre de la tabla) Where RecId = (recid) and DataAreaid = (dataAreaid)

Si no tenemos un indice por RecId, para una simple sentencia de actualización de un registro, SQL realiza un scan de toda la tabla, siendo esto un grave problema de rendimiento en tablas con muchos registros

Si utilizamos como motores de base de datos SQL 2008 u Oracle, este problema no lo tendremos, ya que el kernerl utiliza parámetros de tipo OUTPUT en las sentencias para obtener los valores de creación y modificación de base de datos, no siendo necesara la creación de un indice por RecId