tag:blogger.com,1999:blog-168044632024-02-28T17:35:49.322+01:00Tips dBits - Trucos ERP Microsoft Dynamics NAV Navision<b>Tips dBits</b> es una <b>comunidad de usuarios y profesionales</b> que utilizan y trabajan con el<b>ERP Microsoft Dynamics NAV Navision</b>, aplicativos relacionados y otras tecnologías afines.
En esta web encontrará <b>todo tipo de información y recursos</b>, tales como noticias, documentos de interés, trucos, descargas, empleos, foro, tutoriales y enlaces a otras webs de interés.Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.comBlogger28125tag:blogger.com,1999:blog-16804463.post-55483140053024174912013-12-30T19:28:00.000+01:002014-10-10T17:46:05.985+02:00Comparador de versiones de Dynamics NAVGenial el Feature Comparison Tool, herramienta para comparar versiones entre Dynamics NAV y averiguar las nuevas funcionalidades incluidas respecto a una versión en concreto.<br />
<br />
<a href="http://www.microsoft.com/dynamics/upgrade-compare/nav/default.html">http://www.microsoft.com/dynamics/upgrade-compare/nav/default.html</a><div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-62558206565575375482013-09-13T09:15:00.000+02:002014-10-10T17:46:22.901+02:00¿Como almacenar documentos en SkyDrive y compartirlos en Microsoft Dynamics NAV?SkyDrive continua su andadura para convertirse en líder en almacenamiento seguro y compartición de documentos a través de Internet. El almacenamiento de documentos en SkyDrive y enlace con Microsoft Dynamics NAV (Navision) es muy simple y no requiere de ningún add-in ni programación. Además puede editarse el documento con Office Web Apps directamente.<br />
<br />
Este post del equipo de Navision en su blog muestra como hacerlo en 6 sencillos pasos: <a href="http://blogs.msdn.com/b/nav/archive/2013/09/11/how-to-share-and-link-skydrive-documents-with-microsoft-dynamics-nav-links.aspx">http://blogs.msdn.com/b/nav/archive/2013/09/11/how-to-share-and-link-skydrive-documents-with-microsoft-dynamics-nav-links.aspx</a><br />
<br /><div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-35972334156121561732012-03-13T11:37:00.002+01:002014-10-10T17:46:37.269+02:00¿Como saber si una fecha es de cierre?<div>
Con esta sencilla parte de codigo C/AL podremos saber si una fecha es de cierre:</div>
<div>
<br /></div>
<div>
NormDate := NORMALDATE("Posting Date");</div>
<div>
ClosDate := CLOSINGDATE(NormDate);</div>
<div>
IF ClosDate = "Posting Date" THEN</div>
<div>
IsClosed := TRUE</div>
<div>
ELSE</div>
<div>
IsClosed := FALSE;</div>
<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-30699483035759839502012-02-18T11:00:00.008+01:002014-10-10T17:46:50.680+02:00¿Como establecer si un registro se muestra o no en un form o page?<span style="font-style: normal;"><span style="font-size: 100%;">En ocasiones podemos necesitar que determinados registros de una tabla se muestren o no en un formulario, para ello sería fenomenal disponer del comando SKIP como en los informes, pero no es así, con lo que deberemos "rascar" código para lograr el mismo efecto. Aquí os dejo un ejemplo:</span></span><br />
<div style="font-size-adjust: none; font-stretch: normal; font: 100%/normal Georgia, serif;">
<br /></div>
<div>
<div>
<span style="font-family: Georgia, serif;"><i>Form - OnNextRecord(Steps : Integer) : Integer</i></span></div>
<div style="font-style: normal;">
<span style="font-family: Georgia, serif;">IF Steps > 0 THEN</span></div>
<div style="font-style: normal;">
Direction := Direction::Down</div>
<div style="font-style: normal;">
ELSE</div>
<div style="font-style: normal;">
Direction := Direction::Up;</div>
<div style="font-style: normal;">
<span style="font-family: Georgia, serif;">EXIT(NEXT(Steps));</span></div>
</div>
<div style="font-style: normal;">
<br /></div>
<div>
<div>
<i>Form - OnAfterGetRecord()</i></div>
<div style="font-style: normal;">
IF "myCondition" <mycondition><mycondition>= TRUE THEN</mycondition></mycondition></div>
<div style="font-style: normal;">
IF Direction = Direction::Down THEN</div>
<div style="font-style: normal;">
Rec.NEXT</div>
<div style="font-style: normal;">
ELSE</div>
<div style="font-style: normal;">
Rec.NEXT(-1);</div>
<br /></div>
<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com1tag:blogger.com,1999:blog-16804463.post-37957414910761284652011-09-01T11:45:00.008+02:002014-10-10T17:47:08.015+02:00Imprimir PDF por codigo desde Navision ClassicExisten maneras de imprimir un PDF por codigo mediante C/AL.
<br />
En este ejemplo utilizaremos la impresora de <a href="http://www.bullzip.com/products/pdf/info.php" target="_blank">Bullzip</a> para imprimir una factura.
<br />
<br />
<i>PrintSelCreated := FALSE;
<br />IF NOT PrinterSelection.GET('',206) THEN BEGIN
<br /> PrinterSelection.INIT;
<br /> PrinterSelection."Report ID" := 206;
<br /> PrinterSelection."Printer Name" := 'Bullzip PDF Printer';
<br /> PrinterSelection.INSERT;
<br /> PrintSelCreated := TRUE;
<br />END ELSE BEGIN
<br /> ActualPrinterSel := PrinterSelection."Printer Name";
<br /> PrinterSelection."Printer Name" := 'Bullzip PDF Printer';
<br /> PrinterSelection.MODIFY;
<br />END;
<br />
<br />CREATE(BullZipPDF);
<br />BullZipPDF.Init;
<br />BullZipPDF.LoadSettings;
<br />RunOnceFile := BullZipPDF.GetSettingsFileName(TRUE);
<br />BullZipPDF.SetValue('Output','C:\Temp\Sample.pdf');
<br />BullZipPDF.SetValue('Showsettings', 'never');
<br />BullZipPDF.SetValue('ShowPDF', 'no');
<br />BullZipPDF.SetValue('ShowProgress', 'no');
<br />BullZipPDF.SetValue('ShowProgressFinished', 'no');
<br />BullZipPDF.SetValue('SuppressErrors', 'yes');
<br />BullZipPDF.SetValue('ConfirmOverwrite', 'no');
<br />BullZipPDF.WriteSettings(TRUE);
<br />
<br />SalesInvHeader.SETRANGE("No.", '1103001');
<br />REPORT.RUNMODAL(206,FALSE,FALSE,SalesInvHeader);
<br />
<br />TimeOut := 0;
<br />WHILE EXISTS(RunOnceFile) AND (TimeOut < 10) DO BEGIN
<br /> SLEEP(1000);
<br /> TimeOut := TimeOut + 1;
<br />END;
<br />
<br />IF PrintSelCreated THEN
<br /> PrinterSelection.DELETE
<br />ELSE BEGIN
<br /> PrinterSelection."Printer Name" := ActualPrinterSel;
<br /> PrinterSelection.MODIFY;
<br />END;
<br />
<br /><span class="Apple-style-span">//Para mostrar la factura generada</span>
<br />HYPERLINK('C:\Temp\Sample.pdf');
<br />
<br /><span class="Apple-style-span">//Para enviarla por email</span>
<br />cu400.CreateMessage('Sender','sender@mycompany.com','recipient1@yourcompany.com;recipient2@yourcompany.com','Subject','Body',TRUE);
<br />cu400.AddAttachment('C:\Temp\Sample.pdf');
<br />cu400.Send;
</i><div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com1tag:blogger.com,1999:blog-16804463.post-58408370917388329342010-01-14T23:59:00.008+01:002014-10-10T17:47:22.738+02:00Como enviar un email con un informe adjunto a través de Dynamics NAVPreviamente ha de configurarse el SMTP, mediante el Form 409.<br />
<br />
<span style="color: #33cc00;">//Create message</span>cu400.CreateMessage('Sender','sender@mycompany.com',<br />
'recipient1@yourcompany.com;recipient2@yourcompany.com',<br />
'Subject','Body <b>in HTML</b> format.<BR>Regards.',TRUE);<br />
<span style="color: #33cc00;">//Generate the report in html format</span>rpt101.SAVEASHTML(TEMPORARYPATH + 'report101.html');<br />
<span style="color: #33cc00;">//Attach file in to email</span><br />
cu400.AddAttachment(TEMPORARYPATH + 'report101.html');<br />
<span style="color: #33cc00;">//Send email</span><br />
cu400.Send;<br />
<span style="color: #33cc00;">//Erase file</span>ERASE(TEMPORARYPATH + 'report101.html');<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-34067163572367246932009-12-22T12:47:00.004+01:002014-10-10T17:47:35.671+02:00Envío masivos de emails desde NavisionUno de los principales problemas de los usuarios del CRM de Dynamics NAV (Navision), es que al hacer un envío de un número elevado de emails, el servidor SMTP por el que realizan el envío bloquea la cuenta por considerar que se está haciendo SPAM, aún cuando no es así.<br />
<br />
Una solución es instalar el servicio SMTP que viene con Windows, junto al IS. Aunque hay que configurarlo ya que por defecto tiene limitaciones en el numero de emails que se pueden enviar por sesión.<br />
<br />
A partir de entonces habrá de configurarse el servidor de salida a <em>localhost</em> (o el nombre del servidor interno donde esté instalado el servicio SMTP) para que los emails se envíen a través del SMTP de este equipo.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-26795050284435353622008-06-14T12:08:00.003+02:002014-10-10T17:47:52.040+02:00ExpandIT Launch - Idioma de ejecuciónCuando se ejecuta ExpandIT Launch Utility lo hace en el idioma por defecto de Navision que es el inglés. Esto puede resultar un incoveniente, por ejemplo, al lanzar informes. La solución es añadir esta línea de código al informe ejecutado, para cambiar el idioma:<br />
<strong><em>GLOBALLANGUAGE := 1034</em></strong><br />
Donde, evidentemente, puede sustituirse el 1034 por el idioma que se prefiera.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com2tag:blogger.com,1999:blog-16804463.post-44695150650446705672008-04-13T11:28:00.002+02:002014-10-10T17:48:09.618+02:00IVA aduanasEn la configuración de grupos de registro de IVA, existe un tipo llamado <em>"Total", </em>mediante el cual podremos cargar el 100% del importe indicado tanto al registro de IVA como a la cuenta contable indicada en la configuración.<br />
<br />
Esta configuración es muy útil sobre todo para cargar el IVA de las aduanas, en donde dicho organismo nos cobra el IVA de la importación, y por tanto necesitamos introducir en nuestros registros de IVA el total del importe indicado.<br />
<br />
Usuarios avanzados también utilizan este tipo de IVA para corregir errores (alterar) en el registro de IVA.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-79142852375713968952007-10-30T12:24:00.000+01:002014-10-10T17:48:19.668+02:00Cambiar el Caption en tiempo de ejecuciónGracias a <a href="http://www.tipsdbits.com/Foro/tabid/76/ctl/UserProfile/mid/463/userid/266/Default.aspx" target="_blank">nilsm</a> por contribuir en Tips dBits.<br />
<br />
Existe una manera de cambiar el valor de la propiedad Caption de forma dinámica, incluso para diferentes idiomas. El truco consiste en utilizar la propiedad CaptionClass del control y personalizar la funcionalidad CaptionClassTranslate en la CodeUnit 1.<br />
<br />
Teneis un <a href="http://www.tipsdbits.com/Documentos/Documentos/tabid/88/Default.aspx" target="_blank">documento</a> con explicación detallada en Tips dBits.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-82380673482786228842007-10-30T12:11:00.000+01:002014-10-10T17:48:29.926+02:00Error traceflag 4616 al iniciar NAV sobre SQL 2005Gracias a <a href="http://www.tipsdbits.com/Foro/tabid/76/ctl/UserProfile/mid/463/userid/266/Default.aspx" target="_blank">nilsm</a> por postear en el <a href="http://www.tipsdbits.com/Foro/tabid/76/mid/463/threadid/5444/scope/posts/Default.aspx" target="_blank">foro</a> de Tips dBits.<br />
<br />
Al intentar ejecutar Dynamics NAV (Navision) sobre SQL 2005 aparece el siguiente error:<br />
<i>"El indicador de seguimiento 4616 no está establecido en el servidor. Debe establecer este indicador y reiniciar el servidor antes de conectarse utilizando Microsoft Dynamics NAV."</i><br />
<br />
Para corregir esta situación, proceder como sigue:<br />
01.) Open the Start Menu<br />
02.) Go to Microsoft SQL Server 2005 Group<br />
03.) Go to Configuration Tools Group<br />
04.) Click on SQL Server Configuration Manager<br />
05.) Click on SQL Server 2005 Services<br />
06.) Right-click on SQL Server ($INSTANCENAME) and click on Properties<br />
07.) Click on the Advanced tab<br />
08.) Go to Startup Parameters<br />
09.) Enter the string so that it looks as follows (notice the end is the only change):<br />
-dC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf;-T 4616<br />
10.) Click OK<br />
11.) Restart the SQL Server service<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com3tag:blogger.com,1999:blog-16804463.post-5700074157209857452007-06-13T09:45:00.000+02:002014-10-10T17:48:45.947+02:00Movimientos de correcciónExiste un campo en los diarios denominado "Corrección" que puede utilizarse para corregir, no sólo el saldo de una cuenta, sino también la suma del "Debe" y del "Haber", ya que inserta un movimiento con un cargo o adeudo (según proceda) en negativo. Es decir, si se desea corregir un movimiento erróneo que ha anotado 500€ en el debe de una cuenta, mediante esta opción podremos anotar un movimiento de corrección de -500€ en el debe de la misma cuenta, en lugar de 500€ al haber.<br />
<br />
Este campo también existe en las cabeceras de compra y de venta, para poder utilizarlo al registrar abonos que en realidad son correcciones de facturas erróneas.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-1160674877483381332006-10-12T19:34:00.000+02:002014-10-10T17:48:56.691+02:00Enviar pulsaciones de teclasGracias a <a href="http://www.tipsdbits.com/Foro/tabid/76/ctl/UserProfile/mid/463/userid/14/Default.aspx" target="_blank">sergio</a> por "postear" en el <a href="http://www.tipsdbits.com/Foro/tabid/76/forumid/2/threadid/2478/scope/posts/Default.aspx" target="_blank">foro</a> de Tips dBits.<br />
<br />
Para enviar pulsaciones de teclado desde Navision y mediante código C/AL podemos utilizar este sencillo truco:<br />
<br />
Definimos una variable<br />
<em><strong>WShell</strong> </em><br />
de tipo<br />
<strong><em>Automation</em></strong><br />
y subtipo<br />
<strong><em>'Windows Script Host Object Model'.WshShell</em></strong><br />
<br />
y utilizamos el siguiente codigo para enviar la pulsación de la tecla Enter<br />
<br />
<strong><em>IF ISCLEAR(WShell) THEN IF NOT CREATE(WShell) THEN EXIT;<br />WShell.SendKeys('{ENTER}');</em></strong><br />
<br />
que evidentemente podemos cambiar por la tecla que más nos convenga.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-1156675078724916222006-09-01T12:32:00.000+02:002014-10-10T17:49:07.515+02:00Ordenar un arrayCodigo C/AL para ordenar un array.<br />
<br />
<strong><em><span style="color: #666666;">OnRun()</span><br />myText[1] := 'Z8754';<br />myText[2] := 'M2532';<br />myText[3] := 'D1992';<br />myText[4] := 'A9900';<br /><br />SortArrayOfText(myText);<br /><br />FOR i := 1 TO ARRAYLEN(myText) DO BEGIN<br /> IF myText[i] <> '' THEN<br /> MESSAGE(myText[i]);<br />END;<br /><br /><br /><span style="color: #666666;">SortArrayOfText(VAR ParamArray : ARRAY [999] OF Text[30])</span><br />COMPRESSARRAY(ParamArray);<br />FOR i := 1 TO ARRAYLEN(ParamArray) DO BEGIN<br /> IF ParamArray[i] = '' THEN<br /> Finish := i;<br />END;<br /><br />REPEAT<br /> ToExit := TRUE;<br /> FOR i := 1 TO (Finish - 1) DO BEGIN<br /> IF ParamArray[i] > ParamArray[i + 1] THEN BEGIN<br /> Swap(ParamArray[i], ParamArray[i + 1]);<br /> ToExit := FALSE;<br /> END;<br /> END;<br /> Finish -= 1;<br />UNTIL ToExit;<br /><br /><br /><span style="color: #666666;">Swap(VAR Param1 : Text[30];VAR Param2 : Text[30])</span><br />temp := Param2;<br />Param2 := Param1;<br />Param1 := temp; </em></strong><div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-1155903765270915632006-08-18T13:56:00.000+02:002014-10-10T17:49:18.921+02:00Evitar caracteres extraños al importar / exportarCuando realizamos importaciones o exportaciones, mediante un dataport por ejemplo, podemos tener el problema de ver caracteres extraños en sustitución a los acentos, dieresis, eñes, u otros signos como el primero, primera, cedilla, etc.<br />
<br />
Esto es debido a que el sistema utilizado por Navision y Windows son distintos, es decir, Navision utiliza el sistema ASCII y Windows utiliza el sistema ANSI, más completo. Aunque los caracteres "normales" como A, B, C, etc. utilizan el mismo código, no lo hacen los caracteres especiales mencionados anteriormente. Con lo que la conversión entre uno y otro sistema es errónea.<br />
<br />
Para solventar este inconveniente, Microsoft puso a disposición de los usuarios y técnicos una CodeUnit que realiza la conversión entre el sistema ANSI al ASCII y vicevesa. La CodeUnit se puede descargar <a href="http://www.tipsdbits.com/Downloads/tabid/57/Default.aspx">pulsando aquí</a>.<br />
<br />
La CodeUnit ofrece dos métodos. En función de si estamos importando o exportando utilizaremos un método u otro.<br />
<br />
Para importar:<br />
<strong><em>NewText := Ansi2Ascii( myText )</em></strong><br />
Para exportar:<br />
<strong><em>NewText := Ascii2Ansi( myText )</em></strong><br />
<br />
Importante. No utilizar ninguno de estos métodos si lo que se pretende es exportar e importar de nuevo al mismo u otro Navision.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-1153473009704194042006-07-21T11:02:00.000+02:002014-10-10T17:49:32.355+02:00Abrir formulario por defecto¿Sabes que desde C/AL se puede abrir el formulario por defecto asociado a una tabla? Eso es, sin necesidad de conocer su ID. Tan solo hay que indicar como parámetro de la función FORM.RUNMODAL(Number [, Record] [, Field]) un cero y la variable del record a tratar.<br />
<br />
Por ejemplo:<br />
<strong><em>recItem.SETFILTER("Gen. Prod. Posting Group", 'MERCADERIA');<br />FORM.RUNMODAL(0,recItem);</em></strong><br />
Utilizando la variable recItem de tipo record y subtipo Item y pasándola como parámetro lograremos que se abra su formulario asociado con los datos seleccionados.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-1149014414792747002006-05-30T20:37:00.000+02:002014-10-10T17:49:41.842+02:00Enviar email desde NavisionPara enviar un email desde Navision mediante CAL, utilizaremos el siguiente código:<br />
<br />
Hay que definir la variable <span style="font-size: 85%;"><strong><em>objApp</em></strong></span> como <span style="font-size: 85%;"><strong><em>Atomation</em></strong></span> asignándola a<strong><em><span style="font-size: 85%;"> 'Microsoft Outlook 11.0 Object Library'.Application</span></em></strong> y la variable <span style="font-size: 85%;"><strong><em>objMail</em></strong></span> como <span style="font-size: 85%;"><strong><em>Atomation</em></strong></span> asignándola a <strong><em><span style="font-size: 85%;">'Microsoft Outlook 11.0 Object Library'.MailItem</span></em></strong><br />
<span style="font-size: 85%;"><strong><em><br />//Create application<br />IF ISCLEAR(objApp) THEN </em></strong></span><span style="font-size: 85%;"><strong><em>CREATE(objApp);<br /><br />//Create mail item<br />objMail := objApp.CreateItem(0);<br /><br />//Set properties<br />objMail."To"('joseppages@hotmail.com');<br />objMail.Subject('Mail from Navision');<br />objMail.Body('This is a mail send from Navision.');<br /><br />//Uncomment for display email<br />//objMail.Display();<br /><br />//Send mail<br />objMail.Send();</em></strong></span><br />
<br />
Evidentemente que a través del objeto <span style="font-size: 85%;"><strong><em>objMail</em></strong></span> tenemos otras propiedades que podemos utilizar a nuestra conveniencia, como <span style="font-size: 85%;"><strong><em>CC</em></strong></span> o <span style="font-size: 85%;"><strong><em>Importance</em></strong></span>.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com4tag:blogger.com,1999:blog-16804463.post-1142879402951005782006-03-20T19:01:00.000+01:002014-10-10T17:49:52.498+02:00Pasar parámetros entre objetosEn ocasiones es necesario comunicarse entre objetos de Navision con el fin de trasladar información adicional o complementaria al objeto llamado. La opción más utilizada para ello es mediante el pase de parámetros, o sea, desde un objeto ejecutamos a otro pero antes llamamos a una función definida por nosotros.<br />
<br />
Por ejemplo: Desde el formulario A ejecutamos el formulario B pasándole algunos parámetros con información adicional.<br />
<br />
Primero, en el formulario B deberemos añadir una función con los parámetros a recibir:<br />
<strong><em><span style="font-size: 85%;">SetMisParametros(Param1 : Integer; Param2 : Integer)<br />MiParametro1 := Param1;<br />MiParametro2 := Param2;</span></em></strong><br />
MiParametro1 y MiParametro2 deben ser definidas como Globales, para que conserven el valor hasta que el objeto sea destruido.<br />
<br />
Añadimos código en el evento OnOpenForm del formulario B para comprobar que las variables tienen el valor asignado mediante el pase de parámetros:<br />
<strong><em><span style="font-size: 85%;">Form - OnOpenForm()<br />MESSAGE('MiParametro1 = %1', miParametro1);<br />MESSAGE('MiParametro2 = %1', miParametro2);</span></em></strong><br />
<br />
Segundo, en el formulario A, y antes de ejecutar al formulario B, pasar los parámetros:<br />
<strong><em><span style="font-size: 85%;">control1000000000 - OnPush()<br />myFormB.SetMisParametros(1, 2); //Pase de parámetros a formulario B<br />myFormB.RUNMODAL; //Las var. MiParametro1 y MiParametro2 ya tienen valor<br />CLEAR(myFormB); //Las var. MiParametro1 y MiParametro2 NO tienen valor</span></em></strong><br />
<br />
Al ejecutar la linea myFormB.RUNMODAL mostrarán 2 mensajes informando del valor de las variables globales del formulario B.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-1141012388717662462006-02-27T04:48:00.000+01:002014-10-10T17:50:02.833+02:00Métodos de acceso a NavisionDebido a la persecución de la obtención de la excelencia en la cadena de valor de las organizaciones mediante la optimización de procesos de negocio (BPM), cada vez existe más necesidad de conectar aplicaciones distribuidas, con el fin de construir una infraestructura de software basada en servicios (SOA), y de esta manera, ganar en competitividad, haciendo sus procesos más eficientes, más flexibles y menos costosos y facilitar, así también, la toma de decisiones (BI).<br />
<br />
Navision, como parte fundamental de dicha infraestructura (ERP), dispone de distintos métodos para facilitar su integración en los procesos.<br />
<br />
<a href="http://www.tipsdbits.com/LinkClick.aspx?link=AccesoNAV.pps&tabid=88&mid=493">Pulse aquí para acceder a un archivo powerpoint que muestra estos métodos</a>.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com1tag:blogger.com,1999:blog-16804463.post-1139764747156281642006-02-12T18:10:00.000+01:002014-10-10T17:50:13.538+02:00Eliminar sesionesGracias a <a href="http://www.tipsdbits.com/Foro/tabid/76/ctl/UserProfile/mid/463/userid/429/Default.aspx" target="_blank">rvalls</a> por "postear" en el <a href="http://www.tipsdbits.com/Foro/tabid/76/forumid/2/threadid/380/scope/posts/Default.aspx" target="_blank">foro</a> de Tips dBits.<br />
<br />
A partir de la version 4.0 de Microsoft Business Navision, es posible eliminar sesiones, tanto en la BBDD nativa como en SQL Server.<br />
Para ello se accederá a la ventana de "Sesiones de la base de datos", mediante el menu Archivo-Base de datos-Informacion y en la pestaña "Sesiones" se accederá al LookUp de "Sesiones actuales". Simplemente pulsando la tecla F4 se podrá eliminar cualquier sesión, excepto la actual.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-1130843707154907322005-11-01T11:54:00.000+01:002014-10-10T17:50:45.199+02:00Reportar en ExcelExiste una manera fácil de exportar información desde Navision a Excel y es mediante la tabla <em>Excel Buffer</em>. La manera es insertar un registro en dicha tabla para cada celda, indicando las coordenadas y el valor.<br />
<br />
El siguiente código inserta el valor 35 en la celda A1:<br />
<strong><em><span style="font-size: 85%;">ExclBuffer.INIT;<br />ExclBuffer.VALIDATE("Row No.", 1);<br />ExclBuffer.VALIDATE("Column No.", 1);<br />ExclBuffer."Cell Value as Text" := FORMAT(35);<br />ExclBuffer.INSERT;</span></em></strong><br />
Finalmente, cuando se haya rellenado todas las celdas deseadas, ejecutar las siguientes funciones:<br />
<span style="font-size: 85%;"><strong><em>ExclBuffer.CreateBook;<br />ExclBuffer.CreateSheet('Mi hoja','Mi titulo',COMPANYNAME,USERID);<br />ExclBuffer.GiveUserControl;</em></strong></span><br />
<br />
Es importante que la declaración de la variable, en el ejemplo <em>ExclBuffer</em>, se defina como temporal, de esta manera no interferimos con otros usuarios Navision que puedieran estar utilizando la tabla <em>Excel Buffer</em> mediante el mismo u otros procesos de exportación a Excel.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com1tag:blogger.com,1999:blog-16804463.post-1130182134304834952005-10-24T21:04:00.000+02:002014-10-10T17:50:57.812+02:00Variables globales y variables localesTodo programador de Navision sabe la diferencia entre las variables globales y las variables locales, pero aún y así vamos a repasar sus diferencias:<br />
<li>Variables globales:<br />Son accesibles desde todo el objeto. Eventos, funciones, etc.<br />
<li>Variables locales:<br />Son accesibles sólo desde el procedimiento en las que han sido declaradas.<br /><br />Pero <b>hay que tener especial cuidado</b> con las variables globales cuando un objeto es llamado repetidamente (parte de su código se ejecuta 2 ó más veces), ya que las variables globales, a diferencia de las locales, guardan su valor entre las llamadas. Por el contrario, las variables locales son inicializadas cada vez.<br /><br />Ejemplo mediante un CommandButton en un Form:<br /><span style="font-size: 85%;"><strong><em><span style="color: #666666;">myBoton - OnPush()</span></em><br /><em>varGlobal := varGlobal + 1;<br />varLocal := varLocal + 1;<br />MESSAGE('Global = %1\Local = %2', varGlobal, varLocal);</em></strong></span><br /><br />La variable global irá aumentando su valor tantas veces como se pulse el botón, no así la local que siempre será 1.<br /><br />Esta casuística cobra especial importancia cuando se llaman objetos desde otros objetos, ya que esta regla se cumple en todos los casos, o sea, las variables globales del objeto llamado permanecen mientras permanezca el objeto.</li>
<br /></li>
<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-1129220711044345372005-10-13T18:07:00.000+02:002014-10-10T17:51:09.928+02:00Asiento de apertura inexistenteNavision, al contrario de la contabilidad "tradicional", no cierra ni abre los ejercicios, es decir, no existe ningún asiento de cierre a fin de ejercicio fiscal ni de apertura al inicio del próximo. ¿Qué pasa con los diarios oficiales? Navision "simula" el asiento de apertura, ya que es obligado en estos informes, utilizando los saldos de las cuentas de balance a final del ejercicio anterior.<br />
Lo que sí existe es el asiento de regularización, lo que es el cuadre de las cuentas del grupo 6 y 7 (comerciales) con la cuenta 129. A este asiento, Navision le asigna una fecha de fin de ejercicio precedida por la letra U (U31/12/05 p.e.). Es una fecha ficticia entre el fin de ejercicio y el inicio del siguiente, con el fin de mantener los saldos correctos durante el ejercicio fiscal completo.<br />
Es por ello que en el esquema de cuentas, el balance utiliza un formato de columnas que muestra el saldo a la fecha (.."HastaFecha") y la cuenta de resultados utiliza un formato de columnas que muestra el saldo del periodo ("DesdeFecha".."HastaFecha").<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com1tag:blogger.com,1999:blog-16804463.post-1128771559961834662005-10-08T13:34:00.000+02:002014-10-10T17:51:20.558+02:00Acceder a Navision sin contraseñaExiste una manera de acceder a una BBDD de Navision sin que pida contraseña, aunque para ello deberemos tener una copia de seguridad.<br />
El truco consiste en crear una BBDD nueva, restaurar la copia de seguridad y... ya está, estaremos dentro de la BBDD sin que nos haya pedido usuario y contraseña. Evidentemente, si la cerramos y volvemos a abrir, ya nos volverá a pedir la contraseña.<div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com0tag:blogger.com,1999:blog-16804463.post-1128169633289621732005-10-01T14:16:00.000+02:002014-10-10T17:51:30.722+02:00Enlace con varios subforms simultaneamenteNavision permite tener dentro de un form un subform y hacer un link entre ellos, de manera que al cambiar el registro del form cambie la información relacionada en el subform.<br />
Pero no permite, de manera automática, enlazar un segundo subform. Esto se consigue con el evento OnTimer del form, el cual se ejecuta cada cierto tiempo programado (TimerInterval = 100, es un valor adecuado). Es en este evento donde podemos añadir codigo y verificar si hay que actualizar la información del segundo subform. Por ejemplo:<br />
<br />
<span style="font-size: 85%;"><strong><em><span style="color: #666666;">Form - OnTimer()</span></em><br /><em>CurrForm.sbfItems.FORM.GETRECORD(ItemVendor); //Coge el registro actual<br />IF Key <> "No." + ItemVendor."Item No." THEN BEGIN //Si la info ha variado...<br />CurrForm.sbfPrices.FORM.myFilter("No.",ItemVendor."Item No."); //Actualiza el 2do subform<br />Key := "No." + ItemVendor."Item No."; //Coge nueva clave<br />END;</em> </strong></span><br />
<br />
Teneis un ejemplo en la sección de <a href="http://www.tipsdbits.com/Downloads/tabid/57/Default.aspx">downloads</a><div class="blogger-post-footer">Copyright TipsdBits.com</div>Josep Pageshttp://www.blogger.com/profile/08430610750884084368noreply@blogger.com1