<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Micro blog dynamics AX &#187; desarrollo</title>
	<atom:link href="http://ax.nom.es/category/desarrollo/feed" rel="self" type="application/rss+xml" />
	<link>http://ax.nom.es</link>
	<description>WordPress weblog</description>
	<lastBuildDate>Fri, 20 Jan 2012 09:14:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Varios ejemplos C# .net para conectar con AX 4.0  utilizando Bussines conector</title>
		<link>http://ax.nom.es/uncategorized/varios-ejemplos-c-net-para-conectar-con-ax-4-0-utilizando-bussines-conector</link>
		<comments>http://ax.nom.es/uncategorized/varios-ejemplos-c-net-para-conectar-con-ax-4-0-utilizando-bussines-conector#comments</comments>
		<pubDate>Thu, 24 Jun 2010 09:20:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[axapta]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[dynamics]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ax.nom.es/?p=88</guid>
		<description><![CDATA[UAN using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Microsoft.Dynamics.BusinessConnectorNet.Axapta DynAx; DynAx =3D new = Microsoft.Dynamics.BusinessConnectorNet.Axapta(); // Test the connection to the .NET Business Connector=20 // by using the proxy user. System.Net.NetworkCredential nc =3D new = System.Net.NetworkCredential("proxyBCAX", "********"); try { DynAx.LogonAs("proxyBCAX", "", nc, "", [...]]]></description>
			<content:encoded><![CDATA[<p><strong>UAN</strong></p>
<pre>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Microsoft.Dynamics.BusinessConnectorNet.Axapta DynAx;
            DynAx =3D new =
Microsoft.Dynamics.BusinessConnectorNet.Axapta();
            // Test the connection to the .NET Business Connector=20
            // by using the proxy user.
            System.Net.NetworkCredential nc =3D new =
            System.Net.NetworkCredential("proxyBCAX", "********");
            try
            {
                DynAx.LogonAs("proxyBCAX", "", nc, "", "", "", =
                   "C:\\Documents and Settings\\1314\\Escritorio\\BC.AXC");
                //DynAx.LogonAs(Environment.UserName, "", null, "", "", =
                 "", "C:\\Documents and Settings\\1314\\Escritorio\\BC.AXC");
                Console.WriteLine( "Success Login OK");
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }
        }
    }
}

<strong>CHU</strong>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                label1.Text = "";

                Microsoft.Dynamics.BusinessConnectorNet.Axapta DynAx = new
                    Microsoft.Dynamics.BusinessConnectorNet.Axapta();
                Microsoft.Dynamics.BusinessConnectorNet.AxaptaRecord DynRec;

                // Authenticate the user and establish a session.
                DynAx.Logon(Company.Text, null, AOS.Text, Configuration.Text);
                if (DynAx != null)
                {
                    label1.Text = ("Login OK");
                }

                // Define the record as the AddressState table.
                DynRec = DynAx.CreateAxaptaRecord("AddressState");

                // Define the query that will run on the AddressState records.
                // This will return all the data in the AddressState table with
                // the cursor positioned at the first record in the table.
                DynRec.ExecuteStmt("select * from %1");

                // Check if the query returned any data.
                if (DynRec.Found)
                {
                    // Display the record on the form that was retrieved from the query.
                    textBox1.Text = (string)DynRec.get_Field("Name");

                }
            }
            catch (Exception ex)
            {
                textBox1.Text = (ex.ToString());
                textBox1.Text += (ex.Message);
                label1.Text = ("Login Filed");
            }
        }
    }
}
<strong>ZRI</strong>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

                label1.Text = "";

                Microsoft.Dynamics.BusinessConnectorNet.Axapta DynAx = new
                    Microsoft.Dynamics.BusinessConnectorNet.Axapta();
                Microsoft.Dynamics.BusinessConnectorNet.AxaptaRecord DynRec;

            // Authenticate the user and establish a session.
                System.Net.NetworkCredential nc = new System.Net.NetworkCredential(USER.Text, PASS.Text);
            try
            {
                //"C:\\Documents and Settings\\1314\\Escritorio\\BC.AXC"
                DynAx.LogonAs(AXUser.Text, Domain.Text, nc, Company.Text, null, AOS.Text, Configuration.Text);

                if (DynAx != null)
                {
                    label1.Text = ("Login OK");
                }

                // Define the record as the AddressState table.
                DynRec = DynAx.CreateAxaptaRecord("AddressState");

                // Define the query that will run on the AddressState records.
                // This will return all the data in the AddressState table with
                // the cursor positioned at the first record in the table.
                DynRec.ExecuteStmt("select * from %1");

                // Check if the query returned any data.
                if (DynRec.Found)
                {
                    // Display the record on the form that was retrieved from the query.
                    textBox1.Text = (string)DynRec.get_Field("Name");

                }
                //DynAx.Logoff();
            }
            catch (Exception ex)
            {
                textBox1.Text = (ex.ToString());
                textBox1.Text += (ex.Message);
                label1.Text = ("Login Filed");
            }
        }
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ax.nom.es/uncategorized/varios-ejemplos-c-net-para-conectar-con-ax-4-0-utilizando-bussines-conector/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CLRInterop AX example (Como calcular el SHA1 de un fichero desde AX 2009)</title>
		<link>http://ax.nom.es/axapta/clrinterop-ax-example-como-calcular-el-sha1-de-un-fichero-desde-ax-2009</link>
		<comments>http://ax.nom.es/axapta/clrinterop-ax-example-como-calcular-el-sha1-de-un-fichero-desde-ax-2009#comments</comments>
		<pubDate>Thu, 26 Feb 2009 16:51:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[5.0]]></category>
		<category><![CDATA[axapta]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[dynamics2009]]></category>
		<category><![CDATA[x++]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[aot]]></category>
		<category><![CDATA[ax]]></category>
		<category><![CDATA[dynamics]]></category>

		<guid isPermaLink="false">http://ax.nom.es/?p=83</guid>
		<description><![CDATA[static void AXL_TestSHA1(Args _args) { #define.ClrFileStream (&#8216;System.IO.FileStream&#8217;) #define.ClrFileModeEnum (&#8216;System.IO.FileMode&#8217;) #define.ClrFileModeOpen (&#8216;Open&#8217;) #define.ClrFileAccessEnum (&#8216;System.IO.FileAccess&#8217;) #define.ClrFileAccessWrite (&#8216;Write&#8217;) #define.ClrFileAccessRead (&#8216;Read&#8217;)//(&#8216;ReadWrite&#8217;) System.IO.FileStream fileStream; ClrObject fileMode; ClrObject fileAccess; str _filename = &#8216;C:\\Log.txt&#8217;; System.Type typeOfByte; System.Array arrayOfByte; int arrayOfByteLength = 1; int i; System.Security.Cryptography.SHA1CryptoServiceProvider SHA1; System.Text.ASCIIEncoding encoding; str strError; CLRObject exc; CLRObject innerExc; CLRObject clrExcMessage; int Struct1[]; container cont; ; try [...]]]></description>
			<content:encoded><![CDATA[<p>static void AXL_TestSHA1(Args _args)<br />
{<br />
   #define.ClrFileStream                       (&#8216;System.IO.FileStream&#8217;)<br />
    #define.ClrFileModeEnum                     (&#8216;System.IO.FileMode&#8217;)<br />
    #define.ClrFileModeOpen                     (&#8216;Open&#8217;)<br />
    #define.ClrFileAccessEnum                   (&#8216;System.IO.FileAccess&#8217;)<br />
    #define.ClrFileAccessWrite                  (&#8216;Write&#8217;)<br />
    #define.ClrFileAccessRead                   (&#8216;Read&#8217;)//(&#8216;ReadWrite&#8217;)</p>
<p>    System.IO.FileStream fileStream;<br />
    ClrObject fileMode;<br />
    ClrObject fileAccess;<br />
    str _filename = &#8216;C:\\Log.txt&#8217;;</p>
<p>    System.Type typeOfByte;<br />
    System.Array arrayOfByte;<br />
    int arrayOfByteLength = 1;<br />
    int i;<br />
    System.Security.Cryptography.SHA1CryptoServiceProvider  SHA1;<br />
    System.Text.ASCIIEncoding encoding;</p>
<p>    str  strError;<br />
    CLRObject   exc;<br />
    CLRObject   innerExc;<br />
    CLRObject   clrExcMessage;<br />
     int    Struct1[];<br />
    container cont;<br />
    ;<br />
    try<br />
    {<br />
        typeOfByte = System.Type::GetType(&#8220;System.Byte&#8221;);<br />
        arrayOfByte = System.Array::CreateInstance( typeOfByte, arrayOfByteLength );</p>
<p>        fileMode = CLRInterop::parseClrEnum(#ClrFileModeEnum, #ClrFileModeOpen);<br />
        fileAccess = CLRInterop::parseClrEnum(#ClrFileAccessEnum, #ClrFileAccessRead);<br />
        SHA1 = new System.Security.Cryptography.SHA1CryptoServiceProvider();<br />
        fileStream = new CLRObject(#ClrFileStream, _filename, fileMode, fileAccess);<br />
        arrayOfByte = SHA1.ComputeHash(fileStream);<br />
        fileStream.Close();</p>
<p>        arrayOfByteLength = ClrInterop::getAnyTypeForObject(arrayOfByte.get_Length());<br />
        for( i = 0; i < arrayOfByteLength; ++i )<br />
        {<br />
          cont = conins(cont,i+1,(ClrInterop::getAnyTypeForObject( arrayOfByte.GetValue( i ) )));<br />
          print int2hex(ClrInterop::getAnyTypeForObject( arrayOfByte.GetValue( i ) ));<br />
        }<br />
    }<br />
    catch( Exception::Internal )<br />
    {<br />
        // BP Deviation Documented<br />
        exc = CLRInterop::getLastException();<br />
        if( exc )<br />
        {<br />
            clrExcMessage = exc.get_Message();<br />
            // BP Deviation Documented<br />
            strError = CLRInterop::getAnyTypeForObject( clrExcMessage );</p>
<p>            throw error(strError);<br />
        }</p>
<p>    }<br />
    catch( Exception::CLRError )<br />
    {<br />
        // BP Deviation Documented<br />
        exc = CLRInterop::getLastException();<br />
        if( exc )<br />
        {<br />
            clrExcMessage = exc.get_Message();<br />
            innerExc = exc.get_InnerException();</p>
<p>            while(innerExc != null)<br />
            {<br />
                 clrExcMessage = innerExc.get_Message();<br />
                 innerExc = innerExc.get_InnerException();<br />
            }</p>
<p>            // BP Deviation Documented<br />
            strError = CLRInterop::getAnyTypeForObject( clrExcMessage );</p>
<p>            throw error(strError);<br />
        }</p>
<p>    }</p>
<p>    pause;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://ax.nom.es/axapta/clrinterop-ax-example-como-calcular-el-sha1-de-un-fichero-desde-ax-2009/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uso de contenedores Con AX Business Connector Net</title>
		<link>http://ax.nom.es/axapta/uso-de-contenedores-con-ax-business-connector-net</link>
		<comments>http://ax.nom.es/axapta/uso-de-contenedores-con-ax-business-connector-net#comments</comments>
		<pubDate>Mon, 02 Feb 2009 15:54:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[5.0]]></category>
		<category><![CDATA[axapta]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[dynamics]]></category>
		<category><![CDATA[dynamics2009]]></category>
		<category><![CDATA[x++]]></category>

		<guid isPermaLink="false">http://ax.nom.es/?p=80</guid>
		<description><![CDATA[using System; using System.Collections.Generic; using System.Text; using System.Xml; using System.Security.Cryptography; using System.IO; using Microsoft.Dynamics.BusinessConnectorNet; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { Axapta AX; AX = new Axapta(); AX.Logon(&#8220;CNS&#8221;, null, &#8220;DYmanicsAx1:2713&#8243; , null); object[] Parmlist = new object[1]; AxaptaContainer Container = AX.CreateAxaptaContainer(); Container = (AxaptaContainer)AX.CallStaticRecordMethod(&#8220;InventDim&#8221;, &#8220;dimEnabledFieldList&#8221;, 1); Console.WriteLine(BankAccountTable.Call(&#8220;balanceCur&#8221;, Container)); AX.Logoff(); }]]></description>
			<content:encoded><![CDATA[<p>using System;<br />
using System.Collections.Generic;<br />
using System.Text;<br />
using System.Xml;<br />
using System.Security.Cryptography;<br />
using System.IO;<br />
using Microsoft.Dynamics.BusinessConnectorNet;</p>
<p>namespace ConsoleApplication3<br />
{<br />
class Program<br />
{</p>
<p>static void Main(string[] args)<br />
{<br />
Axapta AX;<br />
AX = new Axapta();<br />
AX.Logon(&#8220;CNS&#8221;, null, &#8220;DYmanicsAx1:2713&#8243; , null);<br />
object[] Parmlist = new object[1];</p>
<p>AxaptaContainer Container = AX.CreateAxaptaContainer();<br />
Container = (AxaptaContainer)AX.CallStaticRecordMethod(&#8220;InventDim&#8221;, &#8220;dimEnabledFieldList&#8221;, 1);<br />
Console.WriteLine(BankAccountTable.Call(&#8220;balanceCur&#8221;, Container));</p>
<p>AX.Logoff();<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://ax.nom.es/axapta/uso-de-contenedores-con-ax-business-connector-net/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft.Axapta.BusinessConnector Code Samples</title>
		<link>http://ax.nom.es/axapta/microsoftaxaptabusinessconnector-code-samples</link>
		<comments>http://ax.nom.es/axapta/microsoftaxaptabusinessconnector-code-samples#comments</comments>
		<pubDate>Fri, 23 Jan 2009 13:29:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[5.0]]></category>
		<category><![CDATA[axapta]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[x++]]></category>
		<category><![CDATA[aot]]></category>
		<category><![CDATA[froms]]></category>

		<guid isPermaLink="false">http://ax.nom.es/?p=73</guid>
		<description><![CDATA[Delete sample // Execute a query to retrieve an editable record // where the name is MyStateUpdated. axRecord.ExecuteStmt(&#8220;select forupdate * from %1 where %1.Name == &#8216;MyStateUpdated&#8217;&#8221;); // If the record is found then delete the record. if (axRecord.Found) { // Start a transaction that can be committed. ax.TTSBegin(); axRecord.Delete(); // Commit the transaction. ax.TTSCommit(); } [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Delete sample</strong></p>
<p>// Execute a query to retrieve an editable record<br />
// where the name is MyStateUpdated.<br />
axRecord.ExecuteStmt(&#8220;select forupdate * from %1 where %1.Name ==<br />
&#8216;MyStateUpdated&#8217;&#8221;);</p>
<p>// If the record is found then delete the record.<br />
if (axRecord.Found)<br />
{<br />
// Start a transaction that can be committed.<br />
ax.TTSBegin();<br />
axRecord.Delete();<br />
// Commit the transaction.<br />
ax.TTSCommit();<br />
}</p>
<p><strong>INSERT</strong></p>
<p>// Create the .NET Business Connector objects.<br />
Axapta ax;<br />
AxaptaRecord axRecord;<br />
string tableName = &#8220;AddressState&#8221;;</p>
<p>try<br />
{<br />
// Login to Microsoft Dynamics AX.<br />
ax = new Axapta();<br />
ax.Logon(null, null, null, null);</p>
<p>// Create a new AddressState table record.<br />
using (axRecord = ax.CreateAxaptaRecord(tableName));<br />
{</p>
<p>// Provide values for each of the AddressState record fields.<br />
axRecord.set_Field(&#8220;NAME&#8221;, &#8220;MyState&#8221;);<br />
axRecord.set_Field(&#8220;STATEID&#8221;, &#8220;MyState&#8221;);<br />
axRecord.set_Field(&#8220;COUNTRYREGIONID&#8221;, &#8220;US&#8221;);<br />
axRecord.set_Field(&#8220;INTRASTATCODE&#8221;, &#8220;&#8221;);</p>
<p>// Commit the record to the database.<br />
axRecord.Insert();<br />
}<br />
}<br />
catch (Exception e)<br />
{<br />
Console.WriteLine(&#8220;Error encountered: {0}&#8221;, e.Message);<br />
// Take other error action as needed.<br />
}<br />
<strong>READ</strong></p>
<p>// Create the .NET Business Connector objects.<br />
Axapta ax;<br />
AxaptaRecord axRecord;<br />
string tableName = &#8220;AddressState&#8221;;</p>
<p>// The AddressState field names for calls to<br />
// the AxRecord.get_field method.<br />
string strNameField = &#8220;NAME&#8221;;<br />
string strStateIdField = &#8220;STATEID&#8221;;</p>
<p>// The output variables for calls to the<br />
// AxRecord.get_Field method.<br />
object fieldName, fieldStateId;</p>
<p>try<br />
{<br />
// Login to Microsoft Dynamics AX.<br />
ax = new Axapta();<br />
ax.Logon(null, null, null, null);</p>
<p>// Create a query using the AxaptaRecord class<br />
// for the StateAddress table.<br />
using (axRecord = ax.CreateAxaptaRecord(tableName));<br />
{</p>
<p>// Execute the query on the table.<br />
axRecord.ExecuteStmt(&#8220;select * from %1&#8243;);</p>
<p>// Create output with a title and column headings<br />
// for the returned records.<br />
Console.WriteLine(&#8220;List of selected records from {0}&#8221;,<br />
tableName);<br />
Console.WriteLine(&#8220;{0}\t{1}&#8221;, strNameField, strStateIdField);</p>
<p>// Loop through the set of retrieved records.<br />
while (axRecord.Found)<br />
{<br />
// Retrieve the record data for the specified fields.<br />
fieldName = axRecord.get_Field(strNameField);<br />
fieldStateId = axRecord.get_Field(strStateIdField);</p>
<p>// Display the retrieved data.<br />
Console.WriteLine(fieldName + &#8220;\t&#8221; + fieldStateId);</p>
<p>// Advance to the next row.<br />
axRecord.Next();<br />
}<br />
}<br />
}</p>
<p>catch (Exception e)<br />
{<br />
Console.WriteLine(&#8220;Error encountered: {0}&#8221;, e.Message);<br />
// Take other error action as needed.<br />
}</p>
<p><strong>UPDATE</strong></p>
<p>// Create an Axapta record for the StateAddress table.<br />
axRecord = ax.CreateAxaptaRecord(tableName);</p>
<p>// Execute a query to retrieve an editable record where the name is MyState.<br />
axRecord.ExecuteStmt(&#8220;select forupdate * from %1 where %1.Name ==<br />
&#8216;MyState&#8217;&#8221;);</p>
<p>// If the record is found then update the name.<br />
if (axRecord.Found)<br />
{<br />
// Start a transaction that can be committed.<br />
ax.TTSBegin();<br />
axRecord.set_Field(&#8220;Name&#8221;, &#8220;MyStateUpdated&#8221;);<br />
axRecord.Update();</p>
<p>// Commit the transaction.<br />
ax.TTSCommit();<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://ax.nom.es/axapta/microsoftaxaptabusinessconnector-code-samples/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como crear un entorno de desarrollo desde una instalación en producción.</title>
		<link>http://ax.nom.es/sql/como-crear-un-entorno-de-desarrollo-desde-una-instalacion-en-produccion</link>
		<comments>http://ax.nom.es/sql/como-crear-un-entorno-de-desarrollo-desde-una-instalacion-en-produccion#comments</comments>
		<pubDate>Tue, 08 Jul 2008 10:28:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[3.0]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[AOS]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[backup]]></category>

		<guid isPermaLink="false">http://ax.nom.es/?p=65</guid>
		<description><![CDATA[Ahora q esta muy de moda lo del cambio contable por la nueva ley vamos a hacer un entorno de desarrollo. Nos encontramos en algunos casos que una cambio de Service pack o una actualización grave sobre producción representa una incompatibilidad entre el trabajo de los usuarios y las tareas de desarrollo, sin llegar a [...]]]></description>
			<content:encoded><![CDATA[<p>Ahora q esta muy de moda lo del cambio contable por la nueva ley vamos a hacer un entorno de desarrollo.</p>
<p>Nos encontramos en algunos casos que una cambio de Service pack o una actualización grave sobre producción representa una incompatibilidad entre el trabajo de los usuarios y las tareas de desarrollo, sin llegar a exagerar como las instalaciones que hacíamos cuando heramos esclavos de las consultoras y a la &#8220;grupy&#8221; financiera de turno se le ocurría de debíamos tener el entorno de producción, el de preproducción y el de desarrollo. No es mala idea tener un lugar en el que poder trabajar con libertad tanto para desarrollo como para pruebas funcionales.</p>
<p>Axapta básicamente esta compuesto por un código fuente que se almacena en unos directorios dentro de unos archivos específicos y una base de datos. Todo esto no funciona sin un programa que interprete estos archivos y los enlace con la base de datos.</p>
<p>De esta manera para hacer un entorno de desarrollo a partir de producción solo debemos mantener esta coherencia directorio base de datos.</p>
<p>Ejemplo practico.</p>
<p>Tenemos una instalación tipo, 3.0 spX con una base de datos SQL server X.</p>
<p>Nuestra instalación se encuentra situada en &#8220;C:\Navision\Axapta Application\Appl&#8221; dentro del directorio tenemos los directorios de las diferentes aplicaciones. Normalmente Standard y producción.</p>
<p>Copiando producción y renombrar el directorio como Test ya tendríamos la mitad de nuestro entorno de desarrollo.</p>
<p>Después solo hay que realizar una copia de seguridad de la base de datos completa y restaurarla con otro nombre.</p>
<p>El último paso seria configurar el cliente o el AOS para que accedan al nuevo entorno y sincronicen los posibles cambios.</p>
<p><a href="http://ax.nom.es/wp-content/uploads/2008/07/test_1.jpg"><img class="alignnone size-thumbnail wp-image-66" title="test_1" src="http://ax.nom.es/wp-content/uploads/2008/07/test_1-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a href="http://ax.nom.es/wp-content/uploads/2008/07/test_2.jpg"><img class="alignnone size-thumbnail wp-image-67" title="test_2" src="http://ax.nom.es/wp-content/uploads/2008/07/test_2-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a href="http://ax.nom.es/wp-content/uploads/2008/07/test_3.jpg"><img class="alignnone size-thumbnail wp-image-68" title="test_3" src="http://ax.nom.es/wp-content/uploads/2008/07/test_3-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a href="http://ax.nom.es/wp-content/uploads/2008/07/test_4.jpg"><img class="alignnone size-thumbnail wp-image-69" title="test_4" src="http://ax.nom.es/wp-content/uploads/2008/07/test_4-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a href="http://ax.nom.es/wp-content/uploads/2008/07/test_5.jpg"><img class="alignnone size-thumbnail wp-image-70" title="test_5" src="http://ax.nom.es/wp-content/uploads/2008/07/test_5-150x150.jpg" alt="" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ax.nom.es/sql/como-crear-un-entorno-de-desarrollo-desde-una-instalacion-en-produccion/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como instalar Google analytics en Enterpraiseportal de axapta 3.0</title>
		<link>http://ax.nom.es/axapta/como-instalar-google-analytics-en-enterpraiseportal-de-axapta-30</link>
		<comments>http://ax.nom.es/axapta/como-instalar-google-analytics-en-enterpraiseportal-de-axapta-30#comments</comments>
		<pubDate>Tue, 03 Jun 2008 07:17:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[3.0]]></category>
		<category><![CDATA[aeportal]]></category>
		<category><![CDATA[axapta]]></category>
		<category><![CDATA[desarrollo]]></category>

		<guid isPermaLink="false">http://ax.nom.es/axapta/como-instalar-google-analytics-en-enterpraiseportal-de-axapta-30</guid>
		<description><![CDATA[Para poder colocar las estadisticas de google o cualquier otro servidor de analisis, solo necesitamos localizar la pagina que siempre se ejecutara por defecto en nuestro AEportal. En este caso Standard Home page. Introducimos el jscript que nos proporciona el servidor de analisis y actualizamos la version.]]></description>
			<content:encoded><![CDATA[<p>Para poder colocar las estadisticas de google o cualquier otro servidor de analisis, solo necesitamos localizar la pagina que siempre se ejecutara por defecto en nuestro AEportal. En este caso Standard Home page.</p>
<p>Introducimos el jscript que nos proporciona el servidor de analisis y actualizamos la version.</p>
<p><a href="http://ax.nom.es/wp-content/uploads/2008/06/dibujo1111.JPG" title="dibujo1111.JPG"><img src="http://ax.nom.es/wp-content/uploads/2008/06/dibujo1111.thumbnail.JPG" alt="dibujo1111.JPG" /></a></p>
<p><a href="http://ax.nom.es/wp-content/uploads/2008/06/dibujo11112.JPG" title="dibujo11112.JPG"><img src="http://ax.nom.es/wp-content/uploads/2008/06/dibujo11112.thumbnail.JPG" alt="dibujo11112.JPG" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ax.nom.es/axapta/como-instalar-google-analytics-en-enterpraiseportal-de-axapta-30/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como imprimir directamente sobre la impresora desde x++</title>
		<link>http://ax.nom.es/30/como-imprimir-directamente-sobre-la-impresora-desde-x</link>
		<comments>http://ax.nom.es/30/como-imprimir-directamente-sobre-la-impresora-desde-x#comments</comments>
		<pubDate>Tue, 15 Apr 2008 08:34:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[3.0]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[x++]]></category>
		<category><![CDATA[factura]]></category>
		<category><![CDATA[Impresión]]></category>
		<category><![CDATA[invoice]]></category>
		<category><![CDATA[tax]]></category>

		<guid isPermaLink="false">http://ax.nom.es/uncategorized/como-imprimir-directamente-sobre-la-impresora-desde-x</guid>
		<description><![CDATA[Uno de los principales problemas que se plantean al implementar facturas o informes es como imprimir verticalmente por regla general es imposible en impresoras matriciales ya es una odisea. Si nuestro cliente es muy pero q muy &#8220;rata&#8221; o &#8220;cicatero y no quiere entrar en la era de las nuevas tecnologías con una impresora láser [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">Uno de los principales problemas que se plantean al implementar facturas o informes es como imprimir verticalmente por regla general es imposible en impresoras matriciales ya es una odisea. Si nuestro cliente es muy pero q muy &#8220;rata&#8221; o &#8220;cicatero y no quiere entrar en la era de las nuevas tecnologías con una impresora láser o estamos atados por una ISO que nos obligue a dar formatos extraños a la factura, podemos utilizar las dll&#8217;s del sistema para acceder a los documentos e incluso voltear o girar las fuentes de impresión para imprimir el famoso registro empresarial de las facturas.</p>
<p> <a href="http://ax.nom.es/wp-content/uploads/2008/04/20080415090605_25.JPG" title="20080415090605_25.JPG"><img src="http://ax.nom.es/wp-content/uploads/2008/04/20080415090605_25.JPG" alt="20080415090605_25.JPG" /></a></p>
<p><a href="http://ax.nom.es/wp-content/uploads/2008/04/axl_gdi_2.xpo" title="axl_gdi_2.xpo">axl_gdi_2.xpo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ax.nom.es/30/como-imprimir-directamente-sobre-la-impresora-desde-x/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como contabilizar facturas de clientes o proveedores sin usar secuencias numericas</title>
		<link>http://ax.nom.es/axapta/como-contabilizar-facturas-de-clientes-o-proveedores-sin-usar-secuencias-numericas</link>
		<comments>http://ax.nom.es/axapta/como-contabilizar-facturas-de-clientes-o-proveedores-sin-usar-secuencias-numericas#comments</comments>
		<pubDate>Mon, 07 Apr 2008 11:31:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[3.0]]></category>
		<category><![CDATA[axapta]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[x++]]></category>

		<guid isPermaLink="false">http://ax.nom.es/axapta/como-contabilizar-facturas-de-clientes-o-proveedores-sin-usar-secuencias-numericas</guid>
		<description><![CDATA[Buenas a todas y a todos. Por regla general las secuencias de facturación suelen configurarse y no dar problemas, pero en el caso que nos ocupa tenemos una multinacional que utiliza unos terminales de venta para generar facturas y albaranes etc, con numeraciones propias y esto hay que trasladarlo al AX con el minimo de [...]]]></description>
			<content:encoded><![CDATA[<p>Buenas a todas y a todos. Por regla general las secuencias de facturación suelen configurarse y no dar problemas, pero en el caso que nos ocupa tenemos una multinacional que utiliza unos terminales de venta para generar facturas y albaranes etc, con numeraciones propias y esto hay que trasladarlo al AX con el minimo de problemas y de accesos a base de datos. <o:p></o:p></p>
<p>Nada de soluciones Salomónicas de update a “cholones” contra la custinvoicejour y cosas así que se os ve la pinta de “programatas” de medio pelo salidos de la vieja escuela del &#8220;clipper 5&#8243;, ahora el famoso &#8220;Delfi 6&#8243;. (jejejejej)<o:p></o:p></p>
<p>Bueno lo dicho aquí va el código para contabilizar facturas o albaranes con la numeración que queramos sin que el estándar de deje de chutar. <o:p></o:p></p>
<p><span lang="EN-GB">protected void  insertJournal()<br />
{;<br />
ttsbegin;</span></p>
<p>numberSeq           = this.allocateNumAndVoucher();<br />
//axl numero de factura..<br />
if (salesParmUpdate.invoiceid != &#8221;)<br />
{<br />
number   = salesParmUpdate.invoiceid;<br />
numberSeq.parmNumberSequenceCode(&#8221;);<br />
ttsbegin;<br />
voucher  = numberSeq.voucher();<br />
ttscommit;<br />
}<br />
else<br />
{<br />
[number, voucher]    = this.getNumAndVoucher();<br />
}</p>
<p>if (this.updateNow())<br />
{<br />
this.postUpdate();</p>
<p>TransactionLog::create(this.transactionLogType(),this.transactionLogTxt());<br />
ttscommit;<br />
}<br />
else<br />
throw error(strFmt(&#8220;@SYS21533&#8243;));<br />
}<o:p></o:p></p>
<p>Tan solo hay que sobre escribir el método insertjournal de la salesformletter <o:p></o:p></p>
]]></content:encoded>
			<wfw:commentRss>http://ax.nom.es/axapta/como-contabilizar-facturas-de-clientes-o-proveedores-sin-usar-secuencias-numericas/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como pasar parametros entre objetos usando la clase args AX axapta</title>
		<link>http://ax.nom.es/uncategorized/como-pasar-parametros-entre-objetos-usando-la-clase-args-ax-axapta</link>
		<comments>http://ax.nom.es/uncategorized/como-pasar-parametros-entre-objetos-usando-la-clase-args-ax-axapta#comments</comments>
		<pubDate>Tue, 19 Feb 2008 13:01:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[3.0]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[aot]]></category>
		<category><![CDATA[axapta]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[dynamics]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[x++]]></category>
		<category><![CDATA[froms]]></category>

		<guid isPermaLink="false">http://ax.nom.es/?p=31</guid>
		<description><![CDATA[Args  es utiliza para pasar argumentos al constructor de una clase. Args pueden transmitir información como el nombre, y los parámetros que llaman a una nueva clase. Los formularios, informes y consultas utilizan  la clase Args como primer argumento en el constructor. Pasandole el nombre del objeto a crear a una clase args y despues [...]]]></description>
			<content:encoded><![CDATA[<p dir="ltr">Args  es utiliza para pasar argumentos al constructor de una clase. Args pueden transmitir información como el nombre, y los parámetros que llaman a una nueva clase.</p>
<p>Los formularios, informes y consultas utilizan  la clase Args como primer argumento en el constructor.</p>
<p dir="ltr">Pasandole el nombre del objeto a crear a una clase args y despues llamar a classfactory con estos argumentos podemos inicializar fomularios, informes etc.</p>
<p dir="ltr"><font size="2">    Args a = new Args(&#8220;CustTable&#8221;);<br />
    formRun fr = ClassFactory.FormRunClass(a);<br />
    fr.init();<br />
    fr.run();<br />
</font> </p>
<p>para recuperar el objeto args en la clase de destino, por regla general existe un metodo que nos devuelve este dato.</p>
<p dir="ltr">elment.args() en el caso de formulario.</p>
<p dir="ltr">El objetivo de esto es poder pasar a traves de args objetos completos a otros contextos de ejecución de forma que podriamos abrir un formulario inicial F1 ejecutar otro formulario secundario F2 y poder ejecutar metodos del formulario 1 desde el formulario 2.</p>
<p dir="ltr">un ejemplo.</p>
<p dir="ltr">Hemos creado un from con un metodo para recuperar el texto de un strignedit y este texto lo vamos a pintar desde un report, utilizando para ello una clase intermedia o el metodo del form que lo ha llamado.</p>
<p dir="ltr"><a href="http://ax.nom.es/wp-content/uploads/2008/02/fir_dem.xpo" title="fir_dem.xpo">fir_dem.xpo</a> </p>
<p dir="ltr">public void init()<br />
{<br />
    object ob;<br />
    FIR_ReportClas FIR_ReportClas;</p>
<p dir="ltr">    super();</p>
<p dir="ltr">    //axl si no es la clase entonces es el formmm&#8230;<br />
    if (classIdGet(element.args().caller()) == classNum(FIR_ReportClas))<br />
    {<br />
            FIR_ReportClas = element.args().caller();<br />
            print FIR_ReportClas.texto();<br />
    }<br />
    else<br />
    {<br />
        ob = element.args().caller();<br />
        print ob.texto();<br />
    }</p>
<p dir="ltr"><a href="http://ax.nom.es/wp-content/uploads/2008/02/dibujoaaxxzee.bmp" title="dibujoaaxxzee.bmp"><img src="http://ax.nom.es/wp-content/uploads/2008/02/dibujoaaxxzee.bmp" alt="dibujoaaxxzee.bmp" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ax.nom.es/uncategorized/como-pasar-parametros-entre-objetos-usando-la-clase-args-ax-axapta/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

