<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1516517714633079399</id><updated>2025-05-02T05:12:58.040-07:00</updated><category term="navision"/><category term="web service"/><category term="Servicio web"/><category term="C#"/><category term="RTC"/><category term="Soap"/><category term="automation"/><category term="capas"/><category term="servicios"/><category term=".net"/><category term="2016"/><category term="Excel"/><category term="Sql"/><category term="Xml"/><category term="dll"/><category term="eventos"/><category term="exportar"/><category term="identificador"/><category term="importar"/><category term="metodos"/><category term="numero cuenta"/><category term="outlook"/><category term="publicar"/><category term="registro"/><category term="tarjetas"/><category term="trigger"/><category term="validacion"/><title type='text'>Mundo Navision</title><subtitle type='html'>Pequeña ayuda para los que se pegan diariamente con Navision</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-3223549492120737633</id><published>2015-12-01T02:44:00.002-08:00</published><updated>2015-12-02T01:06:10.834-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2016"/><category scheme="http://www.blogger.com/atom/ns#" term="eventos"/><title type='text'>Eventos en Navision 2016</title><content type='html'>&lt;div class=&quot;MsoNormal&quot; style=&quot;background-clip: initial; background-origin: initial; background-size: initial; margin-bottom: 0pt;&quot;&gt;
&lt;span style=&quot;color: #444444; font-family: inherit; font-size: small;&quot;&gt;En la versión 2016 de Navision se ha añadido una funcionalidad nueva para capturar eventos de tablas desde objetos tipo Codeun&lt;span style=&quot;font-size: xx-small;&quot;&gt;it al dispararse los d&lt;/span&gt;iferentes triggers(INSERT, MODIFY, RENAME, VALIDATE). Con esto se consigue que el código estandar no tenga que ser modificado teniendo la posibildad de sacar nuestras modificaciones de codigo a una codeunit y ejecutar este codigo antes o despues de el que ya existe en el trigger de la tabla o del campo de la tabla que lanza el evento.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background-clip: initial; background-origin: initial; background-size: initial; margin-bottom: 0pt;&quot;&gt;
&lt;span style=&quot;color: #444444; font-family: inherit; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: #676767; font-family: &amp;quot;times new roman&amp;quot; , serif; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;Ejemplos:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;1 &lt;/span&gt;Llamar a una función cuando se ejecute una acción en la tabla 
Item&lt;br /&gt;
&lt;span style=&quot;color: #444444; font-size: small;&quot;&gt;&lt;span style=&quot;line-height: 27px;&quot;&gt;1-1&lt;/span&gt;&lt;span style=&quot;line-height: 27px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;line-height: 27px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #444444; font-size: small;&quot;&gt;En una 
Codeunit nos creamos una&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #444444;&quot;&gt;función “DespuesModifyItem&quot;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN5A6mIkp_b_b7LmlCNbsua-5bDPUnA7iOTu3mTeH5BtYTMpVmtOLV4qX1gyC5Am-qun5i2fS0p28DO0kWM_9D656QzXrahjwLSvXhdmg1RAaQTcLamm2oi1LriJTwkvyUSExahNhOSIo/s1600/1.1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;helvetica neue&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN5A6mIkp_b_b7LmlCNbsua-5bDPUnA7iOTu3mTeH5BtYTMpVmtOLV4qX1gyC5Am-qun5i2fS0p28DO0kWM_9D656QzXrahjwLSvXhdmg1RAaQTcLamm2oi1LriJTwkvyUSExahNhOSIo/s1600/1.1.png&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;color: #444444; font-family: inherit;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;moderna&amp;quot; , serif; font-size: 10pt;&quot;&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background-clip: initial; background-origin: initial; background-size: initial; margin-bottom: 0pt;&quot;&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;1-2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; En las propiedades pulsamos sobre &quot;event&quot; y seleccionamos &quot;Suscriber&quot;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_ENKLHSBo5C3UI4S8pXSifoFv8FwvxhaLGqRUiYQpuJ8NfIJ2IIt11RpkRZTCeAKjANJLFzHFrDsvYSVqPlRC_9tANlM_UBtbxBmoHEd0DPYsQd22RkAECo0JhtdrPwlJwYjNs07SNP8/s1600/1.2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_ENKLHSBo5C3UI4S8pXSifoFv8FwvxhaLGqRUiYQpuJ8NfIJ2IIt11RpkRZTCeAKjANJLFzHFrDsvYSVqPlRC_9tANlM_UBtbxBmoHEd0DPYsQd22RkAECo0JhtdrPwlJwYjNs07SNP8/s1600/1.2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background-clip: initial; background-origin: initial; background-size: initial; margin-bottom: 0pt;&quot;&gt;
&lt;span style=&quot;color: #444444; font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #444444; font-family: inherit;&quot;&gt;1-3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;En el campo &quot;EventPublischerObject&quot; seleccionamos la tabla &quot;Item&quot;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #444444;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRWqcTYOqlN_QFO4Pa2WTxkXr0JmbuBmo6w7jFc1az5ebA8TYLc9sxYY6CHfPTf4_6I3JsHZ8Moi49P6PkXLOUzRZmEswNmoGN-qU1AWuwTf-Pafxs7en9CHhQJgRrVy4k0WmrWg556BE/s1600/1.3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRWqcTYOqlN_QFO4Pa2WTxkXr0JmbuBmo6w7jFc1az5ebA8TYLc9sxYY6CHfPTf4_6I3JsHZ8Moi49P6PkXLOUzRZmEswNmoGN-qU1AWuwTf-Pafxs7en9CHhQJgRrVy4k0WmrWg556BE/s1600/1.3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background-clip: initial; background-origin: initial; background-size: initial; margin-bottom: 0pt;&quot;&gt;
&lt;br /&gt;
&amp;nbsp;1-4 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Ahora es cuando le decimos cuando queremos que llame a esta función, lo haremos en el campo “EventFunction”. Aquí nos propondra varias opciones:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVaoz5xHtBsfrWK5D2l1H3R31Fyv3j1IwhygD_aNQXf4KO7qiElW-HtWgGG8B04ibHmSBiJP7V6ujqo2pDySaOtfaUPF3N5oC9N5LUXV5QJg9-YSlSk7-cCuROX_ITMRDjS_7-JJREa5I/s1600/1.4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;102&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVaoz5xHtBsfrWK5D2l1H3R31Fyv3j1IwhygD_aNQXf4KO7qiElW-HtWgGG8B04ibHmSBiJP7V6ujqo2pDySaOtfaUPF3N5oC9N5LUXV5QJg9-YSlSk7-cCuROX_ITMRDjS_7-JJREa5I/s320/1.4.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
SI por ejemplo queremos que despues de modificar un registro llame a esta función seleccionaremos “OnAfterModifyEvent”&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigcKyU_cOI3ZCtfttafhDVJUxBg1G4oHC9vnsWv7LP6o7HISGZchg2-OYxFyqO4gPzflxcHq-WLDWowJGBH1gtefHaBaHX8E4doZ1V6N8Mhs-5uYmsf6Ya0veDbPB7avtCzR_GU7RtLhk/s1600/event1.png&quot; imageanchor=&quot;1&quot; style=&quot;font-family: moderna; font-size: 8pt; margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;57&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigcKyU_cOI3ZCtfttafhDVJUxBg1G4oHC9vnsWv7LP6o7HISGZchg2-OYxFyqO4gPzflxcHq-WLDWowJGBH1gtefHaBaHX8E4doZ1V6N8Mhs-5uYmsf6Ya0veDbPB7avtCzR_GU7RtLhk/s320/event1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Si lo que queremos en, llamar a esta función cuando se valide un campo, seleccionaremos la opción de:&lt;br /&gt;
&lt;span style=&quot;color: #444444; font-family: inherit;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp0ukJ4ZyOeXJPKRZI-xNxQqXWTRL5L9nUQBjYfnerrpHAldoABju6ikOW1tJPLN74nQUQsFeU90ovuksBSwjO4VYoNnT7DgaRx7KCA7kVxrG4xN-ewugpHiSvqU7Hy9MU63lDY-ZyGKs/s1600/triger1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;10&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp0ukJ4ZyOeXJPKRZI-xNxQqXWTRL5L9nUQBjYfnerrpHAldoABju6ikOW1tJPLN74nQUQsFeU90ovuksBSwjO4VYoNnT7DgaRx7KCA7kVxrG4xN-ewugpHiSvqU7Hy9MU63lDY-ZyGKs/s320/triger1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNlJPjclBIZfPtm8HJwXSRQpBCcDGdZZ9N49yFSMHyVNCfdeqJwUm4WrgThpQ4yPq4jQqO4Y_vTFQRTFavbPHlTeatvieYMzEXF2SRMloUhDzMCf4D8fk8j1WoiWruBuvGeszZoBhbPIk/s1600/triger1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;color: #444444; font-family: inherit; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;span style=&quot;color: #444444; font-family: inherit; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: #676767; font-family: &amp;quot;moderna&amp;quot;; font-size: 8pt;&quot;&gt;&amp;nbsp;ó&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1cicdGE_zh8iQdIOLlp5SE7PIlA939CWkIpDwdD51D3Xu_lrED24CdkReWrXYjMEwtFMfQQXPXkjz8cIAQXBoARgu3e1JeF-p8aZjjMHHsRhQE7y4reayVBFgXDoD7MHMdMJEZNFRNaU/s1600/truger2.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;10&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1cicdGE_zh8iQdIOLlp5SE7PIlA939CWkIpDwdD51D3Xu_lrED24CdkReWrXYjMEwtFMfQQXPXkjz8cIAQXBoARgu3e1JeF-p8aZjjMHHsRhQE7y4reayVBFgXDoD7MHMdMJEZNFRNaU/s320/truger2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;color: #444444; font-family: inherit; font-size: xx-small;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso, nos aparecerá un nuevo campo en el que le tendremos que indicar sobre &amp;nbsp;que campo, queremos que actue, es decir, cuando se ejecute el validate de que campo, queremos que llame Navision a esta función. Pro ejemplo : “No.”&lt;br /&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqnA6BZgNhyU0MdK9esYd7O2Gbnt1LzNKdrMK_uFk8QhATNG5iln24xmfORTqb7EQ7_Ge1PaQlyQ38G50jzf6MeRMsX9PUtZRVUGzODTxgYdRqUX0fA99E64Bd3ozDeiIxR53QT_a-SXs/s1600/en+este+caso.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;68&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqnA6BZgNhyU0MdK9esYd7O2Gbnt1LzNKdrMK_uFk8QhATNG5iln24xmfORTqb7EQ7_Ge1PaQlyQ38G50jzf6MeRMsX9PUtZRVUGzODTxgYdRqUX0fA99E64Bd3ozDeiIxR53QT_a-SXs/s320/en+este+caso.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0.0001pt;&quot;&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Por lo tanto, cuando desde la tabla Item, se ejecute alguna de las acciones configuradas en estas funciones, que Navision las llamara y ejecutara el código que hay en ellas.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo cuando se lance el OnModify queremos que se controle la descripción, que no esté vacia hariamos los siguiente. Una función con las propiedades:&lt;br /&gt;
&lt;br /&gt;
Funcion &quot;DespuesModifyItem&quot;&lt;br /&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;span style=&quot;color: #444444; font-family: inherit;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq4J7kWl-pb0IpQbiaKf5z97prCEel2Pf5zYIZ4EqX-lgIYqH1B4210dB05CiuoWq_grtI5m1vJJQyE8KDmIpgF337V79HnBjWTfgqDcDpPkWpX4VwSeRaY6UfJU0KosQsHtQlVAi0f4I/s1600/event1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;57&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq4J7kWl-pb0IpQbiaKf5z97prCEel2Pf5zYIZ4EqX-lgIYqH1B4210dB05CiuoWq_grtI5m1vJJQyE8KDmIpgF337V79HnBjWTfgqDcDpPkWpX4VwSeRaY6UfJU0KosQsHtQlVAi0f4I/s320/event1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-family: &amp;quot;helvetica neue&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: xx-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;span style=&quot;color: #444444; font-family: inherit; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: #676767; font-family: &amp;quot;moderna&amp;quot;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;span style=&quot;color: #444444; font-family: inherit; font-size: xx-small;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;32&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRUjNcJmxaHzWbCmPEa7MVJw_ozEAmFSYPeZv8_sT8jVSS5kdvZL8JInvhwOcCWZ9fi01BMFxyVB5Ng589e-DdrieoEimSj9XXjRR0NwMGbHwBehKxhSMZVv_HMtmy_5iqIXnhcGxVHO8/s400/event2.png&quot; width=&quot;400&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 12.0pt;&quot;&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Es interesante también documentar de alguna manera en el trigger que lanza el evento si hay un codigo asociado al mismo ya sea antes o despues del que existe en el trigger.&lt;br /&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: normal;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ6DOdC_SiRoXH99UiJf0iVDXs-OFF4crZqBpLpwrLzWTtiqFMjvQFUCwKQ9bzR7hZEcp3A9CWmvXiGQSdDZLVyFCE0zKnDPT2VY6u2TQUOOZ8gBD_sPtBSKRZByQkzLicPZ1RCqefecM/s1600/final.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;103&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ6DOdC_SiRoXH99UiJf0iVDXs-OFF4crZqBpLpwrLzWTtiqFMjvQFUCwKQ9bzR7hZEcp3A9CWmvXiGQSdDZLVyFCE0zKnDPT2VY6u2TQUOOZ8gBD_sPtBSKRZByQkzLicPZ1RCqefecM/s320/final.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/3223549492120737633/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2015/12/eventos-en-navision-2016.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/3223549492120737633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/3223549492120737633'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2015/12/eventos-en-navision-2016.html' title='Eventos en Navision 2016'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN5A6mIkp_b_b7LmlCNbsua-5bDPUnA7iOTu3mTeH5BtYTMpVmtOLV4qX1gyC5Am-qun5i2fS0p28DO0kWM_9D656QzXrahjwLSvXhdmg1RAaQTcLamm2oi1LriJTwkvyUSExahNhOSIo/s72-c/1.1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-7874874657238716932</id><published>2015-11-26T04:28:00.001-08:00</published><updated>2015-12-02T01:05:41.856-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="RTC"/><category scheme="http://www.blogger.com/atom/ns#" term="Servicio web"/><category scheme="http://www.blogger.com/atom/ns#" term="Soap"/><category scheme="http://www.blogger.com/atom/ns#" term="web service"/><title type='text'>Consumir Web Service / Servicio Web SOAP II (RTC)</title><content type='html'>&lt;br /&gt;
Hace un tiempo publicamos un post indicando como consumir un web service desde navision(&lt;a href=&quot;http://mundonavision.blogspot.com.es/2011/05/consumir-web-service-servicio-web-soap.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed:+blogspot/nZFWz+%28Mundo+Navision%29&quot; target=&quot;_blank&quot;&gt;Consumir Web service SOAP&lt;/a&gt; ), está funcionalidad se podía utilzar en el cliente clásico y hasta la version 2009. Ahora con el cambio de platafarma y hasta la version 2016 en la que se implementa una funcionalidad específica para realizar esto, la solución que hemos encontrado es la siguiente.&lt;br /&gt;
&lt;br /&gt;
En resumen, lo que se hace es crear el fichero Xml directamente luego lo enviamos al web service y leemos la respuesta. En este caso enviamos dos parámetros y recogemos un valor booleano que nos devuelve una codeunit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Variables.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Name&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Length&lt;br /&gt;
URL&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 250&lt;br /&gt;
Metodo&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 1024&lt;br /&gt;
NameSpace&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 80&lt;br /&gt;
NodeList&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Automation&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Microsoft XML, v6.0&#39;.IXMLDOMNodeList&amp;nbsp;&amp;nbsp; &lt;br /&gt;
xmlhttp&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Automation&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Microsoft XML, v6.0&#39;.XMLHTTP&amp;nbsp;&amp;nbsp; &lt;br /&gt;
xmldoc&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Automation&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Microsoft XML, v6.0&#39;.DOMDocument&amp;nbsp;&amp;nbsp; &lt;br /&gt;
soapEnvelope&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Automation&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Microsoft XML, v6.0&#39;.IXMLDOMElement&amp;nbsp;&amp;nbsp; &lt;br /&gt;
soapBody&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Automation&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Microsoft XML, v6.0&#39;.IXMLDOMElement&amp;nbsp;&amp;nbsp; &lt;br /&gt;
soapMethod&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Automation&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Microsoft XML, v6.0&#39;.IXMLDOMElement&amp;nbsp;&amp;nbsp; &lt;br /&gt;
soapAtributo&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Automation&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Microsoft XML, v6.0&#39;.IXMLDOMElement&amp;nbsp;&amp;nbsp; &lt;br /&gt;
node&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Automation&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Microsoft XML, v6.0&#39;.IXMLDOMNode&amp;nbsp;&amp;nbsp; &lt;br /&gt;
parametersXmlDoc&amp;nbsp;&amp;nbsp;&amp;nbsp; Automation&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Microsoft XML, v6.0&#39;.DOMDocument&amp;nbsp;&amp;nbsp; &lt;br /&gt;
xmldoc2&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Automation&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Microsoft XML, v6.0&#39;.DOMDocument&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;h3 class=&quot;post-title entry-title&quot; itemprop=&quot;name&quot;&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h3 class=&quot;post-title entry-title&quot; itemprop=&quot;name&quot;&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Función LlamarWS(Producto : Code[20];TipoMod : Code[20]) Result : Boolean&lt;/span&gt;&lt;/h3&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Result := FALSE;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;//iniciar llamada al web service&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;URL:=&#39;http://localhost:7047/DynamicsNAV/ws/company/Codeunit/nombreCodeunit&#39;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Metodo:=&#39;PruebasWS&#39;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;NameSpace:=&#39;urn:microsoft-dynamics-schemas/codeunit/nombreCodeunit&#39;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;// Crear el documento xml&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;CREATE(xmldoc,TRUE,TRUE);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;// Crear el envelope SOAP&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapEnvelope := xmldoc.createElement(&#39;Soap:Envelope&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapEnvelope.setAttribute(&#39;xmlns:Soap&#39;, &#39;http://schemas.xmlsoap.org/soap/envelope/&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;xmldoc.appendChild(soapEnvelope);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;// Crear el cuerpo del SOAP&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapBody := xmldoc.createElement(&#39;Soap:Body&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapEnvelope.appendChild(soapBody);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;// Crear el método del body&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapMethod := xmldoc.createElement(Metodo);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapMethod.setAttribute(&#39;xmlns&#39;, NameSpace);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapBody.appendChild(soapMethod);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;// Crear los parametros del metodo.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapAtributo:= xmldoc.createElement(&#39;oarametro1&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapAtributo.text(textoParametro1);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapMethod.appendChild(soapAtributo);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapAtributo:= xmldoc.createElement(&#39;parametro2&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapAtributo.text(&lt;/span&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;textoParametro1&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;soapMethod.appendChild(soapAtributo);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;//Enviar fichero al web service &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;CREATE(xmlhttp, TRUE, TRUE);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;xmlhttp.open(&#39;POST&#39;, URL, FALSE);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;xmlhttp.setRequestHeader(&#39;Content-type&#39;, &#39;text/xml; charset=utf-8&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;xmlhttp.setRequestHeader(&#39;SOAPAction&#39;, Metodo);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;xmlhttp.send(xmldoc);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;//si la respeusta es Ok devuelve valor 200&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;IF xmlhttp.status=200 THEN&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;BEGIN&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp; xmldoc := xmlhttp.responseXML;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp; xmldoc.setProperty(&#39;SelectionLanguage&#39;,&#39;XPath&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp; xmldoc.setProperty(&#39;SelectionNamespaces&#39;,&#39;xmlns:tns=&quot;&#39;+NameSpace+&#39;&quot;&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp; NodeList := xmldoc.selectNodes(&#39;//tns:&#39;+&#39;return_value&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp; Result := TRUE;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp; if NodeList.item(0).text = &#39;true&#39; then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit(TRUE);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;End;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Exit(FALSE);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tambien se podria realizar la lectura del Xml devuelto pero eso ya depende de los gustos de cada uno. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Variables&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;xmldoc2 &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Automation&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Microsoft XML, v6.0&#39;.DOMDocument&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;IF ISCLEAR(xmldoc2) THEN&lt;br /&gt;&amp;nbsp; CREATE(xmldoc2,TRUE,TRUE);&lt;br /&gt;xmldoc2.load(xmlhttp.responseXML);&lt;br /&gt;xmldoc2.save(&#39;ruta\fichero.xml&#39;); &lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/7874874657238716932/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2015/11/consumir-web-service-servicio-web-soap.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/7874874657238716932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/7874874657238716932'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2015/11/consumir-web-service-servicio-web-soap.html' title='Consumir Web Service / Servicio Web SOAP II (RTC)'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-4113010149613678734</id><published>2015-04-22T04:41:00.001-07:00</published><updated>2015-12-02T01:06:32.585-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automation"/><category scheme="http://www.blogger.com/atom/ns#" term="outlook"/><title type='text'>Envío email a traves de librerias outlook</title><content type='html'>&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
Con esta función se consigue enviar un 
correo utilizando las librerias de outlook. existen varias opciones 
tanto de formato como de tipo de envio ya sea enviado directamente o 
levantando el cliente Outlook para comprobar antes de enviar. Para ello 
primero vamos a crear dos variables locales tipo automation asignando librerias de Outlook.&lt;/div&gt;
&lt;div&gt;
&lt;br clear=&quot;none&quot; /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; - OMail Automation &#39;Microsoft Outlook 9.0 Object ibrary&#39;.MailItem&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; - OApp Automation &#39;Microsoft Outlook 9.0 Object ibrary&#39;.Application&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:OfficeDocumentSettings&gt;
  &lt;o:AllowPNG/&gt;
 &lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;/div&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:OfficeDocumentSettings&gt;
  &lt;o:AllowPNG/&gt;
 &lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;br /&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:HyphenationZone&gt;21&lt;/w:HyphenationZone&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;ES&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:EnableOpenTypeKerning/&gt;
   &lt;w:DontFlipMirrorIndents/&gt;
   &lt;w:OverrideTableStyleHps/&gt;
  &lt;/w:Compatibility&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val=&quot;Cambria Math&quot;/&gt;
   &lt;m:brkBin m:val=&quot;before&quot;/&gt;
   &lt;m:brkBinSub m:val=&quot;&amp;#45;-&quot;/&gt;
   &lt;m:smallFrac m:val=&quot;off&quot;/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val=&quot;0&quot;/&gt;
   &lt;m:rMargin m:val=&quot;0&quot;/&gt;
   &lt;m:defJc m:val=&quot;centerGroup&quot;/&gt;
   &lt;m:wrapIndent m:val=&quot;1440&quot;/&gt;
   &lt;m:intLim m:val=&quot;subSup&quot;/&gt;
   &lt;m:naryLim m:val=&quot;undOvr&quot;/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState=&quot;false&quot; DefUnhideWhenUsed=&quot;true&quot;
  DefSemiHidden=&quot;true&quot; DefQFormat=&quot;false&quot; DefPriority=&quot;99&quot;
  LatentStyleCount=&quot;267&quot;&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Normal&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;heading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;35&quot; QFormat=&quot;true&quot; Name=&quot;caption&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;10&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; Name=&quot;Default Paragraph Font&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;11&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtitle&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;22&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Strong&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;20&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;59&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Table Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Placeholder Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;No Spacing&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Revision&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;34&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;List Paragraph&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;29&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;30&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;19&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;21&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;31&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;32&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;33&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Book Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;37&quot; Name=&quot;Bibliography&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; QFormat=&quot;true&quot; Name=&quot;TOC Heading&quot;/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:&quot;Tabla normal&quot;;
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-parent:&quot;&quot;;
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-para-margin:0cm;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:11.0pt;
 font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
 mso-ascii-font-family:Calibri;
 mso-ascii-theme-font:minor-latin;
 mso-hansi-font-family:Calibri;
 mso-hansi-theme-font:minor-latin;
 mso-bidi-font-family:&quot;Times New Roman&quot;;
 mso-bidi-theme-font:minor-bidi;
 mso-fareast-language:EN-US;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
En este caso se ha puesto la versión 9.0 porque es la versión
que tengo instalada en mi equipo. Es necesario que todos los equipos desde
donde se va lanzar esta función tengan instalada mínimo la misma versión con la
que se han definido las variables. No habría problema con los equipos que
tengan instalada una versión superior de las librerías ya que leerían las dll
perfectamente no asi los equipos con versiones anteriores.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:HyphenationZone&gt;21&lt;/w:HyphenationZone&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;ES&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:EnableOpenTypeKerning/&gt;
   &lt;w:DontFlipMirrorIndents/&gt;
   &lt;w:OverrideTableStyleHps/&gt;
  &lt;/w:Compatibility&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val=&quot;Cambria Math&quot;/&gt;
   &lt;m:brkBin m:val=&quot;before&quot;/&gt;
   &lt;m:brkBinSub m:val=&quot;&amp;#45;-&quot;/&gt;
   &lt;m:smallFrac m:val=&quot;off&quot;/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val=&quot;0&quot;/&gt;
   &lt;m:rMargin m:val=&quot;0&quot;/&gt;
   &lt;m:defJc m:val=&quot;centerGroup&quot;/&gt;
   &lt;m:wrapIndent m:val=&quot;1440&quot;/&gt;
   &lt;m:intLim m:val=&quot;subSup&quot;/&gt;
   &lt;m:naryLim m:val=&quot;undOvr&quot;/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState=&quot;false&quot; DefUnhideWhenUsed=&quot;true&quot;
  DefSemiHidden=&quot;true&quot; DefQFormat=&quot;false&quot; DefPriority=&quot;99&quot;
  LatentStyleCount=&quot;267&quot;&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Normal&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;heading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;35&quot; QFormat=&quot;true&quot; Name=&quot;caption&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;10&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; Name=&quot;Default Paragraph Font&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;11&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtitle&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;22&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Strong&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;20&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;59&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Table Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Placeholder Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;No Spacing&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Revision&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;34&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;List Paragraph&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;29&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;30&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;19&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;21&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;31&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;32&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;33&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Book Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;37&quot; Name=&quot;Bibliography&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; QFormat=&quot;true&quot; Name=&quot;TOC Heading&quot;/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:&quot;Tabla normal&quot;;
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-parent:&quot;&quot;;
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-para-margin:0cm;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:11.0pt;
 font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
 mso-ascii-font-family:Calibri;
 mso-ascii-theme-font:minor-latin;
 mso-hansi-font-family:Calibri;
 mso-hansi-theme-font:minor-latin;
 mso-bidi-font-family:&quot;Times New Roman&quot;;
 mso-bidi-theme-font:minor-bidi;
 mso-fareast-language:EN-US;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br clear=&quot;none&quot; /&gt;
la funcion creada tiene varios parámetros :&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;eMail&lt;/b&gt; - dirección de correo del o de los destinatarios.&lt;br /&gt;
&lt;b&gt;RutaPlantilla &lt;/b&gt;- Es la ruta al fichero de plantilla con la que abrir el correo. &lt;br /&gt;
&lt;b&gt;RutaYFichero &lt;/b&gt;- Ruta del documento adjunto.&lt;br /&gt;
&lt;b&gt;MostrarCorreo&lt;/b&gt; - Es un booleano para determinar si queremos o no levantar el cliente Outlook antes de enviar el correo &lt;/div&gt;
&lt;br clear=&quot;none&quot; /&gt;
IF ISCLEAR(OApp) THEN&lt;br /&gt;
&amp;nbsp; CREATE(OApp,FALSE,TRUE);&lt;br /&gt;
//OMail := OApp.CreateItem(0); &lt;b&gt;&lt;i&gt;//Si NO utilizamos plantillas&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
OMail := OApp.CreateItemFromTemplate(rutaplantilla); &lt;b&gt;&lt;i&gt;//Si se usan plantillas&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
OMail.&quot;To&quot;:=eMail;&lt;br /&gt;
IF RutayFichero &amp;lt;&amp;gt; &#39;&#39; THEN&lt;br /&gt;
&amp;nbsp; OMail.Attachments.Add(RutayFichero);&lt;b&gt; &lt;i&gt;//Si queremos adjuntar un fichero&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
OMail.Subject :=Asunto;&lt;br /&gt;
//OMail.Body := ‘El cuerpo del mensaje’; &lt;b&gt;/&lt;i&gt;/O ponemos este código o el de la plantilla.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
//OMail.OriginatorDeliveryReportRequested := TRUE; &lt;b&gt;&lt;i&gt;//Confirmación de recepción.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
//OMail.ReadReceiptRequested := TRUE; &lt;b&gt;&lt;i&gt;//Confirmación de lectura.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
IF MostrarCorreo=TRUE THEN&lt;br /&gt;
&amp;nbsp; OMail.Display&lt;b&gt;&lt;i&gt; //levanta el cliente correo si no se llama a esta funcion envai el correo &amp;nbsp;&lt;/i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;directamente.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
ELSE&lt;br /&gt;
OMail.Send;&lt;br /&gt;
&lt;br /&gt;
&lt;br clear=&quot;none&quot; /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/4113010149613678734/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2015/04/envio-email-traves-de-librerias-outlook.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/4113010149613678734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/4113010149613678734'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2015/04/envio-email-traves-de-librerias-outlook.html' title='Envío email a traves de librerias outlook'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-7239422641506784721</id><published>2015-03-05T07:56:00.002-08:00</published><updated>2015-12-02T01:07:24.901-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sql"/><category scheme="http://www.blogger.com/atom/ns#" term="trigger"/><title type='text'>Crear Trigger en SQL para insertar un registro en el que algunos campos son de tipo &quot;no null&quot;</title><content type='html'>Tenemos un proceso para alimentar una tabla de navision directamente desde sql. El proceso unicamente alimenta dos campos que son el campo1 y el campo4 y quieren que se calculen el campo2 y campo3 qeu corresponden a la fecha y hora. la tabla también tiene los 4 campos definidos como no Null por lo que necesitamos que esos campos se cumplimente al insertar sin dar error ya que como hemos mencionado antes dos de los campos los tenemos que calcular, la cuestión es ¿cuando?.&lt;br /&gt;
&lt;br /&gt;
Lo que hemos hecho ha sido utilizar el desencadenante INSTEAD OF INSERT, el desencadenador INSTEAD OF INSERT de una vista o tabla genera una instrucción INSERT en la tabla base mediante los datos de la tabla &lt;b&gt;inserted &lt;/b&gt;asi tenemos acceso a los campos del registro que se está insertando, al realizar el insert sobre la tabla real dentro del trigger disponemos (consulta select de la tabla inserte) el valor de los campos insertados los dos que no venian informados los hemos calculado.&lt;br /&gt;
&lt;br /&gt;
Para calcular el time lo que ponemos es la parte de fecha como a 0 pero en sql no puede haber fecha 0 y lo que hacemos es coger la primera fecha disponible &quot;1754-01-01&quot; y cumplimentamos la parte de la hora.

&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&quot;CAST(&#39;1754-01-01 &#39;+CONVERT(CHAR(8), GETDATE(), 108) AS DATETIME)&quot;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Para calcular la fecha lo que hacemos es poner la fecha de hoy y completamos a 0 la hora.&lt;br /&gt;
&lt;i&gt;&lt;i&gt;&quot;CONVERT(CHAR(10),GETDATE(), 120)&quot;&lt;/i&gt; &lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Definición de la tabla TablaEjemplo&lt;br /&gt;
Campo1 nvarchar(2)&lt;br /&gt;
Campo2 Fecha datetime&lt;br /&gt;
Campo3 Time datetime&lt;br /&gt;
Campo4 int&lt;br /&gt;
&lt;br /&gt;
ALTER TRIGGER [dbo].[ActualizarFechas]&lt;br /&gt;
ON  [dbo].[TablaEjemplo]&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; INSTEAD OF INSERT&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AS 
BEGIN&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; declare @cpo1 nvarchar(2);
 declare @cpo2 int;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT @cpo1= CampoTabla1,@cpo2=CampoTabla4&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM inserted&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO [dbo].[TablaEjemplo]
   ([Maquina],[Fecha],[Hora],[Contador])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (@cpo1,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONVERT(CHAR(10),GETDATE(), 120),&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CAST(&#39;1754-01-01 &#39;+CONVERT(CHAR(8), GETDATE(), 108) AS DATETIME),&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; @cpo2)&lt;br /&gt;
END
</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/7239422641506784721/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2015/03/crear-trigger-en-sql-para-insertar-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/7239422641506784721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/7239422641506784721'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2015/03/crear-trigger-en-sql-para-insertar-un.html' title='Crear Trigger en SQL para insertar un registro en el que algunos campos son de tipo &quot;no null&quot;'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-7733633339956426204</id><published>2015-02-25T04:36:00.001-08:00</published><updated>2015-12-02T01:07:05.236-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="identificador"/><category scheme="http://www.blogger.com/atom/ns#" term="RTC"/><title type='text'>Identificar entorno NAV versiones RTC</title><content type='html'>Exite la posibilidad en RTC de identificar la base de datos en la que nos encontramos, esto permite que en un vistazo veamos la base de datos en la que estamos trabajando ya sea en pruebas o en real en vez de tener que ir a buscar esta información cada vez que queramos comprobar donde estamos.

para configurarlo es necesario ir a Información de empresa --&amp;gt; Indicador del sistema

&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGdFXdAMRgyi3SBUoLly0ae-TKvX-qs0FghN89BAtfm69Licgx-mWnCZb-tL6Ng6mAzHeZu0V7Q_Qmhd_2nA0vHndf3JJGw7H3Mql1n3Zwi55p_s5OZyHvBqBlzqReWFPfeLxCdHgDZ2M/s1600/imagen.bmp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGdFXdAMRgyi3SBUoLly0ae-TKvX-qs0FghN89BAtfm69Licgx-mWnCZb-tL6Ng6mAzHeZu0V7Q_Qmhd_2nA0vHndf3JJGw7H3Mql1n3Zwi55p_s5OZyHvBqBlzqReWFPfeLxCdHgDZ2M/s400/imagen.bmp&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
En el indicador del sistema se establece el tipo de indicador, si queremos poner un texto nuestro utilzamos la opción de &quot;texto personalizado&quot;.

En el campo de enfasis se definen los matices con los que queremos que se refleje el indicador.

En texto personalizado definimos el texto del indicador.


</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/7733633339956426204/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2015/02/identificar-entorno-nav-versiones-rtc.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/7733633339956426204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/7733633339956426204'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2015/02/identificar-entorno-nav-versiones-rtc.html' title='Identificar entorno NAV versiones RTC'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGdFXdAMRgyi3SBUoLly0ae-TKvX-qs0FghN89BAtfm69Licgx-mWnCZb-tL6Ng6mAzHeZu0V7Q_Qmhd_2nA0vHndf3JJGw7H3Mql1n3Zwi55p_s5OZyHvBqBlzqReWFPfeLxCdHgDZ2M/s72-c/imagen.bmp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-5912150443812923070</id><published>2015-02-25T00:32:00.001-08:00</published><updated>2015-02-25T00:41:08.799-08:00</updated><title type='text'>Error al exportar objetos &quot;El archivo de objetos no se puede utilizar con esta versión del programa&quot; </title><content type='html'>
En ocasiones al realizar la exportación de un fob a una carpeta surge este error:

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqPNuq1e9orSxC1luYKsu8p-2IcNPqugOjPtVfLeaLE0HjvJy-TpglZRaIwH5PfnpfYdMoHpTyWr_vCf9SDpxTo3oxx1a9mUd2bFtx0zegT2mQejBMHjSsN2V_MxZA2jbTDTHRR1OTHuY/s1600/Error.bmp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqPNuq1e9orSxC1luYKsu8p-2IcNPqugOjPtVfLeaLE0HjvJy-TpglZRaIwH5PfnpfYdMoHpTyWr_vCf9SDpxTo3oxx1a9mUd2bFtx0zegT2mQejBMHjSsN2V_MxZA2jbTDTHRR1OTHuY/s320/Error.bmp&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

La solución más fácil que hemos encontrado es crear una carpeta nueva para que se pueda exportar el fichero o bien borrar los fobs de la versión superior que estén en esa ruta. Lo que hace Navision es realizar una comprobación para ver si un fichero que se ha generado en versiones de la base de datos superiores se ha exportado en esa misma ruta y al ver que si se ha realizado da el error.
</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/5912150443812923070/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2015/02/error-al-exportar-objetos-el-archivo-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/5912150443812923070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/5912150443812923070'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2015/02/error-al-exportar-objetos-el-archivo-de.html' title='Error al exportar objetos &quot;El archivo de objetos no se puede utilizar con esta versión del programa&quot; '/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqPNuq1e9orSxC1luYKsu8p-2IcNPqugOjPtVfLeaLE0HjvJy-TpglZRaIwH5PfnpfYdMoHpTyWr_vCf9SDpxTo3oxx1a9mUd2bFtx0zegT2mQejBMHjSsN2V_MxZA2jbTDTHRR1OTHuY/s72-c/Error.bmp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-2907948730246731025</id><published>2011-11-04T04:51:00.000-07:00</published><updated>2011-11-04T04:55:19.441-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="navision"/><category scheme="http://www.blogger.com/atom/ns#" term="tarjetas"/><title type='text'>Comprobar numeración de tarjeta de crédito</title><content type='html'>Al igual que con los números de cuenta cada tipo de tarjeta de crédito tiene una configuración determinada, os voy a dejar un bloque de código donde se comprueban los formatos para los diferentes tipos de tarjetas de credito, Visa, MasteCard, American Express, Discover y Dinners Club. A ver si os vale&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; vDigito:=COPYSTR(NumeroTarjeta,1,1);&lt;br /&gt;
&amp;nbsp; vDigito2:=COPYSTR(NumeroTarjeta,1,2);&lt;br /&gt;
&amp;nbsp; vDigito4:=COPYSTR(NumeroTarjeta,1,4);&lt;br /&gt;
&lt;br /&gt;
//American express&lt;br /&gt;
&amp;nbsp; IF &quot;Tipo Tarjeta&quot;=&quot;Tipo Tarjeta&quot;::&quot;American Express&quot; THEN BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; IF (vDigito2 = &#39;34&#39;) OR (vDigito2 = &#39;37&#39;) THEN BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; IF (STRLEN(NumeroTarjeta) &amp;lt;&amp;gt; 15) THEN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ERROR(TXT1,STRLEN(NumeroTarjeta),&quot;Tipo Tarjeta&quot;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; END&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ELSE&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; ERROR(TXT2,rPolizas.NumeroTarjeta,rPolizas.&quot;Tipo Tarjeta&quot;);&lt;br /&gt;
&amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
//Visa&lt;br /&gt;
&amp;nbsp; IF &quot;Tipo Tarjeta&quot;=&quot;Tipo Tarjeta&quot;::Visa THEN BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; IF vDigito = &#39;4&#39; THEN BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; IF (STRLEN(NumeroTarjeta) &amp;lt;&amp;gt; 13) AND (STRLEN(NumeroTarjeta) &amp;lt;&amp;gt; 16) THEN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ERROR(TXT1,STRLEN(NumeroTarjeta),&quot;Tipo Tarjeta&quot;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; END&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ELSE&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; ERROR(TXT2,NumeroTarjeta,&quot;Tipo Tarjeta&quot;);&lt;br /&gt;
&amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
//MasterCard&lt;br /&gt;
&amp;nbsp; IF &quot;Tipo Tarjeta&quot;=&quot;Tipo Tarjeta&quot;::MasterCard THEN BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; IF (vDigito2 &amp;gt;= &#39;51&#39;) AND (vDigito2 &amp;lt;= &#39;55&#39;) THEN BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; IF (STRLEN(NumeroTarjeta) &amp;lt;&amp;gt; 16) THEN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ERROR(TXT1,STRLEN(NumeroTarjeta),&quot;Tipo Tarjeta&quot;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; END&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ELSE&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ERROR(TXT2,NumeroTarjeta,&quot;Tipo Tarjeta&quot;);&lt;br /&gt;
&amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
//Discover&lt;br /&gt;
&amp;nbsp; IF &quot;Tipo Tarjeta&quot;=.&quot;Tipo Tarjeta&quot;::Discover THEN BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; IF vDigito4 = &#39;6011&#39; THEN BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; IF (STRLEN(NumeroTarjeta) &amp;lt;&amp;gt; 16) THEN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ERROR(TXT1,STRLEN(NumeroTarjeta),&quot;Tipo Tarjeta&quot;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; END&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ELSE&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; ERROR(TXT2,NumeroTarjeta,&quot;Tipo Tarjeta&quot;);&lt;br /&gt;
&amp;nbsp; END; &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
//Diners club&lt;br /&gt;
&amp;nbsp; IF &quot;Tipo Tarjeta&quot;=&quot;Tipo Tarjeta&quot;::&quot;Diners club&quot; THEN BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; IF (vDigito2 = &#39;30&#39;) OR (vDigito2 = &#39;36&#39;) OR (vDigito2 = &#39;38&#39;) THEN BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; IF (STRLEN(NumeroTarjeta) &amp;lt;&amp;gt; 14) THEN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ERROR(TXT1,STRLEN(NumeroTarjeta),&quot;Tipo Tarjeta&quot;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; END&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ELSE&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; ERROR(TXT2,NumeroTarjeta,&quot;Tipo Tarjeta&quot;);&lt;br /&gt;
&amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
//Comprobar numeración de tarjeta&lt;br /&gt;
&amp;nbsp; vNuevoNT:=&#39;&#39;;&lt;br /&gt;
&amp;nbsp; FOR vIndex:=1 TO STRLEN(NumeroTarjeta) DO BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;vNuevoNT:=&#39;&#39;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;IF vIndex MOD 2 &amp;lt;&amp;gt; 0 THEN BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(vNoperar,FORMAT(NumeroTarjeta[vIndex]));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IF vNoperar * 2 &amp;gt; 9 THEN BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vNuevoNT:=FORMAT((vNoperar*2)-9);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELSE BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vNuevoNT:=FORMAT((vNoperar*2));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;END&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;ELSE BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vNuevoNT:=FORMAT(NumeroTarjeta[vIndex]);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;END;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;EVALUATE(vConvert,vNuevoNT);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;vResultado+=vConvert;&lt;br /&gt;
&amp;nbsp; END;&lt;br /&gt;
&amp;nbsp; IF (vResultado MOD 10 &amp;lt;&amp;gt; 0) AND (vResultado &amp;gt; 150) THEN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ERROR(&#39;El numero de tarjeta %1 no es correcto&#39;,NumeroTarjeta);&lt;br /&gt;
END;</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/2907948730246731025/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2011/11/comprobar-numeracion-de-tarjeta-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/2907948730246731025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/2907948730246731025'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2011/11/comprobar-numeracion-de-tarjeta-de.html' title='Comprobar numeración de tarjeta de crédito'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-6412769948023430569</id><published>2011-11-04T04:46:00.000-07:00</published><updated>2011-11-04T04:55:53.455-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="navision"/><category scheme="http://www.blogger.com/atom/ns#" term="numero cuenta"/><category scheme="http://www.blogger.com/atom/ns#" term="validacion"/><title type='text'>Sacar el dígito control de numero cuenta para comprobar si es correcto</title><content type='html'>Voy a dejar un bloque de código donde se realiza la comprobación del dígito de control de un número de cuenta para saber si este es correcto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Comprobar longitud y numero de cuenta&lt;br /&gt;
Suma1Int:=0;&lt;br /&gt;
Suma2Int:=0;&lt;br /&gt;
IF vTXTNumCuenta &amp;lt;&amp;gt; &#39;&#39; THEN BEGIN&lt;br /&gt;
&amp;nbsp; FOR vIndex:=1 TO 10 DO BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Suma1:=0;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Suma2:=0;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;EVALUATE(Digit1,COPYSTR(vTXTNumCuenta,9,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;EVALUATE(Digit2,COPYSTR(vTXTNumCuenta,10,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;CASE vIndex &amp;nbsp;OF&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1: BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,1,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,11,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma1Int:=Suma1*4;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma2Int:=Suma2*1;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2: BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,2,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,12,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma1Int+=Suma1*8;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma2Int+=Suma2*2;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3: BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,3,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,13,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma1Int+=Suma1*5;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma2Int+=Suma2*4; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4: BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,4,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,14,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma1Int+=Suma1*10;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma2Int+=Suma2*8;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5: BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,5,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,15,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma1Int+=Suma1*9;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma2Int+=Suma2*5;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6: BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,6,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,16,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma1Int+=Suma1*7;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma2Int+=Suma2*10;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7: BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,7,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,17,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma1Int+=Suma1*3;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma2Int+=Suma2*9;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8: BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,8,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,18,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma1Int+=Suma1*6;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma2Int+=Suma2*7;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9: BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,19,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma2Int+=Suma2*3;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;10: &amp;nbsp;BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,20,1));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Suma2Int+=Suma2*6;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;END; &lt;br /&gt;
&amp;nbsp; END;&lt;br /&gt;
//Primer dígito de control entidad+sucursal&lt;br /&gt;
&amp;nbsp; Parc1:=0;&lt;br /&gt;
&amp;nbsp; Parc1:= 11 - (Suma1Int MOD 11);&lt;br /&gt;
&amp;nbsp; IF Parc1 &amp;gt; 9 THEN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Parc1:=11 - Parc1;&lt;br /&gt;
&lt;br /&gt;
//Segundo dígito de control Numero Cuenta&lt;br /&gt;
&amp;nbsp; Parc2:=0;&lt;br /&gt;
&amp;nbsp; Parc2:=11 - (Suma2Int MOD 11);&lt;br /&gt;
&amp;nbsp; IF Parc2 &amp;gt; 9 THEN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Parc2:=11 - Parc2;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; IF (Digit1 = Parc1) AND (Digit2 = Parc2) THEN BEGIN&lt;br /&gt;
&amp;nbsp; END&lt;br /&gt;
&amp;nbsp; ELSE BEGIN&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ERROR(&#39;Número cuenta erroneo, no corresponde el DC: %1%2&#39;,Parc1,Parc2);&lt;br /&gt;
&amp;nbsp; END;&lt;br /&gt;
END;</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/6412769948023430569/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2011/11/sacar-digito-control-de-numero-cuenta.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/6412769948023430569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/6412769948023430569'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2011/11/sacar-digito-control-de-numero-cuenta.html' title='Sacar el dígito control de numero cuenta para comprobar si es correcto'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-2060196242112995076</id><published>2011-10-04T02:55:00.000-07:00</published><updated>2011-11-04T04:44:35.061-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="dll"/><category scheme="http://www.blogger.com/atom/ns#" term="navision"/><category scheme="http://www.blogger.com/atom/ns#" term="registro"/><title type='text'>Registro dll desde .net c sharp</title><content type='html'>voy a intentar explicar un poco como registrar una dll de c sharp en un equipo para que desde navision se le pueda llamar, ya se ha explicado como crear una dll cuyos métodos sean visibles desde navision ahora el siguiente paso es registrarla para que esta sea operativa.&lt;br /&gt;
&lt;br /&gt;
yo me he inclinado por añadir un proyecto de instalación en la solución donde hemos creado la aplicación, ir al equipo donde queremos instalarlo y al ejecutarlo nos copia la dll junto con el tlb que se genera en la carpeta que queremos normalmente en c:\windows\system32 y luego con el comando regasm del framework correspondiente registraríamos estas dll.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1 Creación del proyecto de instalación.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;Lo primero es agregar un nuevo proyecto a la solución. Asegurarse de seleccionar la opción del asistente para proyectos de instalación.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEw6V376Sj9cwHQ8CTaZol9CQzLHhwWJCC2VR3oprRicZNuAFJbAGjrfilCf_9ii0_3hVrNnW4QjcpQxamFNzqJL7gvbdsZJ7_6_jMlUHJg24TYsscvcezSFrS0eQuvFIFkmJyOlySADo/s1600/menu.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;255&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEw6V376Sj9cwHQ8CTaZol9CQzLHhwWJCC2VR3oprRicZNuAFJbAGjrfilCf_9ii0_3hVrNnW4QjcpQxamFNzqJL7gvbdsZJ7_6_jMlUHJg24TYsscvcezSFrS0eQuvFIFkmJyOlySADo/s400/menu.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #1f497d;&quot;&gt;S&lt;/span&gt;e elige el nombre que se quiera y al aceptar, se lanza el Wizard. Después de la pantalla de bienvenida, pide el entorno. Lo normal es seleccionar Windows&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #1f497d;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #1f497d;&quot;&gt;&lt;o:p&gt;&lt;br /&gt;
&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPcCyI9XMORkGgzyRLGabranFFhePXspuYaU3fVbua_hadqPwS9UfLSNaNs-P-Zh-BQf61nMDppIvPNlmFUz5reCROjaQ5mY-SwsmhZeHCw3C1VzOg7MQ8UfOEviaW_o4cBAA_Qzg4Vi4/s1600/menu2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;308&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPcCyI9XMORkGgzyRLGabranFFhePXspuYaU3fVbua_hadqPwS9UfLSNaNs-P-Zh-BQf61nMDppIvPNlmFUz5reCROjaQ5mY-SwsmhZeHCw3C1VzOg7MQ8UfOEviaW_o4cBAA_Qzg4Vi4/s400/menu2.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 11pt;&quot;&gt;Después pedirá que se indique lo que se quiere incluir en el paquete.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 15px;&quot;&gt;Indicar&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;que queremos el resultado principal del proyecto de la DLL.&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #1f497d;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt; text-align: left;&quot;&gt;&lt;span style=&quot;color: #1f497d;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt; text-align: left;&quot;&gt;&lt;span style=&quot;color: #1f497d;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih5i_GzeKNT78M4cLah46oF6uHeI55UA5-sd9IVMBBOPuExeLFvw1195T0t6fM7eowiWp_Cyb8rvt3Nv8o4ehIGH2dAn9EBU8BNp-kmHa5_lZ9mct99UnEAr-zgfiPL-aVrDKe7Nye4Qo/s1600/menu3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;308&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih5i_GzeKNT78M4cLah46oF6uHeI55UA5-sd9IVMBBOPuExeLFvw1195T0t6fM7eowiWp_Cyb8rvt3Nv8o4ehIGH2dAn9EBU8BNp-kmHa5_lZ9mct99UnEAr-zgfiPL-aVrDKe7Nye4Qo/s400/menu3.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #1f497d;&quot;&gt;&lt;o:p&gt;&lt;br /&gt;
&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;Después hay que indicar si se quiere añadir algún archivo complementario y ya termina.&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;El solo ya detecta como recurso imprescindible que tiene que estar el Framework en el equipo en el que lo vayas a instalar.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;b&gt;IMPORTANTE:&lt;/b&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #1f497d;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;En la parte superior del explorador de soluciones, se mostrará una serie de botones. El primero de la izquierda da acceso al sistema de archivos para que se indique dónde instalar la DLL.&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #1f497d;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: #1f497d;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: #1f497d;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2S6Q3qvZTbUNLe7Pj_v5vbSgRzxVz3jzW_Jfw3I-hfd-t6o5KuiJZdGbtrhICNuyiItLL23wXhoopPSZC3Gvp4gpQl6N2kxX0mS5Rik1kWwyoFlTrWsM2jLnY7oazulu58lpxE2On-XQ/s1600/menu4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;60&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2S6Q3qvZTbUNLe7Pj_v5vbSgRzxVz3jzW_Jfw3I-hfd-t6o5KuiJZdGbtrhICNuyiItLL23wXhoopPSZC3Gvp4gpQl6N2kxX0mS5Rik1kWwyoFlTrWsM2jLnY7oazulu58lpxE2On-XQ/s400/menu4.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: #1f497d;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: #1f497d;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: #1f497d;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Seleccionar carpeta de la aplicación, y en las propiedades que se muestran, en DefaultLocation, indicar la ruta de la carpeta System32.&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieFLXxMlNdhk1YZstaZMQQbDELWKx0uOaSXmY803aGbf85plaaPEpGNjR6zXMlPSWrBPCi0kQgE8UtZw3LZHIXkhrp_yciYYkHgcJo-yITH9NWY6VKJQ2miNy-3Teh2GfBkEDgLQY2cBQ/s1600/menu5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieFLXxMlNdhk1YZstaZMQQbDELWKx0uOaSXmY803aGbf85plaaPEpGNjR6zXMlPSWrBPCi0kQgE8UtZw3LZHIXkhrp_yciYYkHgcJo-yITH9NWY6VKJQ2miNy-3Teh2GfBkEDgLQY2cBQ/s1600/menu5.jpg&quot; /&gt;&lt;/a&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;b&gt;2 Registro de la Dll&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Abririamos una ventana de Ms-dos y ejecutaríamos algo así:&lt;br /&gt;
&lt;br /&gt;
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\regasm.exe C:\windows\System32\fichero.dll /tlb:C:\Windows\System32\Fichero.tlb /codebase /verbose&lt;br /&gt;
&lt;br /&gt;
La primera parte:&lt;br /&gt;
{C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\regasm.exe} esto depende del framework con en el que hayamos realizado la aplicación</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/2060196242112995076/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2011/10/registro-y-de-dll-desde-net-c-sharp.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/2060196242112995076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/2060196242112995076'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2011/10/registro-y-de-dll-desde-net-c-sharp.html' title='Registro dll desde .net c sharp'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEw6V376Sj9cwHQ8CTaZol9CQzLHhwWJCC2VR3oprRicZNuAFJbAGjrfilCf_9ii0_3hVrNnW4QjcpQxamFNzqJL7gvbdsZJ7_6_jMlUHJg24TYsscvcezSFrS0eQuvFIFkmJyOlySADo/s72-c/menu.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-7371798557086541147</id><published>2011-06-02T01:31:00.000-07:00</published><updated>2011-06-02T04:14:09.899-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automation"/><category scheme="http://www.blogger.com/atom/ns#" term="web service"/><category scheme="http://www.blogger.com/atom/ns#" term="Xml"/><title type='text'>Recorrer Xml en Navision</title><content type='html'>Como la propia funcionalidad de Navision no nos permite realizar lectura de ficheros Xml tendremos que crear variables &quot;automation&quot; que puedan tratar ficheros Xml.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Variables a Crear&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;locautXmlDoc&lt;/b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;&lt;/span&gt;Automation &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&#39;Microsoft XML, v6.0&#39;.DOMDocument&lt;br /&gt;&lt;b&gt;XMLNodeList&lt;/b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&lt;/span&gt;Automation &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&#39;Microsoft XML, v3.0&#39;.IXMLDOMNodeList&lt;br /&gt;&lt;b&gt;XMLNode&lt;/b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;b&gt;  &lt;/b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;b&gt; &lt;/b&gt;  &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Automation &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&#39;Microsoft XML, v3.0&#39;.IXMLDOMNode&lt;br /&gt;&lt;b&gt;XMLNodeBucle&lt;/b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&lt;/span&gt;Automation &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&#39;Microsoft XML, v3.0&#39;.IXMLDOMNode&lt;br /&gt;&lt;b&gt;vConta&lt;/b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;b&gt;      &lt;/b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Integer&lt;br /&gt;&lt;div&gt;&lt;b&gt;vConta2&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Integer &lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Tambien es necesario crear dos funciones para tratar los ficheros. Una función es para recorrer los nodos del propio Xml (LoadNodeList) y otra que recorra todos los nodos pero de la lista que ya hemos leido(Load node)&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Funcion LoadNodeList&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;XMLDocument : Automation &quot;&#39;Microsoft XML, v3.0&#39;.IXMLDOMDocument2&quot;;VAR XMLNodeList : Automation &quot;&#39;Microsoft XML, v3.0&#39;.IXML;VAR ElementName:Text&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;XMLNodeList := XMLDocument.getElementsByTagName(ElementName);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Funcion LoadNodelist&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;XMLNodeList : Automation &quot;&#39;Microsoft XML, v3.0&#39;.IXMLDOMNodeList&quot;;VAR XMLNode : Automation &quot;&#39;Microsoft XML, v3.0&#39;.IXMLDOMNode&quot;;VAR RecordIndex:Integer&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;XMLNode := XMLNodeList.item(RecordIndex);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez creadas estas funciones que nos van a ayudar a reconocer los elementos del xml vamos con el cuerpo del código. Se ha hecho un aplicación que lea nodos hasta un máximo de dos niveles de jerarquía. Si existiesen más niveles unicamente sería necesario ir añadiendo código siguiendo el mismo criterio que el primero de los hijos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Código&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;XMLDocument.load(&#39;C:\NewPolizaInstance.xml&#39;);&lt;/span&gt;      //se carga el fichero&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;LoadNodeList(XMLDocument,XMLNodeList,&#39;newPolizaInstanceResponse&#39;);&lt;/span&gt;//se cargan los nodos a partir del descrito&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;TotNumbOfRecsA := XMLNodeList.length;&lt;/span&gt;  //se sacan el numero de nodos&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;LoadNode(XMLNodeList,XMLNode,0);&lt;/span&gt;  //se cargan los nodos de la lista que hemos sacado                                                                                &lt;br /&gt;&lt;i&gt;I&lt;/i&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;F TotNumbOfRecsA &amp;gt; 0 THEN  REPEAT   &lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;//aquí empezamos a recorrer los hijos que cuelgan del metodo buscado&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;XMLNodeList2 :=XMLNode.childNodes;&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;LoadNode(XMLNodeList2,XMLNodeBucle,0);&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;//cargamos los nodos hijos&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;IF XMLNodeBucle.hasChildNodes THEN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;FOR vConta:=0 TO XMLNodeList2.length DO BEGIN   &lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;//si cada nodo hijo tiene hijos se recorre&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;//comprobar que tiene hijos el nodo&lt;br /&gt;&lt;br /&gt;  &lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;XMLNodeList3:=XMLNodeBucle.childNodes;   &lt;/span&gt; &lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;//aquí el tercer nivel de jerarquia&lt;br /&gt; &lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;LoadNode(XMLNodeList3,XMLNodeBucle2,0);&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;IF XMLNodeBucle2.hasChildNodes THEN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;   &lt;/span&gt;FOR vConta2:=0 TO XMLNodeList3.length DO BEGIN&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;   &lt;/span&gt;IF UPPERCASE(XMLNodeBucle2.nodeName) = &#39;PR&#39; THEN&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;   &lt;/span&gt;//con esto se opera para un nodo en concreto, en este caso&lt;br /&gt;      &lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;   &lt;/span&gt;XMLNodeComprobar :=XMLNodeBucle2.childNodes.item(0);   &lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;   &lt;/span&gt;// se introduce la información en una tabla en caso de que&lt;br /&gt;      &lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;    &lt;/span&gt;IF NOT ISCLEAR(XMLNodeComprobar) THEN  &lt;/span&gt;                         &lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;    &lt;/span&gt;// el nodo se llame programa&lt;br /&gt;        &lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;     &lt;/span&gt;rLecturaXml.text1:=XMLNodeComprobar.text;&lt;/span&gt;&lt;br /&gt;  &lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;    &lt;/span&gt;END;&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;   &lt;/span&gt;XMLNodeBucle := XMLNodeList2.nextNode;&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;END;&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;XMLNode := XMLNodeList.nextNode;&lt;br /&gt;UNTIL ISCLEAR(XMLNode);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/7371798557086541147/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2011/06/recorrer-xml-en-navision.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/7371798557086541147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/7371798557086541147'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2011/06/recorrer-xml-en-navision.html' title='Recorrer Xml en Navision'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-7816989242399407447</id><published>2011-05-31T07:53:00.000-07:00</published><updated>2011-05-31T08:33:00.725-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".net"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="metodos"/><category scheme="http://www.blogger.com/atom/ns#" term="navision"/><category scheme="http://www.blogger.com/atom/ns#" term="publicar"/><title type='text'>Métodos C# visibles en navision</title><content type='html'>Para crear métodos de C# que resulten visibles desde navision, es necesario tener un espacio de nombres System.Runtime.InteropServices que proporcione una variedad de miembros que admiten la interoperabilidad COM .&lt;br /&gt;&lt;br /&gt;Lo primero que vamos a hacer es crear un nuevo proyecto que en este caso va a ser una biblioteca de clases, que es la que luego al generar la aplicación nos crea el fichero dll del que vamos a obtener la funcionalidad para utilizarla desde navision (la dll se encuentra en la ruta del proyecto/bin/release).&lt;br /&gt;&lt;br /&gt;Una vez hecho esto vamos a configurar nuestra aplicación en visual studio para que admita la interoperabilidad con COM, para ello tendremos que cambiar las propiedades del proyecto en &quot;Proyecto--&gt; Propiedades de...NombreProyecto&quot;&lt;br /&gt;&lt;br /&gt;pulsamos en el botón &quot;&lt;span style=&quot;font-style:italic;&quot;&gt;Información de ensamblado&lt;/span&gt;&quot; y en el cuadro de diálogo que nos aparece &quot;Información de ensamblado&quot; validamos el tick &quot;&lt;span style=&quot;font-style:italic;&quot;&gt;Crear ensamblado visible a través de COM&lt;/span&gt;&quot; a true.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiobzkTr8N8CaRYe_qCyMJHRlvg7AH3-shKy_DQomizquE6QIl43BZcZ3HzyZNjU_Bim5YPchpb4fMgWrLKVeiVLKEfYagXPzTgihTD_Vow0WB0e8n0kifLId6bU0F5_Q0MdFFn2Wjsydw/s1600/Propiedades+proyecto.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 320px; height: 226px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiobzkTr8N8CaRYe_qCyMJHRlvg7AH3-shKy_DQomizquE6QIl43BZcZ3HzyZNjU_Bim5YPchpb4fMgWrLKVeiVLKEfYagXPzTgihTD_Vow0WB0e8n0kifLId6bU0F5_Q0MdFFn2Wjsydw/s320/Propiedades+proyecto.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5612897695113560978&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Una vez hecho vamos a la pestaña &quot;Generar&quot; y al igual que antes seleccionamos el tick de &quot;Registrar para interoperabilidad COM&quot; a true.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9QOb9OlYg15WTDSI_OqLj9EVkgM6QSP3bvdaAWz5fq7E8bxjB3dyc-sCFjsHrPoEWBS0avaIKoiLoELygyROs6HWMg15qAbFReYU7pSli5ssam9lTCm05VSTl34i4C_ve5Vtyudph_18/s1600/General.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 320px; height: 221px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9QOb9OlYg15WTDSI_OqLj9EVkgM6QSP3bvdaAWz5fq7E8bxjB3dyc-sCFjsHrPoEWBS0avaIKoiLoELygyROs6HWMg15qAbFReYU7pSli5ssam9lTCm05VSTl34i4C_ve5Vtyudph_18/s320/General.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5612897347925183874&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ya en el código de la aplicación es necesario añadir el espacio de nombres System.Runtime.InteropServices &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;using System.Runtime.InteropServices;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;luego dentro de la clase que vamos a crear la estructura describimos como va a ser la interface&lt;br /&gt;&lt;br /&gt; &lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSGf2BMgncVqtIP4ccL2CAJQ_Gt9Y2_4D_iAtMxtwbf8lolH_1tKBRRVab_xAc_k_kokHxTaZ-pfPkqWFJAu6ce0vwAwNBKlPj4VhnKA7GTVAGNYhC7j34U-yyDElIc_p28Zv3zPYnIqA/s1600/bloque+codigo1.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 320px; height: 86px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSGf2BMgncVqtIP4ccL2CAJQ_Gt9Y2_4D_iAtMxtwbf8lolH_1tKBRRVab_xAc_k_kokHxTaZ-pfPkqWFJAu6ce0vwAwNBKlPj4VhnKA7GTVAGNYhC7j34U-yyDElIc_p28Zv3zPYnIqA/s320/bloque+codigo1.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5612899674965420178&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;y luego creamos el método para operar que se tiene que declarar y llamar igual que el método de la interface, la clase que se crea tiene que ser heredada de la clase de la interface.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVSyRLMwuj5E53P3xEpQbjtFw81Qt7mRDZdl6v5qm0ePIk-EYZUttPF9MCGMN59BwRdwaN11sxzMM9yBCaGkab5zwE8dkivwsB_iXT-ov0UuidjFsNSXCK6ZA5WKqcAVtrPn_Zg8pN14A/s1600/bloque+codigo2.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 320px; height: 159px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVSyRLMwuj5E53P3xEpQbjtFw81Qt7mRDZdl6v5qm0ePIk-EYZUttPF9MCGMN59BwRdwaN11sxzMM9yBCaGkab5zwE8dkivwsB_iXT-ov0UuidjFsNSXCK6ZA5WKqcAVtrPn_Zg8pN14A/s320/bloque+codigo2.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5612900206018820578&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;una vez hecho esto, ya podríamos crear una variable automation en navision haciendo referencia a esta dll.</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/7816989242399407447/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2011/05/metodos-c-visibles-en-navision.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/7816989242399407447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/7816989242399407447'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2011/05/metodos-c-visibles-en-navision.html' title='Métodos C# visibles en navision'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiobzkTr8N8CaRYe_qCyMJHRlvg7AH3-shKy_DQomizquE6QIl43BZcZ3HzyZNjU_Bim5YPchpb4fMgWrLKVeiVLKEfYagXPzTgihTD_Vow0WB0e8n0kifLId6bU0F5_Q0MdFFn2Wjsydw/s72-c/Propiedades+proyecto.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-8375026192441200312</id><published>2011-05-18T02:25:00.000-07:00</published><updated>2015-11-26T04:20:50.597-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="navision"/><category scheme="http://www.blogger.com/atom/ns#" term="Servicio web"/><category scheme="http://www.blogger.com/atom/ns#" term="Soap"/><category scheme="http://www.blogger.com/atom/ns#" term="web service"/><title type='text'>Consumir Web Service / Servicio Web SOAP</title><content type='html'>Lo que vamos a hacer es realizar una conexión desde Navision a un servicio web de tipo soap.en princpio con este método se deberia de poder llamar a una función con parámetros pero a veces suele ocasionar problemas.&lt;br /&gt;
&lt;br /&gt;
Creamos las siguientes variables de tipo automation. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;locautSoapHttpConnector&lt;/span&gt;&lt;br /&gt;
Automation &#39;Microsoft Soap Type Library v3.0&#39;.HttpConnector30 &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;locautSoapSerializer&lt;/span&gt; &lt;br /&gt;
Automation &#39;Microsoft Soap Type Library v3.0&#39;.SoapSerializer30 &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;locautXmlDoc&lt;/span&gt;  Automation &#39;Microsoft XML, v6.0&#39;.DOMDocument &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IF ISCLEAR(LocautSoapHttpConnector) THEN&lt;br /&gt;
CREATE(LocautSoapHttpConnector);&lt;br /&gt;
&lt;br /&gt;
LocautSoapHttpConnector.Property(&#39;ProxyServer&#39;,&#39;isaserver&#39;);&lt;br /&gt;
LocautSoapHttpConnector.Property(&#39;ProxyPassword&#39;,&#39;proxypass&#39;);&lt;br /&gt;
LocautSoapHttpConnector.Property(&#39;ProxyUser&#39;,&#39;username&#39;);&lt;br /&gt;
&lt;br /&gt;
LocautSoapHttpConnector.Property(&#39;EndPointURL&#39;,&#39;&lt;span class=&quot;str&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://servername:7047/DynamicsNAV/ws/coduenit/%27&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;str&quot;&gt;http://servername:7047/DynamicsNAV/ws/coduenit/&lt;/span&gt;&lt;/a&gt;&#39;);&lt;br /&gt;
LocautSoapHttpConnector.Connect;&lt;br /&gt;
LocautSoapHttpConnector.Property(&#39;SoapAction&#39;,&#39;&lt;span class=&quot;str&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://servername:7047/DynamicsNAV/ws/coduenit/thefunction%27&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;str&quot;&gt;http://servername:7047/DynamicsNAV/ws/coduenit/thefunction&lt;/span&gt;&lt;/a&gt;&#39;);&lt;br /&gt;
LocautSoapHttpConnector.BeginMessage;&lt;br /&gt;
&lt;br /&gt;
CREATE(LocautSoapSerialize);&lt;br /&gt;
LocautSoapSerialize.Init(LocautSoapHttpConnector.InputStream);&lt;br /&gt;
&lt;br /&gt;
LocautSoapSerialize.StartEnvelope(&#39;&lt;span class=&quot;str&quot;&gt;SOAP&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;STANDARD&#39;&lt;/span&gt;);&lt;br /&gt;
LocautSoapSerialize.StartBody;&lt;br /&gt;
LocautSoapSerialize.StartElement(Elemento o nodo);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;LocautSoapSerialize.StartElement(&#39;Elemento hijo&#39;);&lt;br /&gt;
&amp;nbsp;LocautSoapSerialize.WriteString(&#39;Parametro valido&#39;);&lt;br /&gt;
&amp;nbsp;LocautSoapSerialize.EndElement;&lt;br /&gt;
&lt;br /&gt;
LocautSoapSerialize.EndElement;&lt;br /&gt;
LocautSoapSerialize.EndBody;&lt;br /&gt;
LocautSoapSerialize.EndEnvelope;&lt;br /&gt;
&lt;br /&gt;
LocautSoapHttpConnector.EndMessage;&lt;br /&gt;
&lt;br /&gt;
IF ISCLEAR(XMLDOM) THEN&lt;br /&gt;
CREATE(XMLDOM);&lt;br /&gt;
//Cargar la respuesta del servicio web esta es un fichero xml&lt;br /&gt;
XMLDOM.load(LocautSoapHttpConnector.OutputStream);&lt;br /&gt;
XMLNode := XMLDOM.selectSingleNode(&#39;//valid&#39;);</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/8375026192441200312/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2011/05/consumir-web-service-servicio-web-soap.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/8375026192441200312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/8375026192441200312'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2011/05/consumir-web-service-servicio-web-soap.html' title='Consumir Web Service / Servicio Web SOAP'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-2225391075379570077</id><published>2011-05-11T02:43:00.000-07:00</published><updated>2011-11-28T08:35:37.766-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Excel"/><category scheme="http://www.blogger.com/atom/ns#" term="exportar"/><category scheme="http://www.blogger.com/atom/ns#" term="importar"/><category scheme="http://www.blogger.com/atom/ns#" term="navision"/><title type='text'>Excel Buffer</title><content type='html'>El Excel buffer es una tabla del estándar de Navision que se emplea para importar o exportar datos de una hoja excell. Lo que vamos a hacer es una especificación bastante básica de esta tabla y como se puede importar o exportar información. El único problema que tiene y me parece un poco grave es la concurrencia de diferentes usuarios a la vez .&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Campos tabla&lt;/strong&gt;&lt;br /&gt;
Para mí los principales campos de las tablas son: &lt;br /&gt;
&lt;br /&gt;
Row No. Integer &lt;br /&gt;
xlRowID Text 10&lt;br /&gt;
Column No. Integer &lt;br /&gt;
xlColID Text 10 &lt;br /&gt;
Cell Value as Text Text 250&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;“Row no.”&lt;/strong&gt; es el campo donde se especifica la línea del Excel que vamos a procesar y en su on validate tiene código que actualiza el xlRowID que es la referencia que se utiliza en el excell.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;“Column No.”&lt;/strong&gt; Funciona exactamente igual que el Row no. Lo único que en su campo xLColID escribe la letra de la columna en vez del número de la misma.&lt;br /&gt;
“Cell Value as text” es el campo donde se guarda el contenido de la celda que queremos tratar y se guarda siempre como text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Principales funciones&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;CreateBook:&lt;/strong&gt; Crea un nuevo libro Excel y usa como parámetro ruta y nombre del fichero y nombre para la hoja que compone el documento.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;OpenBook: &lt;/strong&gt;Abre un documento de Excel y como parámetro se le introduce el documento Excel y la hoja que queremos abrir. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;ReadSheet:&lt;/strong&gt; lee las hojas que contiene el documento Excel y devuelve como parámetro el nombre de las mismas, se puede utilizar como parámetro de la función “ OpenBook”. Introduce direcatamente los registros leídos en la tabla ExcelBuffer.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;CreateSheet:&lt;/strong&gt; Crea la hoja del documento Excel y al igual que la “ReadSheet” se puede utilizar como parámetro de la función “CreateBook”.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;SelectSheetsName: &lt;/strong&gt;Saca una ventana de diálogo con cada una de las hojas que componen el libro Excel y asi seleccionar cual se quiere leer.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Para importar&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a importar a una tabla de Navision la información de una hoja de Excel. En la tabla solo volcaremos la información que nos interese de esa tabla.&lt;br /&gt;
Lo primero que hay que hacer es volcar los datos a la tabla Excel buffer y de ahí leer esos datos y pasarlos a la tabla que nos interese. Una vez bloqueada la tabla Excel buffer ya podemos trabajar con ella.&lt;br /&gt;
&lt;br /&gt;
CLEAR(rExcelBuffer);&lt;br /&gt;
rExcelBuffer.OpenBook(“rutafichero”,rExcelBuffer.SelectSheetsName(rutafichero));&lt;br /&gt;
rExcelBuffer.ReadSheet();&lt;br /&gt;
&lt;br /&gt;
Una vez que lo tenemos importado todos los datos en la tabla Excel buffer vamos a leerlos y utilizar los que nos interesen para volcarlos en nuestra tabla.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;//sacamos el último nº de fila y columna para determinar hasta donde tenemos que leer, en este caso hemos puesto todo lo que hay volcado. &lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
IF rExcelBuffer.FINDLAST THEN BEGIN&lt;br /&gt;
vUltimaFila:=rExcelBuffer.&quot;Row No.&quot;;&lt;br /&gt;
vUltimaCol:=rExcelBuffer.&quot;Column No.&quot;;&lt;br /&gt;
END;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;//Recorremos los registros desde donde nos interese hasta el final que hemos determinado anteriormente y en función de la columna que sea sabemos que es un campo u otro y lo asignamos a una variable que luego utilizaremos para cargar la tabla&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
FOR vIndice := 3 TO vUltimaFila DO BEGIN&lt;br /&gt;
rExcelBuffer.SETRANGE(&quot;Row No.&quot;,vIndice);&lt;br /&gt;
IF rExcelBuffer.FINDFIRST THEN REPEAT&lt;br /&gt;
CASE rExcelBuffer.&quot;Column No.&quot; OF&lt;br /&gt;
2:vNtraking:=DELCHR(rExcelBuffer.&quot;Cell Value as Text&quot;,&#39;=&#39;,&#39;.&#39;);&lt;br /&gt;
&lt;br /&gt;
rTabla.init;&lt;br /&gt;
rTabla.”Numero traking” := vNtraking;&lt;br /&gt;
rTabla.Insert;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;//por úlitmo se cierra el bucle y elminamos los registros ya leidos y procesados&lt;/em&gt;&lt;br /&gt;
END; &lt;br /&gt;
CLEAR(rExcelBuffer);&lt;br /&gt;
rExcelBuffer.DELETEALL;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Para Exportar&lt;/strong&gt;&lt;br /&gt;
Al igual que en la exportación lo primero es meter en la tabla excell buffer lo uqe nos interesa para luego exportarlo.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;//lo que hacemos es recorrer una tabla de dos campos únicamente e insertar un registro por columna la primera sería 1,1 la segunda 1,2 la siguiente 2,1…N,2, con el bucle for le dicemiso que inserte una línea por columna y fuera actualiza el numero de línea&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
rExcel.DELETEALL;&lt;br /&gt;
vFila:=1;&lt;br /&gt;
IF FINDSET THEN REPEAT&lt;br /&gt;
rExcel.INIT;&lt;br /&gt;
rExcel.VALIDATE(&quot;Row No.&quot;,vFila); &lt;br /&gt;
FOR vIndex :=1 TO 2 DO BEGIN&lt;br /&gt;
rExcel.VALIDATE(&quot;Column No.&quot;,vIndex);&lt;br /&gt;
IF vIndex = 1 THEN&lt;br /&gt;
rExcel.&quot;Cell Value as Text&quot;:=FORMAT(&quot;Server Name&quot;);&lt;br /&gt;
IF vIndex = 2 THEN&lt;br /&gt;
rExcel.&quot;Cell Value as Text&quot;:=FORMAT(&quot;My Server&quot;);&lt;br /&gt;
IF rExcel.INSERT THEN;&lt;br /&gt;
END;&lt;br /&gt;
vFila+=1;&lt;br /&gt;
UNTIL NEXT = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;//Para mostrar esto en un Excel abrimos un libro creado y creamos la hoja y finalmente mostramos el documento abierto&lt;/em&gt; &lt;br /&gt;
&lt;br /&gt;
rExcel.OpenBook(&#39;c:\a.xls&#39;,rExcel.SelectSheetsName(&#39;c:\a.xls&#39;));&lt;br /&gt;
rExcel.CreateSheet(&#39;Hoja1&#39;,&#39;Hoja1&#39;,COMPANYNAME,USERID);&lt;br /&gt;
rExcel.GiveUserControl();&lt;br /&gt;
o también&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
rExcelB.CreateBook;&lt;br /&gt;
rExcelB.CreateSheet(&#39;NombreHoja&#39;,&#39;PurchDocs&#39;,COMPANYNAME(),USERID());&lt;br /&gt;
rExcelB.GiveUserControl();</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/2225391075379570077/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2011/05/excel-buffer.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/2225391075379570077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/2225391075379570077'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2011/05/excel-buffer.html' title='Excel Buffer'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-4236504867927103051</id><published>2011-04-15T03:12:00.000-07:00</published><updated>2011-07-07T04:10:30.215-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="capas"/><category scheme="http://www.blogger.com/atom/ns#" term="Servicio web"/><category scheme="http://www.blogger.com/atom/ns#" term="servicios"/><category scheme="http://www.blogger.com/atom/ns#" term="web service"/><title type='text'>Varios Servicios Web en un unico Servidor</title><content type='html'>Se deben de crear tantas instancias del servicio como bases de datos queremos atacar desde el web services. Para poder configurarlo de esta manera es necesario que la capa donde se encuentra instalado el servicio web y sus instancias sea la intermedia. &lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Creando un segundo servicio &lt;/strong&gt;Lo primero que hay que hacer es parar los servicios instalados y hacer una copia de la carpeta Servicios que se encuentra dentro del directorio de instalación del web services de Navision: C:\Program Files (x86)\Microsoft Dynamics NAV\60\Services Y poner como nombre de la carpeta Server2 o lo que queramos. Para esto haremos lo siguiente: &lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Ir a “herramientas administrativas” y elegir servicios &lt;/li&gt;
&lt;li&gt;Seleccionar “Microsoft Dynamics NAV Server” y darle STOP &lt;/li&gt;
&lt;li&gt;Como ya hemos creado la copia de la carpeta services y la hemos llamado Services2 ahora hay que crear la instancia que hace referencia al servicio de la carpeta Services2. &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Primero crearemos el Microsoft Dynamics Nav Server y luego el Microsoft Dynamics Nav Web Server ya que se necesitan un par de servicios por nueva base de datos un servicio web y un servicio Navision server. Para ello en la consola de comandos hay que poner lo siguiente: &lt;br /&gt;
&lt;br /&gt;
sc \\&lt;nombreservicio&gt; &quot;servidor&quot; create &quot;nombre servicio&quot; &lt;instancia&gt;binpath= &quot;ruta servicio&quot; &lt;ruta&gt;DisplayName= &quot;nombre a mostar&quot;&lt;nombre&gt;start= &quot;tipo arranque&quot; &lt;modo&gt;type=&quot;own, shared&quot;&lt;/modo&gt;&lt;/nombre&gt;&lt;/ruta&gt;&lt;/instancia&gt;&lt;/nombreservicio&gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro caso será de la siguiente manera: &lt;br /&gt;
&lt;br /&gt;
sc \\Webservices03 create MicrosoftDynamicsNAVServer$NAV2 binpath= &quot;C:\Program Files\Microsoft Dynamics NAV\60\Service2\Microsoft.Dynamics.Nav.Server.exe $NAV2&quot; DisplayName= &quot;Microsoft Dynamics NAV Server Instance 2&quot; start= auto type= own &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;MicrosoftDynamicsNAV$NAV2&lt;/strong&gt; es para decir que va a ser una nueva instancia del mismo tipo de servicio y es necesaria en el nombre de servicio como al crear la nueva instancia. En el parámetro Type hay que poner Own &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;MicrosoftDynamicsNAVWS$NAV2&lt;/strong&gt; es una instancia del servicio para que cree el servicio web y así tener el par de servidores que necesitamos. La sintaxis para crear este servicio es la misma que para el anterior lo único es que&amp;nbsp;&lt;instancia&gt;&amp;nbsp;&lt;nombre&gt;hay que poner en el nombre WS al final, justo antes del $, en el parámetro Type hay que poner Share&lt;br /&gt;
&lt;/nombre&gt;&lt;/instancia&gt;&lt;br /&gt;
Una vez hecho esto hay que cerrar y abrir la ventana de los servicios para que aparezcan los nuevos servicios que hemos creado en este caso serian: &lt;br /&gt;
&lt;br /&gt;
- Microsoft.Dynamics.Nav.Server.exe &lt;br /&gt;
&lt;br /&gt;
- Microsoft.Dynamics.Nav.web.Server.exe &lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Configurando los servicios creados &lt;/strong&gt;&lt;br /&gt;
Una vez abierta la ventana con el listado de los servicios, vamos uno de los servicios y en las propiedades en la pestaña &lt;strong&gt;LogOn&lt;/strong&gt; escoger la opción &lt;strong&gt;this account&lt;/strong&gt;, poner webservices@atspain, sus contraseñas y guardar. No hay que arrancar porque daría error ya que los dos MicrosoftDynamicsNavServer están tirando del mismo puerto 7046 y hay que cambiarlo junto con la instancia del servicio en el fichero &lt;strong&gt;CustomconfigSetting.config &lt;/strong&gt;de la carpeta Service2. Para el servicio MicrosoftDynamicsNavWebServer no es necesario cambiar el puerto y siempre tiraremos del 7047. En el fichero &lt;strong&gt;CustomconfigSetting.config&lt;/strong&gt; cambiaremos las siguientes opciones: &lt;br /&gt;
&lt;br /&gt;
Add key=&quot;DatabaseServer&quot; value=&quot;Servidor de la nueva base de datos&quot; &lt;br /&gt;
&lt;br /&gt;
Add key=&quot;DatabaseName&quot; value=&quot;Nombre de la nueva base de datos&quot; &lt;br /&gt;
&lt;br /&gt;
Add key =”ServerInstance” value =”DynamicsNav2” &lt;br /&gt;
&lt;br /&gt;
Add key=&quot;ServerPort&quot; value=&quot;7049&quot; &lt;br /&gt;
&lt;br /&gt;
Add key=&quot;WebServicePort&quot; value=&quot;7047&quot; &lt;br /&gt;
&lt;br /&gt;
&lt;add key=&quot;DatabaseServer&quot; value=&quot;Servidor de la nueva base de datos&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;add key=&quot;DatabaseName&quot; value=&quot;Nombre de la nueva base de datos&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;add key=&quot;”ServerInstance”&quot; value=&quot;”DynamicsNav2”&quot;&gt;&lt;br /&gt;
En este caso la url sería:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://webservices03.dominio:7047/DynamicsNAV2/ws/Services&quot;&gt;http://webservices03.dominio:7047/DynamicsNAV2/ws/Services&lt;/a&gt; &lt;/add&gt;&lt;/add&gt;&lt;/add&gt;&lt;br /&gt;
&lt;strong&gt;Problemas comunes. &lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Error: The Microsoft Dynamics NAV Business Web Services service on Local Computer started and then stopped. Solucion: suele ocurrir cuando intentamos arrancar dos servicios que tiran contra el mismo Puerto en este caso y por configuración estándar el 7046, cambiar puerto y listo. &lt;br /&gt;
Error: Cuando en el explorador nos aparece lo siguiente Solución: Es un problema de acceso a la base de datos, el servicio funciona bien pero no tiene permisos de entrada a la base de datos, hay que comprobar que en la base de datos del usuario esté creado el usuario que utilizamos para conectarnos en este caso webservices y que la licencia tenga activado el granulo 91000</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/4236504867927103051/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2011/04/varios-servicios-web-en-un-unico.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/4236504867927103051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/4236504867927103051'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2011/04/varios-servicios-web-en-un-unico.html' title='Varios Servicios Web en un unico Servidor'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516517714633079399.post-5117468109620129769</id><published>2011-04-14T13:39:00.000-07:00</published><updated>2011-06-02T04:13:50.893-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="capas"/><category scheme="http://www.blogger.com/atom/ns#" term="Servicio web"/><category scheme="http://www.blogger.com/atom/ns#" term="servicios"/><category scheme="http://www.blogger.com/atom/ns#" term="web service"/><title type='text'>Creación de servicios web en tres capas diferentes</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx7DTRo40dDrd2bL-wKmYvWJ5zTRyPmNCuDZHvhFPc-XbHF0kYwRE1r-ibPnVe8CxpyEdsdjpiw7D35YbTaw_f-CqEw3IfF6owaUcrFVP6Z5jiGN-sRJd-F74v3wWxkHf-fAOKvqOBImA/s1600/clip_image002.png&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5595718397178900738&quot; style=&quot;DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 146px; TEXT-ALIGN: center&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx7DTRo40dDrd2bL-wKmYvWJ5zTRyPmNCuDZHvhFPc-XbHF0kYwRE1r-ibPnVe8CxpyEdsdjpiw7D35YbTaw_f-CqEw3IfF6owaUcrFVP6Z5jiGN-sRJd-F74v3wWxkHf-fAOKvqOBImA/s320/clip_image002.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;El escenario que vamos a crear y configurar consta de tres capas diferenciadas en tres máquinas diferentes. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;1&lt;/strong&gt; &lt;strong&gt;Escenario &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;WEBSERVICES03.ATSPAIN; Windows Server 2008 R2 Standard, están instalados los servicios web. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;SERVSQL; Windows Server 2008 R2 Standard, es donde está instalada la base de datos &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Clientes de Navision. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;2&lt;/strong&gt; &lt;strong&gt;Creación y configuración de los servicios Web&lt;/strong&gt; Crear una cuenta de usuario de dominio tanto para lanzar los servicios y que tenga privilegios de administrador, en este caso usuario “webservices”. No hay problema si el usuario que arranca los servicios web y los servicios de Sql son diferentes, lo importante son los privilegios de administrador. Después de crear la cuenta de usuario de dominio se debería de verificar si el nivel funcional de dominio es de al menos Windows Server 2003. Para ello en el servidor SERVSQL hacer “Ejecutar” y escribir dsa.msc, hacer clic con el botón derecho sobre el dominio donde esté instalado el cliente Navision y elegir la opción “Raise Domain Functional Level”. Instalar los servicios web de Navision en un equipo destinado para ello, en este caso lo instalaremos en el servidor “webservices03”. Para esto arrancar el DVD de Navision y en la opción de instalar componentes seleccionar Server, darle aplicar y dejar instalar. &lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;2.a configuración Servicios web&lt;/strong&gt; Para configurar los servicios web es necesario ir a los servicios (herramientas admin.--&amp;gt;Servicios).Los dos servicios web de Navision son: - Microsoft Dynamics Nav Business Web Services - Microsoft Dynamics Nav Server En las propiedades de cada uno de estos dos servicios es necesario cambiar el usuario de logueo (pestaña LogOn opción this account)por el usuario que hemos creado anteriormente (webservices). &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;2.b Fichero configuración de servicios web&lt;/strong&gt; Los parámetros del servicio Web se configuran en el fichero “CustomSettings” dentro de la carpeta C:\Program Files (x86)\Microsoft Dynamics NAV\60\Service del servidor donde están los web services instalados (Webservices03). Los parámetros más importante a modificar son : - &lt;add value=&quot;ATESPDESA1\DESA&quot; key=&quot;DatabaseServer&quot;&gt;&lt;/add&gt;(se indica el servidor de base de datos) - &lt;add value=&quot;DESA&quot; key=&quot;DatabaseName&quot;&gt;&lt;/add&gt;(nombre de la base de datos sobre la que consumen los web service) - &lt;add value=&quot;DynamicsNAV&quot; key=&quot;ServerInstance&quot;&gt;&lt;/add&gt;(nombre de la instancia del Navision Nav Server, es decir para identificar ese servicio en concreto, por defecto es DynamicsNAV no hace falta cambiarla pero se puede cambiar por ejemplo si hay más servicios instalados y así poder identificarlos) Una vez modificados estos parámetros se arrancan los servicios web. Se recomienda arrancar primero “Microsoft Dynamics Nav Server” y luego “Microsoft Dynamics Nav Business Web Service”. &lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;3 Activar el Object Change Listener (OCL)&lt;/strong&gt; Monitoriza los cambios de objectos que se producen en la base de datos (Pej. creación de campos en las Pages ), sin esto activado no se pueden conectar los clientes con el servidor. Para poder inicializarlo el servidor de Navision debe tener permisos para la base de datos de Sql. Activar y asignar permisos minimos para el OCL: - Abrir el SQL management studio y luego file --&amp;gt; new--&amp;gt;Query with current connection y escribir las siguientes consultas. Por cada una hay que ejecutar.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;USE MASTER CREATE LOGIN [ReplaceWithNAVServerAccount] FROM WINDOWS; GO USE [ReplaceWithYourDatabaseName] &lt;/li&gt;&lt;br /&gt;&lt;li&gt;CREATE USER [ReplaceWithNAVServerAccount] FOR LOGIN [ReplaceWithNAVServerAccount]; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;CREATE SCHEMA [$ndo$navlistener] AUTHORIZATION [ReplaceWithNAVServerAccount]; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;GO ALTER USER [ReplaceWithNAVServerAccount] WITH DEFAULT_SCHEMA = [$ndo$navlistener]; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;GRANT SELECT ON [Object Tracking] TO [ReplaceWithNAVServerAccount]; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;4 Dar permisos de cuenta de usuario de dominio al directorio del servidor &lt;/strong&gt;Es necesario darle al directorio del servidor del de “Microsoft dynamics nav server” del equipo donde están los servicios instalados (webservices03) todos los permisos del usuario de cuenta de dominio. - Ir a la carpeta : ProgramData\Microsoft\Microsoft Dynamics NAV\60\ - Propiedades y pestaña “Seguridad” - Seleccionar el usuario de cuenta de dominio y en los permisos poner Allow junto al permiso”Control Total”. - Seleccionar la cuenta “NETWORK SERVICE” y hacer como el usuario Allow junto al permiso de “Control Total” 5 Configuración de la delegación de usuarios Creando los SPN (Service Principal Names ): Hay que crear cuatro spn para el usuario webservices la sintaxis es la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Setspn –a HTTP/WEBSERVICES03 webservices &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Setspn –a HTTP/WEBSERVICES03.dominio webservices &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Setspn –a DynamicsNAV/webservices03:7046 webservices &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Setspn –a DynamicsNAV/webservices03.dominio:7046 webservices&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Para comprobar que se han creado bien hay que ver el listado:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Setspn –l webservices&lt;/li&gt;&lt;br /&gt;&lt;li&gt;HTTP/WEBSERVICES03 &lt;/li&gt;&lt;br /&gt;&lt;li&gt;HTTP/WEBSERVICES03.dominio &lt;/li&gt;&lt;br /&gt;&lt;li&gt;DynamicsNAV/webservices03:7046 &lt;/li&gt;&lt;br /&gt;&lt;li&gt;DynamicsNAV/webservices03.ATSPAIN:7046 &lt;/li&gt;&lt;/ul&gt;Delegación de acceso a los servicios Sql En el servidor de sql se realiza la delegación de usuarios: - En ejecutar escribir dsa.msc - Elegir buscar en el dominio donde está creado el usuario - Poner webservices y seleccionar resultado de la búsqueda - En la pestaña Delegation poner la opción 2 : o Trust this user for delegation to any service (Kerberos Only). - Aceptar. Comprobar si se puede hacer ping al servidor donde se encuentran los webservices desde el servidor de sql.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://mundonavision.blogspot.com/feeds/5117468109620129769/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://mundonavision.blogspot.com/2011/04/creacion-de-servicios-web-en-tres-capas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/5117468109620129769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516517714633079399/posts/default/5117468109620129769'/><link rel='alternate' type='text/html' href='http://mundonavision.blogspot.com/2011/04/creacion-de-servicios-web-en-tres-capas.html' title='Creación de servicios web en tres capas diferentes'/><author><name>Developer</name><uri>http://www.blogger.com/profile/12904497277493571912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfoGZnXlH_xieHpsV3N9QMiNnT9qr9LWv2w46TlTEKbXl8phZq9uKiQ_ErpQ4sKLKpPb3jKGjMnt2gY5O309hYZdDVdynMwzkRqL0LDzr1yFhRS77K8hDKySyJwPje/s220/IMG_3419.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx7DTRo40dDrd2bL-wKmYvWJ5zTRyPmNCuDZHvhFPc-XbHF0kYwRE1r-ibPnVe8CxpyEdsdjpiw7D35YbTaw_f-CqEw3IfF6owaUcrFVP6Z5jiGN-sRJd-F74v3wWxkHf-fAOKvqOBImA/s72-c/clip_image002.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>