Para dynamics Ax R2 y R3 existe un termino llamado particiones, estas particiones nos permiten compartir información entre empresas que pertenezcan a la misma partición y aislar estos datos del resto de las particiones.
Estas particiones a nivel usuario podemos verlas desde Administración del sistema > Configurar > Particiones.
Nosotros como desarrolladores, lo que debemos saber acerca de las particiones es que con una sentencia de consulta de datos sobre ax no podemos accesar a los datos de otra compañia que se encuentre en distinta partición aunque sea la misma instalación de Ax y la misma base de datos, si alguna vez necesitamos datos de distintas particiones esto debería realizarse por SQL. O si es necesario hacerlo desde ax, aquí un link de cómo realizar una consulta.
En Ax, cada clave y nombre de partición esta almacenada con un identificador. Este identificador es un campo llamado RecId en una tabla y que no es otra cosa que un Int64. Con este identificador Ax guarda el identificador de la partición en todos los registros de todas las tablas para saber a cuál partición pertenece el registro que se ha insertado en la tabla.
Una descripción gráfica de cómo es posible dividir las particiones se encuentra en el siguiente diagrama:
De acuerdo al diagrama, los usuarios de una compañia A tienen cierta configuración de acceso y no podrian entrar a la compañia Z una vez que ya iniciaron Ax. Aunque de otra forma, los usuarios de la compañia A comparten datos de los productos que se comercializan con la compañia B.
Si necesitas saber mas acerca de la arquitectura, link de Microsoft.
Post que podrían interesarte:
Menu de tutorial de desarrollo
Reportes SSRS en Ax
Y por cierto, acuérdate de darle click a algún anuncio si el post te sirvió de algo. O comenta si quieres saber sobre algún tema en específico.
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.
Buscar en este blog
martes, 27 de octubre de 2015
jueves, 22 de octubre de 2015
Actualizar información de direcciones en clientes por código X++ en Dynamics Ax 2012
En el post anterior les compartí un código para crear clientes ya sean personas o empresas con su dirección e información de contacto, aquí les comparto cómo actualizar estos datos. Espero les sea de utilidad.
static void JobActualizaClientePersona(Args _args)
{
CustTable custTable;
NumberSeq numberSeq;
Name name = 'Jorge Lopez';
DirParty dirParty;
DirPartyPostalAddressView dirPartyPostalAddressView;
DirPartyContactInfoView dirPartyContactInfo;
;
ttsBegin;
try
{
custTable = custTable::find( "C000020695");
select dirPartyPostalAddressView
where dirPartyPostalAddressView.Party == custtable.Party
&& dirPartyPostalAddressView.IsPrimary == NoYes::Yes;
//DirParty
//Crea instancia de la clase DirParty a partir de dirPartyPostalAddressView
//Actualiza dirección principal
DirParty = DirParty::constructFromPartyRecId(dirPartyPostalAddressView.Party);
dirPartyPostalAddressView.LocationName = 'Oficina central ';
dirPartyPostalAddressView.City = 'Polanco Chapultepec';
dirPartyPostalAddressView.Street = 'Presidente Masarik';
dirPartyPostalAddressView.StreetNumber = '25';
dirPartyPostalAddressView.CountryRegionId = 'MEX'; //necesita ser un país valido
dirPartyPostalAddressView.State = '09'; //necesita ser un estado valido
// Llena dirección
dirParty.createOrUpdatePostalAddress(dirPartyPostalAddressView);
//Actualiza email de información de contacto
dirPartyContactInfo.clear();
select dirPartyContactInfo
where dirPartyContactInfo.Party == custtable.Party &&
dirPartyContactInfo.Type == LogisticsElectronicAddressMethodType::Email;
DirParty = DirParty::constructFromPartyRecId(dirPartyContactInfo.Party);
dirPartyContactInfo.LocationName = 'Email Jorge Lopez';
dirPartyContactInfo.Locator = 'jorge.lopez222@gmail.com';
dirPartyContactInfo.Type = LogisticsElectronicAddressMethodType::Email;
dirPartyContactInfo.IsPrimary = NoYes::Yes;
dirParty.createOrUpdateContactInfo(dirPartyContactInfo);
//Actualiza telefono de información de contacto
dirPartyContactInfo.clear();
select dirPartyContactInfo
where dirPartyContactInfo.Party == custtable.Party &&
dirPartyContactInfo.Type == LogisticsElectronicAddressMethodType::Phone;
DirParty = DirParty::constructFromPartyRecId(dirPartyContactInfo.Party);
dirPartyContactInfo.LocationName = 'Telefono Jorge';
dirPartyContactInfo.Locator = '551291165343';
dirPartyContactInfo.Type = LogisticsElectronicAddressMethodType::Phone;
dirPartyContactInfo.IsPrimary = NoYes::Yes;
dirParty.createOrUpdateContactInfo(dirPartyContactInfo);
ttsCommit;
info( strFmt("Cliente creado: %1" , custTable.AccountNum));
}
catch(Exception::Error)
{
ttsAbort;
throw Exception::Error;
}
}
Post que podrían interesarte:
Crear clientes y direcciones
Consultas en tablas con ValidTimeState en Ax 2012
Multiselect de grid en Ax 2012
Crear lookup en clase dialog
Crear clientes y direcciones
Consultas en tablas con ValidTimeState en Ax 2012
Multiselect de grid en Ax 2012
Crear lookup en clase dialog
Y por cierto, acuérdate de darle click a algún anuncio si el post te sirvió de algo. O comenta si quieres saber sobre algún tema en específico.
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.
martes, 20 de octubre de 2015
Crear clientes y direcciones por código x++ en Microsoft Dynamics Ax 2012
Aquí cómo crear un cliente con su dirección y un registro de información de contacto como email, mediante código X++.
Post que podrían interesarte:
Capturar errores del infolog mediante código x++
Crear documentos asociados a un registro por código (DocuRef)
Teclas rápidas en Microsoft Dynamics Ax 2012
Y por cierto, acuérdate de darle click a algún anuncio si el post te sirvió de algo. O comenta si quieres saber sobre algún tema en específico.
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.
static void JobCreaClientePersona(Args _args)
{
CustTable custTable;
NumberSeq numberSeq;
Name name = 'Jorge Lopez';
DirParty dirParty;
DirPartyPostalAddressView dirPartyPostalAddressView;
DirPartyContactInfoView dirPartyContactInfo;
;
ttsBegin;
custTable.initValue();
try
{
//crea datos del cliente en la CustTable
numberSeq = NumberSeq::newGetNum(CustParameters::numRefCustAccount());
custTable.AccountNum = numberSeq.num();
custTable.CustGroup = '02';
custTable.Currency = 'MXP';
custTable.PaymTermId = '00';
custTable.PaymMode = '01';
//aquí se define si es persona u organización
custTable.insert(DirPartyType::Person, name);
//DirParty
//Crea instancia de la clase DirParty a partir de la entidad de CustTable
dirParty = DirParty::constructFromCommon(custTable);
dirPartyPostalAddressView.LocationName = 'Oficina central ';
dirPartyPostalAddressView.City = 'Polanco';
dirPartyPostalAddressView.Street = 'Presidente Masarik';
dirPartyPostalAddressView.StreetNumber = '22';
dirPartyPostalAddressView.CountryRegionId = 'MEX'; //necesita ser un país valido
dirPartyPostalAddressView.State = '09'; //necesita ser un estado valido
// Llena dirección
dirParty.createOrUpdatePostalAddress(dirPartyPostalAddressView);
dirPartyContactInfo.LocationName = 'Email Jorge Lopez';
dirPartyContactInfo.Locator = 'jorge.lopez222@gmail.com';
dirPartyContactInfo.Type = LogisticsElectronicAddressMethodType::Email;
dirPartyContactInfo.IsPrimary = NoYes::Yes;
// Llena dirección de contacto
dirParty.createOrUpdateContactInfo(dirPartyContactInfo);
ttsCommit;
info( strFmt("Cliente creado: %1" , custTable.AccountNum));
}
catch(Exception::Error)
{
ttsAbort;
throw Exception::Error;
}
}
Post que podrían interesarte:
Capturar errores del infolog mediante código x++
Crear documentos asociados a un registro por código (DocuRef)
Teclas rápidas en Microsoft Dynamics Ax 2012
Y por cierto, acuérdate de darle click a algún anuncio si el post te sirvió de algo. O comenta si quieres saber sobre algún tema en específico.
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.
Suscribirse a:
Entradas (Atom)