<?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; x++</title>
	<atom:link href="http://ax.nom.es/category/x/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.1</generator>
		<item>
		<title>QR codes using thoughtworks qrcode 1.0.0</title>
		<link>http://ax.nom.es/x/qr-codes-using-thoughtworks-qrcode-1-0-0</link>
		<comments>http://ax.nom.es/x/qr-codes-using-thoughtworks-qrcode-1-0-0#comments</comments>
		<pubDate>Wed, 11 Jan 2012 13:02:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[dynamics2009]]></category>
		<category><![CDATA[x++]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[dynamics]]></category>

		<guid isPermaLink="false">http://ax.nom.es/?p=111</guid>
		<description><![CDATA[&#160; http://twit88.com &#160; QR_code]]></description>
			<content:encoded><![CDATA[
<a href="http://ax.nom.es/wp-content/gallery/galery1/qr_code_ax.jpg" title="" class="shutterset_singlepic2" >
	<img class="ngg-singlepic" src="http://ax.nom.es/wp-content/gallery/cache/2__320x240_qr_code_ax.jpg" alt="qr_code_ax" title="qr_code_ax" />
</a>

<p>&nbsp;</p>
<p>http://twit88.com</p>
<p>&nbsp;</p>
<p><a href="http://ax.nom.es/wp-content/uploads/2012/01/QR_code.rar">QR_code</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ax.nom.es/x/qr-codes-using-thoughtworks-qrcode-1-0-0/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cuadros de mando para dynamics AX 2009 con google charts api</title>
		<link>http://ax.nom.es/x/cuadros-de-mando-para-dynamics-ax-2009-con-google-charts-api</link>
		<comments>http://ax.nom.es/x/cuadros-de-mando-para-dynamics-ax-2009-con-google-charts-api#comments</comments>
		<pubDate>Tue, 10 Jan 2012 11:47:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[dynamics2009]]></category>
		<category><![CDATA[x++]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[dynamics]]></category>

		<guid isPermaLink="false">http://ax.nom.es/?p=104</guid>
		<description><![CDATA[La api de google nos permite la instalación de forma sencilla de vistosos cuadros de mando. example AX2009 &#8211; Google_charts.rar http://code.google.com/intl/es-ES/apis/chart/ &#160;]]></description>
			<content:encoded><![CDATA[<p>La api de google nos permite la instalación de forma sencilla de vistosos cuadros de mando.</p>

<a href="http://ax.nom.es/wp-content/gallery/galery1/generate_charts_google_api.jpg" title="" class="shutterset_singlepic1" >
	<img class="ngg-singlepic ngg-center" src="http://ax.nom.es/wp-content/gallery/cache/1_web20_320x240_generate_charts_google_api.jpg" alt="generate_charts_google_api" title="generate_charts_google_api" />
</a>

<p><a href="http://ax.nom.es/wp-content/uploads/2012/01/Google_charts.rar">example AX2009 &#8211; Google_charts.rar</a></p>
<p>http://code.google.com/intl/es-ES/apis/chart/</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://ax.nom.es/x/cuadros-de-mando-para-dynamics-ax-2009-con-google-charts-api/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 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 ejecutar un archivo cmd o .bat desde un cliente sobre el servidor AOS</title>
		<link>http://ax.nom.es/dynamics/como-ejecutar-un-archivo-cmd-o-bat-desde-un-cliente-sobre-el-servidor-aos</link>
		<comments>http://ax.nom.es/dynamics/como-ejecutar-un-archivo-cmd-o-bat-desde-un-cliente-sobre-el-servidor-aos#comments</comments>
		<pubDate>Thu, 27 Mar 2008 12:27:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[3.0]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[AOS]]></category>
		<category><![CDATA[dynamics]]></category>
		<category><![CDATA[x++]]></category>
		<category><![CDATA[asciiio]]></category>
		<category><![CDATA[axapta]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[xpo]]></category>

		<guid isPermaLink="false">http://ax.nom.es/uncategorized/como-ejecutar-un-archivo-cmd-o-bat-desde-un-cliente-sobre-el-servidor-aos</guid>
		<description><![CDATA[Para poder crear un archivo tipo bat o cmd con definirlo de esta manera &#8220;file = new asciiio(&#8216;c:\\filex.bat&#8217;,'w&#8217;);&#8221; ya tenemos un fichero llamado filex.bat en c:\ . Ahora bien en nuestro c: o en el del sevidor???? Pues eso solo lo sabremos si el metdodo q hemos ejecutado se lanza del lado del cliente o [...]]]></description>
			<content:encoded><![CDATA[<p>Para poder crear un archivo tipo bat o cmd con definirlo de esta manera  &#8220;file = new asciiio(&#8216;c:\\filex.bat&#8217;,'w&#8217;);&#8221; ya tenemos un fichero llamado filex.bat en c:\ . Ahora bien en nuestro c: o en el del sevidor???? Pues eso solo lo sabremos si el metdodo  q hemos ejecutado se lanza del lado del cliente o del lado del servidor, y para salir de dudas mejor definir una metodo static y ponerle server para que de fijo se lance en el servidor donde se este ejecutando nuestro AOS (AX32serv.exe).</p>
<p>static server void Start()<br />
{<br />
asciiio file;<br />
str txt;<br />
;<br />
winapi::deleteFile(&#8216;C:\\file2.txt&#8217;);</p>
<p>file = new asciiio(&#8216;c:\\filex.bat&#8217;,'w&#8217;);</p>
<p>if (file)<br />
{<br />
txt = (strfmt(&#8216;net start &#8220;Axapta batch 1&#8243; &#8216;));<br />
file.write(txt);</p>
<p>file = null;</p>
<p>winapi::shellExecute(&#8216;c:\\filex.bat&#8217;);<br />
winapi::deleteFile(&#8216;C:\\filex.txt&#8217;);<br />
}</p>
<p>}</p>
<p><a href="http://ax.nom.es/wp-content/uploads/2008/03/ftx_tpv_shutdownrestartservices.xpo" title="ftx_tpv_shutdownrestartservices.xpo">ftx_tpv_shutdownrestartservices.xpo</a></p>
<p><a href="http://ax.nom.es/wp-content/uploads/2008/03/dibujo111111.JPG" title="dibujo111111.JPG"><img src="http://ax.nom.es/wp-content/uploads/2008/03/dibujo111111.JPG" alt="dibujo111111.JPG" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ax.nom.es/dynamics/como-ejecutar-un-archivo-cmd-o-bat-desde-un-cliente-sobre-el-servidor-aos/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>

