<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Blog de P@blo - Sharepoint Server</title><subtitle type="html" /><id>http://msmvps.com/blogs/tech-steps/atom.aspx</id><link rel="alternate" type="text/html" href="http://msmvps.com/blogs/tech-steps/default.aspx" /><link rel="self" type="application/atom+xml" href="http://msmvps.com/blogs/tech-steps/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.40407.4157">Community Server</generator><updated>2012-07-10T16:39:00Z</updated><entry><title>Ejecución de un flujo de trabajo en múltiples items de una lista de Sharepoint</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2013/01/08/ejecuci-243-n-de-un-flujo-de-trabajo-en-m-250-ltiples-items-de-una-lista-de-sharepoint.aspx" /><id>/blogs/tech-steps/archive/2013/01/08/ejecuci-243-n-de-un-flujo-de-trabajo-en-m-250-ltiples-items-de-una-lista-de-sharepoint.aspx</id><published>2013-01-08T12:54:00Z</published><updated>2013-01-08T12:54:00Z</updated><content type="html">&lt;p&gt;En mi caso particular, tuve la necesidad de ejecutar un flujo de trabajo, construido con SPD, en cerca de 2500 items de una lista de Sharepoint. Luego de navegar por varios minutos encontr&amp;eacute; el script &amp;quot;Start-OSCSPWorkflow&amp;quot; basado en powershell el mismo que permite ejecutar un workflow sobre una cantidad de items determinada. De acuerdo a las recomendaciones del sitio es importante considerar la capacidad de procesamiento del servidor de Sharepoint para ejecutar cierta cantidad de flujos de trabajo. Para mi escenario, los 2500 items consumi&amp;oacute; un total de 1.5 GB de Memoria, mientras que el procesador casi no fue impactado de forma constante.&lt;/p&gt;
&lt;p&gt;Luego de hacer una importaci&amp;oacute;n del script es importante definir como se ejecutar&amp;aacute; el mismo, por ejemplo, con el par&amp;aacute;metro -ItemID se puede colocar una lista de IDs de los items de la lista de Sharepoint que se van a ejecutar separados por comas (,).&lt;/p&gt;
&lt;p&gt;Start-OSCSPWorkFlow -SiteURL&amp;nbsp;&amp;quot;Direcci&amp;oacute;n_Sitio&amp;quot; -ListName &amp;quot;Nombre_Lista&amp;quot; -WorkflowName &amp;quot;Nombre_Workflow_SPD&amp;quot;&amp;nbsp;-ItemID 12, 33, 45 -verbose&lt;/p&gt;
&lt;p&gt;El script por defecto acepta un m&amp;aacute;ximo de 10 IDs de items de la lista. Esto lo controla con el par&amp;aacute;metro -MaxConcurrentWorkflowNumber. Si se va a ejecutar m&amp;aacute;s de 10 elementos deben colocar ejecutar el script con el par&amp;aacute;metro -MaxConcurrentWorkflowNumber y un valor superior al de los IDs enviados.&lt;/p&gt;
&lt;p&gt;Existe otra forma de ejecuci&amp;oacute;n del script y es por medio de una consulta CAML. Si el objetivo es ejecutar un workflow sobre todos los items de una lista:&lt;/p&gt;
&lt;p&gt;Start-OSCSPWorkFlow -SiteURL &amp;quot;Direcci&amp;oacute;n_Sitio&amp;quot; -ListName &amp;quot;Nombre_Lista&amp;quot; -WorkflowName &amp;quot;Nombre_Workflow_SPD&amp;quot; -Query &amp;#39;&amp;lt;FieldRef Name=&amp;quot;ID&amp;quot; /&amp;gt;&amp;#39;&amp;nbsp;-verbose -MaxConcurrentWorkflowNumber 100&lt;/p&gt;
&lt;p&gt;He colocado el valor de 100 al par&amp;aacute;metro -MaxConcurrentWorkflowNumber, por ejemplo, si la consulta CAML retorna menos de 100 elementos, caso contrario deben colocar un valor mayor.&lt;/p&gt;
&lt;p&gt;El URL de donde pueden descargarse el script es &lt;a href="http://gallery.technet.microsoft.com/office/Start-a-Workflow-on-120bffe5"&gt;http://gallery.technet.microsoft.com/office/Start-a-Workflow-on-120bffe5&lt;/a&gt;, espero sea de su utilidad.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1822298" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="SharePoint 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/SharePoint+2010/default.aspx" /></entry><entry><title>Menú de Sharepoint 2010 con imágenes/animaciones flash</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/11/14/men-250-de-sharepoint-2010-con-im-225-genes-animaciones-flash.aspx" /><id>/blogs/tech-steps/archive/2012/11/14/men-250-de-sharepoint-2010-con-im-225-genes-animaciones-flash.aspx</id><published>2012-11-14T19:16:00Z</published><updated>2012-11-14T19:16:00Z</updated><content type="html">&lt;p&gt;Me encontr&amp;eacute; con un nuevo problema al publicar una animaci&amp;oacute;n flash en un sitio de Sharepoint. Resulta que el men&amp;uacute; de Sharepoint se presenta detr&amp;aacute;s de la animaci&amp;oacute;n de flash, similar a la imagen presentada.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps/5265.flashmenusps.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps/5265.flashmenusps.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Para publicar la animaci&amp;oacute;n flash utilic&amp;eacute; un archivo HTML que hace el llamado a la animaci&amp;oacute;n flash y un webpart visor de p&amp;aacute;ginas web para llamar a la p&amp;aacute;gina HTML. El truco est&amp;aacute; en cambiar la etiqueta HTML al siguiente valor:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#ff0000;"&gt;&amp;lt;param name=&amp;quot;wmode&amp;quot; value=&amp;quot;transparent&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Espero sea de su utilidad.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1819216" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="SharePoint 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/SharePoint+2010/default.aspx" /></entry><entry><title>Sharepoint 2010 Administration - Error al iniciar el servicio ID 7000 y 7009</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/11/12/sharepoint-2010-administration-error-al-iniciar-el-servicio-id-7000-y-7009.aspx" /><id>/blogs/tech-steps/archive/2012/11/12/sharepoint-2010-administration-error-al-iniciar-el-servicio-id-7000-y-7009.aspx</id><published>2012-11-12T23:43:00Z</published><updated>2012-11-12T23:43:00Z</updated><content type="html">&lt;p&gt;Al tratar de reiniciar el servicio &amp;quot;Sharepoint 2010 Administration&amp;quot; se present&amp;oacute; el mensaje de error:&lt;/p&gt;
&lt;p&gt;&amp;quot;The service did not respond to the start or control request in a timely fashion.&amp;quot;&lt;/p&gt;
&lt;p&gt;Luego de revisar algunos posts ejecut&amp;eacute; el siguiente procedimiento:&lt;/p&gt;
&lt;p&gt;- ejecut&amp;eacute; el comando stsadm -o localupgradestatus, para determinar si era necesaria la actualizaci&amp;oacute;n de alguna base de Sharepoint. En efecto se present&amp;oacute; un mensaje indicando que la base de configuraci&amp;oacute;n requer&amp;iacute;a ser actualizada. &lt;/p&gt;
&lt;p&gt;- Trat&amp;eacute; de ejecutar el comando &amp;quot;psconfig &amp;ndash;cmd upgrade &amp;ndash;inplace b2b &amp;ndash;wait &amp;ndash;force&amp;quot; sin tener suerte.&lt;/p&gt;
&lt;p&gt;- Trat&amp;eacute; tambi&amp;eacute;n de ejecutar el comando &amp;quot;stsadm -o upgrade -forceupgrade&amp;quot;, igualmente sin tener suerte.&lt;/p&gt;
&lt;p&gt;- Ejecut&amp;eacute; manualmente el asistente de configuraci&amp;oacute;n de productos de sharepoint y el mismo culmin&amp;oacute; sin &amp;eacute;xito.&lt;/p&gt;
&lt;p&gt;- Se cre&amp;oacute; la clave de registro &amp;quot;ServicesPipeTimeout&amp;quot; de tipo DWORD en la secci&amp;oacute;n &amp;quot;HKLM\SYSTEM\CurrentControlSet\Control&amp;quot;, con el valor decimal de 60000.&lt;/p&gt;
&lt;p&gt;- Actualic&amp;eacute; la clave de registro &amp;quot;WaitToKillServiceTimeout&amp;quot; en la secci&amp;oacute;n &amp;quot;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control&amp;quot; con el valor decimal de 120000.&lt;/p&gt;
&lt;p&gt;- Reinici&amp;eacute; el servidor y ejecut&amp;eacute; nuevamente el asistente de configuraci&amp;oacute;n de productos de Sharepoint, igualmente sin suerte.&lt;/p&gt;
&lt;p&gt;- Finalmente ejecut&amp;eacute; el comando &amp;quot;psconfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures&amp;quot; y el procedimiento culmin&amp;oacute; sin problemas e inici&amp;oacute; el servicio igualmente.&lt;/p&gt;
&lt;p&gt;Espero sea de su utilidad.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1819116" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="SharePoint 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/SharePoint+2010/default.aspx" /></entry><entry><title>Sharepoint 2010 + Infopath 2010: The operation could not be completed</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/08/31/sharepoint-2010-infopath-2010-the-operation-could-not-be-completed.aspx" /><id>/blogs/tech-steps/archive/2012/08/31/sharepoint-2010-infopath-2010-the-operation-could-not-be-completed.aspx</id><published>2012-08-31T21:05:00Z</published><updated>2012-08-31T21:05:00Z</updated><content type="html">&lt;p&gt;En un formulario de Infopath, al crear una nueva conexi&amp;oacute;n de extracci&amp;oacute;n de datos, se present&amp;oacute; el siguiente mensaje de error:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/8524.Operacion.png"&gt;&lt;img height="290" width="398" src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/8524.Operacion.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En mi escenario, se cre&amp;oacute; un solo sitio de Project Web Application y un sitio secundario con una biblioteca de formularios. El mensaje de error se presenta cuando no se encuentra creada una colecci&amp;oacute;n de sitios en el sitio raiz de IIS.&lt;/p&gt;
&lt;p&gt;Para solucionar el problema ejecutar el siguiente procesimiento:&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;Utilizar la consola de Administraci&amp;oacute;n Central de Sharepoint&amp;nbsp;para crear una colecci&amp;oacute;n de sitios en el sitio raiz de IIS (Sitio Web por Defecto).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/0702.Operacion2.png"&gt;&lt;img height="157" width="655" src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/0702.Operacion2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- Crear nuevamente la conexi&amp;oacute;n de recepci&amp;oacute;n de informaci&amp;oacute;n en el formulario de Infopath.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/8463.Operacion3.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/8463.Operacion3.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Como siempre espero esta informaci&amp;oacute;n sea de su utilidad.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1815723" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="Sharepoint 2010 - Infopath 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/Sharepoint+2010+-+Infopath+2010/default.aspx" /></entry><entry><title>Sharepoint 2010: Como ampliar el tamaño de un campo de tipo "Búsqueda" (Lookup) en una lista personalizada</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/08/22/sharepoint-2010-como-ampliar-el-tama-241-o-de-un-campo-de-tipo-quot-b-250-squeda-quot-lookup-en-una-lista-personalizada.aspx" /><id>/blogs/tech-steps/archive/2012/08/22/sharepoint-2010-como-ampliar-el-tama-241-o-de-un-campo-de-tipo-quot-b-250-squeda-quot-lookup-en-una-lista-personalizada.aspx</id><published>2012-08-22T19:49:00Z</published><updated>2012-08-22T19:49:00Z</updated><content type="html">&lt;p&gt;En una lista de Sharepoint, un campo de tipo Lookup se utiliza para hacer referencia a una lista que contiene las opciones o infomaci&amp;oacute;n que requerimos. Por ejemplo, en una lista personalizada de Sharepoint puedo mantener el registro de varios documentos de la organizaci&amp;oacute;n y en otra lista tengo otro campo en el cual deseo seleccionar varios documentos relacionados. Resulta que cuando el nombre del campo que se relaciona es demasiado extenso&amp;nbsp;y adem&amp;aacute;s se van a seleccionar varios documentos, la vista del campo relacionado es similar a la siguiente figura:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/6523.Lookup1.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/6523.Lookup1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;El campo &amp;quot;Documentos Relacioados&amp;quot; se encuentra configurado de la siguiente forma:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/2500.Lookup2.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/2500.Lookup2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Para ampliar el tama&amp;ntilde;o de la columna &amp;quot;Documentos Relacionados&amp;quot;&amp;nbsp;se considera la cadena de caracteres de mayor longitud. Es necesario editar la p&amp;aacute;gina en donde se encuentre el campo de tipo &amp;quot;Lookup&amp;quot; e insertar un webpart de tipo WCE (Web Content Editor), editar el c&amp;oacute;digo HTML e ingresar el siguiente c&amp;oacute;digo:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;lt;script src=&amp;quot;/ScriptsDocumentos/jquery-1.7.2.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script src=&amp;quot;/ScriptsDocumentos/jquery.SPServices-0.7.1a.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;$(document).ready(function() { &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;$().SPServices.SPSetMultiSelectSizes({ &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;multiSelectColumn: &amp;quot;Documentos Relacionados&amp;quot; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;}); &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;}); &amp;lt;/script&amp;gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;El efecto posterior al ingreso del script es el siguiete:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/3157.Lookup4.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/3157.Lookup4.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Los&amp;nbsp;archivos: &lt;strong&gt;jquery-1.7.2.min.js &lt;/strong&gt;y&lt;strong&gt; jquery.SPServices-0.7.1a.min.js, &lt;/strong&gt;pueden descargarlo de este enlace:&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&amp;nbsp;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/2337.JScripts.zip"&gt;http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/2337.JScripts.zip&lt;/a&gt;, recuerden incluirlos en una biblioteca de Sharepoint y hacer la referencia correcta al momento de escribir el c&amp;oacute;digo en el WCE.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1815394" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="SharePoint 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/SharePoint+2010/default.aspx" /></entry><entry><title>Como enviar archivos adjuntos de Infopath 2010 como adjuntos de correo electrónico.</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/08/03/como-enviar-archivos-adjuntos-de-infopath-2010-como-adjuntos-de-correo-electr-243-nico.aspx" /><id>/blogs/tech-steps/archive/2012/08/03/como-enviar-archivos-adjuntos-de-infopath-2010-como-adjuntos-de-correo-electr-243-nico.aspx</id><published>2012-08-03T21:01:00Z</published><updated>2012-08-03T21:01:00Z</updated><content type="html">&lt;p&gt;El reto de hoy es generar el c&amp;oacute;digo necesario para poder enviar un documento adjunto de un formulario de Infopath 2010 como un adjunto de un correo electr&amp;oacute;nico. Como base es necesario tener al menos un control de tipo adjunto y un bot&amp;oacute;n en el formulario. En el bot&amp;oacute;n es necesario ingresar el siguiente c&amp;oacute;digo:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Importante incluir las siguientes referencias:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;using System.IO;&lt;br /&gt;using System.Net.Mail;&lt;br /&gt;using System.Text;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Algunas variables y constantes necesarias para el proceso:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;private const int SP1Header_Size = 20;&lt;br /&gt;private const int FIXED_HEADER = 16;&lt;br /&gt;private int fileSize;&lt;br /&gt;private int attachmentNameLength;&lt;br /&gt;private string attachmentName;&lt;br /&gt;private byte[] decodedAttachment;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Dos funciones principales que cumplen la funci&amp;oacute;n de decodificadores del archivo adjunto:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;public void InfoPathAttachmentDecoder(string theBase64EncodedString)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte [] theData = Convert.FromBase64String(theBase64EncodedString);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;using(MemoryStream ms = new MemoryStream(theData))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BinaryReader theReader = new BinaryReader(ms);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DecodeAttachment(theReader);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;private void DecodeAttachment(BinaryReader theReader)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Position the reader to obtain the file size.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[] headerData = new byte[FIXED_HEADER];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;headerData = theReader.ReadBytes(headerData.Length);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileSize = (int)theReader.ReadUInt32();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;attachmentNameLength = (int)theReader.ReadUInt32() * 2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[] fileNameBytes = theReader.ReadBytes(attachmentNameLength);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//InfoPath uses UTF8 encoding.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Encoding enc = Encoding.Unicode;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;attachmentName = enc.GetString(fileNameBytes, 0, attachmentNameLength - 2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;decodedAttachment = theReader.ReadBytes(fileSize);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Y finalmente la llamada a los procedimientos en el bot&amp;oacute;n del formularios, este c&amp;oacute;digo aplica cuando es un solo campo de documento adjunto:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;XPathNavigator Adjunto = this.MainDataSource.CreateNavigator().SelectSingleNode(&amp;quot;/my:misCampos/my:Adjuntos/my:Documento&amp;quot;, this.NamespaceManager);&lt;br /&gt;String textoAdjunto = Adjunto.Value;&lt;br /&gt;if (textoAdjunto.Length &amp;gt; 0)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InfoPathAttachmentDecoder(textoAdjunto);&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; MemoryStream streamAdjunto = new MemoryStream(decodedAttachment);&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; Attachment adjuntoCorreo = new Attachment(streamAdjunto, attachmentName);&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; MailMessage mail = new MailMessage();&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; SmtpClient SMTPServer = new SmtpClient(&amp;quot;servidor_correo&amp;quot;);&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; mail.From = new MailAddress(&amp;quot;&lt;a href="mailto:remitente@midominio.com"&gt;remitente@midominio.com&lt;/a&gt;&amp;quot;);&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; mail.To.Add(&amp;quot;&lt;a href="mailto:destinatario@otrodominio.com"&gt;destinatario@otrodominio.com&lt;/a&gt;&amp;quot;);&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; mail.Subject = &amp;quot;Adjunto desde Infopath&amp;quot;;&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; mail.Body = &amp;quot;prueba&amp;quot;;&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; mail.Attachments.Add(adjuntoCorreo);&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; SMTPServer.Send(mail);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Este c&amp;oacute;digo aplica cuando es una tabla de repetici&amp;oacute;n:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;XPathNavigator root = MainDataSource.CreateNavigator();&lt;br /&gt;XPathNodeIterator RepTable = root.Select(&amp;quot;/my:misCampos/my:Adjuntos&amp;quot;, NamespaceManager);&lt;br /&gt;MailMessage mail = new MailMessage();&lt;br /&gt;SmtpClient SMTPServer = new SmtpClient(&amp;quot;servidor_correo&amp;quot;);&lt;br /&gt;mail.From = new MailAddress(&amp;quot;&lt;a href="mailto:remitente@midominio.com"&gt;remitente@midominio.com&lt;/a&gt;&amp;quot;);&lt;br /&gt;mail.To.Add(&amp;quot;&lt;a href="mailto:destinatario@otrodominio.com"&gt;destinatario@otrodominio.com&lt;/a&gt;&amp;quot;);&lt;br /&gt;mail.Subject = &amp;quot;Adjuntos desde infopath&amp;quot;;&lt;br /&gt;mail.Body = &amp;quot;prueba&amp;quot;;&lt;br /&gt;while (RepTable.MoveNext())&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XPathNavigator Adjunto = RepTable.Current.SelectSingleNode(&amp;quot;my:Documento&amp;quot;, NamespaceManager);&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; String textoAdjunto = Adjunto.Value;&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; &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; if (textoAdjunto.Length &amp;gt; 0)&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; {&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; InfoPathAttachmentDecoder(textoAdjunto);&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; MemoryStream streamAdjunto = new MemoryStream(decodedAttachment);&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; Attachment adjuntoCorreo = new Attachment(streamAdjunto, attachmentName);&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; mail.Attachments.Add(adjuntoCorreo);&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; &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; }&lt;br /&gt;}&lt;br /&gt;SMTPServer.Send(mail);&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Algunos enlaces de referencia:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- &lt;a href="http://support.microsoft.com/kb/2517906"&gt;http://support.microsoft.com/kb/2517906&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- &lt;a href="http://support.microsoft.com/kb/892730"&gt;http://support.microsoft.com/kb/892730&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- &lt;a href="http://www.csharp411.com/c-convert-string-to-stream-and-stream-to-string/"&gt;http://www.csharp411.com/c-convert-string-to-stream-and-stream-to-string/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sharepointinfopath/thread/87e79f00-0277-4dbe-9092-c9e9bafe23a0/"&gt;http://social.msdn.microsoft.com/Forums/en-US/sharepointinfopath/thread/87e79f00-0277-4dbe-9092-c9e9bafe23a0/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1814829" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="Sharepoint 2010 - Infopath 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/Sharepoint+2010+-+Infopath+2010/default.aspx" /></entry><entry><title>Error en ejecución de flujo de trabajo - Sharepoint 2010 - Infopath 2010</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/29/error-en-ejecuci-243-n-de-flujo-de-trabajo-sharepoint-2010-infopath-2010.aspx" /><id>/blogs/tech-steps/archive/2012/07/29/error-en-ejecuci-243-n-de-flujo-de-trabajo-sharepoint-2010-infopath-2010.aspx</id><published>2012-07-29T10:42:00Z</published><updated>2012-07-29T10:42:00Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;Escenario:&lt;/strong&gt; una biblioteca de formularios con una plantilla de infopath publicada. Un flujo de trabajo creado en SPD 2010 que actualiza varios campos de la biblioteca (set current item field value) y se ejecuta autom&amp;aacute;ticamente cuando se crea un nuevo documento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El problema:&lt;/strong&gt; rand&amp;oacute;micamente durante el proceso de ejecuci&amp;oacute;n del flujo de trabajo &amp;eacute;ste no continua. Al revisar la ejecuci&amp;oacute;n del flujo me encuentro con lo siguiente:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/4722.ErrorFlujo.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/4722.ErrorFlujo.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Algunos puntos a tomar en cuenta:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- La biblioteca de formularios est&amp;aacute; configurada para que no requiera que se desprotejan (check-out) los elementos para que se modifiquen.&lt;/p&gt;
&lt;p&gt;- El flujo de trabajo tiene como primera tarea esperar por 1 minuto antes de continuar.&lt;/p&gt;
&lt;p&gt;- Se ejecut&amp;oacute; ya el comando: stsadm -o setproperty -propertyname &amp;quot;job workflow&amp;quot; -propertyvalue &amp;quot;every 1 minutes between 0 and 59&amp;quot; -url &lt;a href="http://sitio"&gt;http://sitio&lt;/a&gt;, seg&amp;uacute;n algunos foros que he podido visitar el colocar una acci&amp;oacute;n de pausa&amp;nbsp; podr&amp;iacute;a provocar este problema.&lt;/p&gt;
&lt;p&gt;- El mensaje de error, de acuerdo al gr&amp;aacute;fico, es: &amp;quot;Actualmente est&amp;aacute; bloqueada la edici&amp;oacute;n del elemento. En espera de la protecci&amp;oacute;n del elemento o de la liberaci&amp;oacute;n del bloqueo&amp;quot;, traducido al ingl&amp;eacute;s: &amp;quot;&lt;span class="linecolumntitle posttitle"&gt;The item is currently locked for editing. Waiting for item to be checked in or for the lock to be released.&lt;/span&gt;&amp;quot;, sin embargo, al momento de guadar el formulario de Infopath exite una acci&amp;oacute;n de cerrar el mismo por lo que se asegura que el elemento no est&amp;aacute; abierto durante la ejecuci&amp;oacute;n del flujo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Acciones por ejecutar:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;De acuerdo a algunos foros que he podido visitar sugieren hacer lo siguiente:&lt;/p&gt;
&lt;p&gt;- Revisar que&amp;nbsp;durante la ejecuci&amp;oacute;n del flujo de trabajo no se haga referencia a la asignaci&amp;oacute;n de valores de campos que hayan sido eliminados.&lt;/p&gt;
&lt;p&gt;- Cambiar la acci&amp;oacute;n de &amp;quot;detener el flujo por un minuto&amp;quot; por la acci&amp;oacute;n &amp;quot;&lt;strong&gt;Wait for document to be Unlocked by document editor&lt;/strong&gt;&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/5126.ErrorFlujo2.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/5126.ErrorFlujo2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/7026.ErrorFlujo3.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/7026.ErrorFlujo3.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- Cada vez que se publica un flujo se mantiene una&amp;nbsp; versi&amp;oacute;n en la biblioteca, se recomienda eliminar todos los flujos y volverlos a publicar.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/5707.ErrorFlujo1.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/5707.ErrorFlujo1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Voy a proceder con la ejecuci&amp;oacute;n de estas recomendaciones y estar&amp;eacute; actualizando este post muy pronto con los resultados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Algunos enlaces importantes / referencia:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010customization/thread/fc4e1073-d67f-449a-b443-e5805f5358c7/"&gt;http://social.technet.microsoft.com/Forums/en-US/sharepoint2010customization/thread/fc4e1073-d67f-449a-b443-e5805f5358c7/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/ta/sharepoint2010general/thread/36d8d3bb-8d15-4d7c-aa93-7117dfa253a1"&gt;http://social.msdn.microsoft.com/Forums/ta/sharepoint2010general/thread/36d8d3bb-8d15-4d7c-aa93-7117dfa253a1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sharepoint.stackexchange.com/questions/16261/unable-to-update-field-with-sp-designer-2010-workflow"&gt;http://sharepoint.stackexchange.com/questions/16261/unable-to-update-field-with-sp-designer-2010-workflow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sharepointed.com/2012/02/23/the-item-is-currently-locked-for-editing-waiting-for-item-to-be-checked-in-or-for-the-lock-to-be-released/"&gt;http://www.sharepointed.com/2012/02/23/the-item-is-currently-locked-for-editing-waiting-for-item-to-be-checked-in-or-for-the-lock-to-be-released/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1813801" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="Sharepoint 2010 - Infopath 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/Sharepoint+2010+-+Infopath+2010/default.aspx" /></entry><entry><title>Infopath 2010 al utilizar el método currentview.export pierde el foco del formulario actual</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/27/infopath-2010-al-utilizar-el-m-233-todo-currentview-export-pierde-el-foco-del-formulario-actual.aspx" /><id>/blogs/tech-steps/archive/2012/07/27/infopath-2010-al-utilizar-el-m-233-todo-currentview-export-pierde-el-foco-del-formulario-actual.aspx</id><published>2012-07-27T18:00:00Z</published><updated>2012-07-27T18:00:00Z</updated><content type="html">&lt;p&gt;Tengo un formulario simple de InfoPath 2010 con un campo de texto y un bot&amp;oacute;n. El c&amp;oacute;digo personalizado que tiene el bot&amp;oacute;n es el siguiente:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;public void CTRL2_5_Clicked(object sender, ClickedEventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; // Escriba aqu&amp;iacute; su c&amp;oacute;digo.&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; &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; try&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; {&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; generaDocumento();&lt;/p&gt;
&lt;p&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; }&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; catch (Exception ex)&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; {&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; MessageBox.Show(ex.Message);&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; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void generaDocumento()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; this.CurrentView.Export(@&amp;quot;C:\temp\prueba.pdf&amp;quot;, ExportFormat.Pdf);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Curiosamente cuando hago clic en el bot&amp;oacute;n, el formulario InfoPath pierde foco y se presenta la &amp;uacute;ltima ventana que se visit&amp;oacute; antes de ejecutar el formulario. Para solucionar de alguna forma este problema hice el siguiente cambio:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;public void CTRL2_5_Clicked(object sender, ClickedEventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; // Escriba aqu&amp;iacute; su c&amp;oacute;digo.&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; &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; try&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; {&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; generaDocumento();&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;&lt;strong&gt;&amp;nbsp; MessageBox.Show(&amp;quot;documento generado&amp;quot;);&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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; catch (Exception ex)&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; {&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; MessageBox.Show(ex.Message);&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; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;Agregu&amp;eacute; una l&amp;iacute;nea de c&amp;oacute;digo para que se presente un cuadro de mensaje y el foco se mantuvo, claro que el cuadro del mensaje jam&amp;aacute;s se present&amp;oacute;. Intent&amp;eacute; crear un nuevo hilo de ejecuci&amp;oacute;n (Thread) sin &amp;eacute;xito, es m&amp;aacute;s, con esta opci&amp;oacute;n dej&amp;oacute; de funcionar. No se si InfoPath tiene soporte para ejecuci&amp;oacute;n de hilos.&lt;/p&gt;
&lt;p&gt;De todas formas les dejo este post y esperando sus comentarios.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1813693" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="Sharepoint 2010 - Infopath 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/Sharepoint+2010+-+Infopath+2010/default.aspx" /></entry><entry><title>Modificación del campo "Creado por" de una lista de Sharepoint 2010</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/27/modificaci-243-n-del-campo-quot-creado-por-quot-de-una-lista-de-sharepoint-2010.aspx" /><id>/blogs/tech-steps/archive/2012/07/27/modificaci-243-n-del-campo-quot-creado-por-quot-de-una-lista-de-sharepoint-2010.aspx</id><published>2012-07-27T13:09:00Z</published><updated>2012-07-27T13:09:00Z</updated><content type="html">&lt;p&gt;Por defecto el campo &amp;quot;Creado por&amp;quot;, al igual que algunos otros dentro de una lista de SharePoint 2010, no pueden ser modificados por medio de una interfaz gr&amp;aacute;fica por defecto de SharePoint o un workflow, sin embargo, por medio de Powershell es posible hacerlo ejecutando algunos comandos.&lt;/p&gt;
&lt;p&gt;Comparto con ustedes esta secuencia de comandos que funcionaron para mi en SharePoint 2010 con una lista llamada &amp;quot;Gesti&amp;oacute;n Documental&amp;quot; y un campo secuencial &amp;quot;C&amp;oacute;digo del documento&amp;quot; que sirve como identificador adicional de cada documento.&lt;/p&gt;
&lt;p&gt;Las l&amp;iacute;neas &amp;quot;Read-Host&amp;quot; solicitan al usuario que ejecuta el script que ingrese el c&amp;oacute;digo del documento a modificar y el usuario con el cual se va a actualizar.&lt;/p&gt;
&lt;p&gt;$Codigo = Read-Host &amp;quot;Ingrese el c&amp;oacute;digo del documento&amp;quot;&lt;br /&gt;$Usuario = Read-Host &amp;quot;Ingrese el nombre del propietario&amp;quot;&lt;br /&gt;$Web = Get-SPWeb &lt;a href="http://sitiosharepoint"&gt;http://sitiosharepoint&lt;/a&gt;&lt;br /&gt;$List = $Web.Lists[&amp;quot;Gesti&amp;oacute;n Documental&amp;quot;]&lt;br /&gt;$items = $List.Items&lt;/p&gt;
&lt;p&gt;Foreach($item in $items)&lt;br /&gt;{&lt;br /&gt;if($item[&amp;quot;C&amp;oacute;digo del documento&amp;quot;] -eq $Codigo)&lt;br /&gt;{&lt;br /&gt;$item[&amp;quot;Creado por&amp;quot;]=$usuario&lt;br /&gt;$item[&amp;quot;UsuarioCambios&amp;quot;]=&amp;quot;dominio\nombre_usuario&amp;quot;&lt;br /&gt;$item.Update()&lt;br /&gt;}&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;El formato del usuario debe ser ingresado como: ID;#nombre_usuario. Para obtener esta informaci&amp;oacute;n el usuario debe estar registrado en SharePoint. Se puede obtener esta informaci&amp;oacute;n con la siguiente secuencia de comandos:&lt;/p&gt;
&lt;p&gt;$web=Get-SPWeb &lt;a href="http://sitiosharepoint"&gt;http://sitiosharepoint&lt;/a&gt;&lt;br /&gt;$user=$web.SiteUsers[&amp;quot;dominio\nombre_usuario&amp;quot;]&lt;br /&gt;$user.id&lt;br /&gt;42&lt;/p&gt;
&lt;p&gt;En el caso de actualizaciones masivas es posible utilizar sentencias o consultas CAML para poder filtrar la cantidad de registros a retornar, por ejemplo (Extra&amp;iacute;do&amp;nbsp;del sitio &lt;a href="http://get-spscripts.com/2010/09/get-all-column-values-from-sharepoint.html"&gt;http://get-spscripts.com/2010/09/get-all-column-values-from-sharepoint.html&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;#Check if the item is a file or list item and run a different query accordingly&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($list.BaseType -eq &amp;quot;DocumentLibrary&amp;quot;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $queryString = &amp;quot;&amp;lt;Where&amp;gt;&amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name=&amp;#39;FileLeafRef&amp;#39; /&amp;gt;&amp;lt;Value Type=&amp;#39;File&amp;#39;&amp;gt;&amp;quot; + $ItemName + &amp;quot;&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&amp;lt;/Where&amp;gt;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $queryString = &amp;quot;&amp;lt;Where&amp;gt;&amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name=&amp;#39;Title&amp;#39; /&amp;gt;&amp;lt;Value Type=&amp;#39;Text&amp;#39;&amp;gt;&amp;quot; + $ItemName + &amp;quot;&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&amp;lt;/Where&amp;gt;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Create the CAML query to find the item&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $query = New-Object Microsoft.SharePoint.SPQuery&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $query.Query = $queryString&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $item = $list.GetItems($query)[0]&lt;/p&gt;
&lt;p&gt;Para poder construir las consultas CAML utilizando la herramienta &amp;quot;U2U CAML Query Builder&amp;quot; que se lo puede descargar de &lt;a href="http://www.u2u.net/Tools/wincamlquerybuilder/CamlQueryBuilder.aspx"&gt;http://www.u2u.net/Tools/wincamlquerybuilder/CamlQueryBuilder.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Algunos enlaces adicionales que les pueden servir:&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://sharepointrelated.com/2012/05/03/addedit-list-items-using-powershell-in-sharepoint-2010/"&gt;http://sharepointrelated.com/2012/05/03/addedit-list-items-using-powershell-in-sharepoint-2010/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://davidlozzi.com/2012/02/14/playing-with-sharepoint-data-in-powershell/"&gt;http://davidlozzi.com/2012/02/14/playing-with-sharepoint-data-in-powershell/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1813679" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="Sharepoint 2010 - Infopath 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/Sharepoint+2010+-+Infopath+2010/default.aspx" /></entry><entry><title>Ciclo de conocimiento - Gerencia de Proyectos - Sesión 4: Solución final de Project Server 2010 sobre Sharepoint Server 2010.</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/18/ciclo-de-conocimiento-gerencia-de-proyectos-sesi-243-n-4-soluci-243-n-final-de-project-server-2010-sobre-sharepoint-server-2010.aspx" /><id>/blogs/tech-steps/archive/2012/07/18/ciclo-de-conocimiento-gerencia-de-proyectos-sesi-243-n-4-soluci-243-n-final-de-project-server-2010-sobre-sharepoint-server-2010.aspx</id><published>2012-07-18T20:21:00Z</published><updated>2012-07-18T20:21:00Z</updated><content type="html">&lt;p&gt;Luego de ejecutar un proceso de personalizaci&amp;oacute;n de Project Web Application y SharePoint Server 2010, se presenta un sitio completamente desarrollado acorde al proceso de gesti&amp;oacute;n de proyectos de una organizaci&amp;oacute;n. Se incluyen componentes de Inteligencia de Negocios, Workflow de Gesti&amp;oacute;n de Proyectos y algunos componentes funcionales adicionales.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.livemeeting.com/cc/8000181573/view?id=CCGEDEPRP4"&gt;https://www.livemeeting.com/cc/8000181573/view?id=CCGEDEPRP4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Por este medio agradezco enormemente a la comunidad IT Pros DC (Bogot&amp;aacute; - Colombia), y a sus l&amp;iacute;deres,&amp;nbsp;por permitirme compartir con ellos estas cuatro sesiones del ciclo de conocimiento, por cierto est&amp;aacute; a&amp;uacute;n pendiente el evento presencial. Ahora mismo estamos preparando un Nuevo ciclo de conocimiento sobre&amp;nbsp; SharePoint 2010 en la nube y una primera revision de SharePoint Server 2013 Preview.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1813067" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="Sharepoint 2010 + Project Server 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/Sharepoint+2010+_2B00_+Project+Server+2010/default.aspx" /></entry><entry><title>Ciclo de conocimiento - Gerencia de Proyectos - Sesión 3: Personalización de Project Server 2010 sobre Sharepoint Server 2010.</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/18/ciclo-de-conocimiento-gerencia-de-proyectos-sesi-243-n-3-personalizaci-243-n-de-project-server-2010-sobre-sharepoint-server-2010.aspx" /><id>/blogs/tech-steps/archive/2012/07/18/ciclo-de-conocimiento-gerencia-de-proyectos-sesi-243-n-3-personalizaci-243-n-de-project-server-2010-sobre-sharepoint-server-2010.aspx</id><published>2012-07-18T20:11:00Z</published><updated>2012-07-18T20:11:00Z</updated><content type="html">&lt;p&gt;En la sesi&amp;oacute;n 3 revisamos el proceso y algunas opciones de personalizaci&amp;oacute;n de Project Server 2010 y los sitios de colaboraci&amp;oacute;n de proyectos (Workspace).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.livemeeting.com/cc/8000181573/view?id=CCGEDEPRP3"&gt;https://www.livemeeting.com/cc/8000181573/view?id=CCGEDEPRP3&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1813065" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="Sharepoint 2010 + Project Server 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/Sharepoint+2010+_2B00_+Project+Server+2010/default.aspx" /></entry><entry><title>Ciclo de conocimiento - Gerencia de Proyectos - Sesión 2: Implementación de Project Server 2010 sobre Sharepoint Server 2010.</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/18/ciclo-de-conocimiento-gerencia-de-proyectos-sesi-243-n-2-implementaci-243-n-de-project-server-2010-sobre-sharepoint-server-2010.aspx" /><id>/blogs/tech-steps/archive/2012/07/18/ciclo-de-conocimiento-gerencia-de-proyectos-sesi-243-n-2-implementaci-243-n-de-project-server-2010-sobre-sharepoint-server-2010.aspx</id><published>2012-07-18T20:06:00Z</published><updated>2012-07-18T20:06:00Z</updated><content type="html">&lt;p&gt;En esta segunda sesi&amp;oacute;n, realizamos una revisi&amp;oacute;n t&amp;eacute;cnica de SharePoint Server 2010 y Project Server 2010, y la implementaci&amp;oacute;n en vivo de un servidor (ambiente de prueba) con ambas tecnolog&amp;iacute;as.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.livemeeting.com/cc/8000181573/view?id=CCGEDEPRP2"&gt;https://www.livemeeting.com/cc/8000181573/view?id=CCGEDEPRP2&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1813063" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="Sharepoint 2010 + Project Server 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/Sharepoint+2010+_2B00_+Project+Server+2010/default.aspx" /></entry><entry><title>Ciclo de conocimiento - Gerencia de Proyectos - Sesión 1: La Metodología.</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/18/ciclo-de-conocimiento-gerencia-de-proyectos-sesi-243-n-1-la-metodolog-237-a.aspx" /><id>/blogs/tech-steps/archive/2012/07/18/ciclo-de-conocimiento-gerencia-de-proyectos-sesi-243-n-1-la-metodolog-237-a.aspx</id><published>2012-07-18T20:00:00Z</published><updated>2012-07-18T20:00:00Z</updated><content type="html">&lt;p&gt;Amigos de la comunidad comparto con ustedes&amp;nbsp;el primer enlace,&amp;nbsp;que en conjunto con la comunidad IT Pros DC de Bogot&amp;aacute; - Colombia, ejecutamos en relaci&amp;oacute;n a Gerencia de Proyectos. &lt;/p&gt;
&lt;p&gt;En esta primera sesi&amp;oacute;n analizamos y revisamos la metodolog&amp;iacute;a de gesti&amp;oacute;n de proyectos desde el punto de vista de PMI (PMBoK).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.livemeeting.com/cc/8000181573/view?id=CCGEDEPRP1"&gt;https://www.livemeeting.com/cc/8000181573/view?id=CCGEDEPRP1&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1813062" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="Sharepoint 2010 - Project Server 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/Sharepoint+2010+-+Project+Server+2010/default.aspx" /></entry><entry><title>Sharepoint Server 2013 - Project Server 2013 - Office 2013 / Preview: Resumen de Recursos</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/16/sharepoint-server-2013-project-server-2013-office-2013-preview-resumen-de-recursos.aspx" /><id>/blogs/tech-steps/archive/2012/07/16/sharepoint-server-2013-project-server-2013-office-2013-preview-resumen-de-recursos.aspx</id><published>2012-07-16T23:52:00Z</published><updated>2012-07-16T23:52:00Z</updated><content type="html">&lt;p&gt;Sin duda el d&amp;iacute;a de hoy, 16 de Julio de 2012, ha sido uno de los d&amp;iacute;as m&amp;aacute;s esperados no solo para mi sino para millones de IT Pros y Developers.&amp;nbsp;Durante las&amp;nbsp;&amp;uacute;ltimas 3 horas, aproximadamente, se ha liberado una gran cantidad de informaci&amp;oacute;n sobre las versions 2013 Preview de multiples productos Microsoft, entre ellos: SharePoint Foundation / Server, Project Pro / Server / Online, Office, Lync y Exchange (espero no olvidar ninguno).&lt;/p&gt;
&lt;p&gt;Cre&amp;iacute; importante hacer un resumen de algunos enlaces importantes con informaci&amp;oacute;n y descargas de productos.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Office2013/0820.Office2013.png"&gt;&lt;img height="181" width="308" src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Office2013/0820.Office2013.png" border="0" style="border:0;float:left;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;SITIO PRINCIPAL DE DESCARGAS:&lt;/strong&gt; este sitio presenta un resumen de todas las versiones &amp;quot;on-premise&amp;quot; y en l&amp;iacute;nea (Office 365 Enterprise Preview y Project Server Online) liberadas el d&amp;iacute;a de hoy.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/office/preview/en/try-more-products"&gt;http://www.microsoft.com/office/preview/en/try-more-products&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sitio principal de Office Preview:&lt;/strong&gt; &lt;a href="http://www.microsoft.com/office/preview/en"&gt;http://www.microsoft.com/office/preview/en&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Office2013/2844.SharepointServer2013.png"&gt;&lt;img height="202" width="344" src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Office2013/2844.SharepointServer2013.png" border="0" style="float:right;border:0px;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Personalmente, uno de los productos m&amp;aacute;s esperados por todo lo que su versi&amp;oacute;n previa (SharePoint Server 2010) present&amp;oacute; y ofreci&amp;oacute;, &lt;strong&gt;SHAREPOINT SERVER 2013 PREVIEW&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;El enlace para descargar directamente la versi&amp;oacute;n Preview de SharePoint Server 2013: &lt;a href="http://technet.microsoft.com/en-US/evalcenter/hh973397.aspx?wt.mc_id=TEC_121_1_33"&gt;http://technet.microsoft.com/en-US/evalcenter/hh973397.aspx?wt.mc_id=TEC_121_1_33&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Entrenamiento t&amp;eacute;cnico para IT Pros: &lt;a href="http://technet.microsoft.com/en-US/sharepoint/fp123606"&gt;http://technet.microsoft.com/en-US/sharepoint/fp123606&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SharePoint Server 2013 en resumen (PPTs): &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30361"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=30361&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Configuraci&amp;oacute;n de un laboratorio de prueba de SharePoint Server 2013: &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30386"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=30386&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SharePoint Designer 2013: &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30346"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=30346&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Office2013/5822.ProjectServer2013Online.png"&gt;&lt;img height="208" width="358" src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Office2013/5822.ProjectServer2013Online.png" border="0" style="border:0;float:left;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PROJECT SERVER 2013 PREVIEW:&lt;/strong&gt; sin duda conocemos las bondades y ventajas de esta complete soluci&amp;oacute;n de EPM y su contraparte en escritorio Project Professional.&lt;/p&gt;
&lt;p&gt;Sitio de descarga directo: &lt;a href="http://technet.microsoft.com/en-US/evalcenter/hh973403.aspx?wt.mc_id=TEC_120_1_33"&gt;http://technet.microsoft.com/en-US/evalcenter/hh973403.aspx?wt.mc_id=TEC_120_1_33&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Project Professional 2013 Preview: &lt;a href="http://technet.microsoft.com/en-US/evalcenter/hh973401"&gt;http://technet.microsoft.com/en-US/evalcenter/hh973401&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sin embargo, el mayor &amp;quot;atractivo&amp;quot; por decirlo as&amp;iacute; de esta nueva versi&amp;oacute;n es que ya se encuentra disponible como un servicio on-line: &lt;a href="http://www.microsoft.com/project/en-us/preview/project-benefits.aspx"&gt;http://www.microsoft.com/project/en-us/preview/project-benefits.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Office2013/3326.ProjectServer2013.png"&gt;&lt;img height="164" width="296" src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Office2013/3326.ProjectServer2013.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1812920" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="Sharepoint 15" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/Sharepoint+15/default.aspx" /></entry><entry><title>Sharepoint 15 + Office 365 Enterprise Preview</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/16/sharepoint-15-office-365-enterprise-preview.aspx" /><id>/blogs/tech-steps/archive/2012/07/16/sharepoint-15-office-365-enterprise-preview.aspx</id><published>2012-07-16T22:09:00Z</published><updated>2012-07-16T22:09:00Z</updated><content type="html">&lt;p&gt;Es realmente incredible la cantidad de informaci&amp;oacute;n que se est&amp;aacute; liberando en estos minutos. Pongo a su disposici&amp;oacute;n el sitio de descarga de SharePoint Server 15 Preview:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://technet.microsoft.com/en-US/evalcenter/hh973397.aspx?wt.mc_id=TEC_121_1_33"&gt;http://technet.microsoft.com/en-US/evalcenter/hh973397.aspx?wt.mc_id=TEC_121_1_33&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Y el que me llam&amp;oacute; m&amp;aacute;s la atenci&amp;oacute;n, Office 365 Enterprise Preview:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/office/preview/en/office-365-enterprise"&gt;http://www.microsoft.com/office/preview/en/office-365-enterprise&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1812919" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="Sharepoint 15" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/Sharepoint+15/default.aspx" /></entry><entry><title>Sharepoint 2010 + Infopath 2010: Como asegurarnos de que una carpeta existe antes de exportar a PDF una vista actual.</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/12/sharepoint-2010-infopath-2010-como-asegurarnos-de-que-una-carpeta-existe-antes-de-exportar-a-pdf-una-vista-actual.aspx" /><id>/blogs/tech-steps/archive/2012/07/12/sharepoint-2010-infopath-2010-como-asegurarnos-de-que-una-carpeta-existe-antes-de-exportar-a-pdf-una-vista-actual.aspx</id><published>2012-07-12T20:04:00Z</published><updated>2012-07-12T20:04:00Z</updated><content type="html">&lt;p&gt;En esta serie de posts en relaci&amp;oacute;n a InfoPath 2010, tuve que incluir una porci&amp;oacute;n de c&amp;oacute;digo para asegurarme de que la carpeta en la cual se van a almacenar los documentos PDF exportados exista. Es necesario agregar una referencia&amp;nbsp;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;using&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; System.IO;&lt;/span&gt;&amp;nbsp;y luego incluir el siguiente c&amp;oacute;digo.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(!&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Directory&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Exists(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;@&amp;quot;c:\temp&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;))&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Directory&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.CreateDirectory(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;@&amp;quot;C:\temp&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;);&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1812786" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="SharePoint 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/SharePoint+2010/default.aspx" /></entry><entry><title>Sharepoint 2010 + Infopath 2010: Limitante al exportar vista en PDF y agregarlo como adjunto en un correo</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/12/sharepoint-2010-infopath-2010-limitante-al-exportar-vista-en-pdf-y-agregarlo-como-adjunto-en-un-correo.aspx" /><id>/blogs/tech-steps/archive/2012/07/12/sharepoint-2010-infopath-2010-limitante-al-exportar-vista-en-pdf-y-agregarlo-como-adjunto-en-un-correo.aspx</id><published>2012-07-12T19:58:00Z</published><updated>2012-07-12T19:58:00Z</updated><content type="html">&lt;p&gt;En mi post&amp;nbsp;anterior &lt;a href="http://msmvps.com/blogs/tech-steps/archive/2012/07/10/sharepoint-2010-aprobaci-243-n-de-workflows-para-dispositivos-m-243-viles-parte-3-c-243-digo-para-env-237-o-de-correo-electr-243-nico-de-notificaci-243-n.aspx"&gt;Sharepoint 2010 - Aprobaci&amp;oacute;n de workflows para dispositivos m&amp;oacute;viles - Parte 3: C&amp;oacute;digo para env&amp;iacute;o de correo electr&amp;oacute;nico de notificaci&amp;oacute;n&lt;/a&gt;, hab&amp;iacute;a publicado la siguiente porci&amp;oacute;n de c&amp;oacute;digo:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;/*Crea un document PDF con la vista actual*/&lt;br /&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.CurrentView.Export(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;@&amp;quot;c:\temp\&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; + OrdenCompra + &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;_MemoMetalicos.pdf&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;ExportFormat&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Pdf);&lt;span style="font-size:x-small;"&gt; &lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;/*Importante detener al menos por 10 segundos mientras se crea el documento caso contrario genera un error*/&lt;br /&gt;Thread&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Sleep(10000); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;El problema resulta que el document PDF que se crea con la function CurrentView no aparace en el directorio destino hasta que toda la funci&amp;oacute;n o hilo de ejecuci&amp;oacute;n finaliza, por tal motive es que cuando al tartar de agregarlo como adjunto de un correo en el mismo paso (hilo de ejecuci&amp;oacute;n) se presenta un mensaje de error en relaci&amp;oacute;n a que el documento no existe. Al parecer el m&amp;eacute;todo Sleep detiene por complete todo el hilo de ejecuci&amp;oacute;n por lo que no da paso a que el documento aparezca en el path de destino.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;He invertido ya un gran tiempo en internet buscando informaci&amp;oacute;n al respecto pero solo encontr&amp;eacute; un enlace indicando el mismo problema pero sin una soluci&amp;oacute;n espec&amp;iacute;fica.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;strong&gt;SOLUCI&amp;Oacute;N:&lt;/strong&gt; tomando en cuenta la limitante antes expuesta tuve que dividir en dos botones tanto la generaci&amp;oacute;n del documento como el env&amp;iacute;o del correo con el adjunto.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;strong&gt;Actualizaci&amp;oacute;n:&lt;/strong&gt; este es el &amp;uacute;nico URL que encontr&amp;eacute; donde se menciona el mismo problema: &lt;a href="http://www.infopathdev.com/forums/t/22835.aspx"&gt;http://www.infopathdev.com/forums/t/22835.aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1812784" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="SharePoint 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/SharePoint+2010/default.aspx" /></entry><entry><title>Sharepoint 2010 - Aprobación de workflows para dispositivos móviles - Parte 4: Código Javascript en la página de webparts de Sharepoint</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/11/sharepoint-2010-aprobaci-243-n-de-workflows-para-dispositivos-m-243-viles-parte-4-c-243-digo-javascript-en-la-p-225-gina-de-webparts-de-sharepoint.aspx" /><id>/blogs/tech-steps/archive/2012/07/11/sharepoint-2010-aprobaci-243-n-de-workflows-para-dispositivos-m-243-viles-parte-4-c-243-digo-javascript-en-la-p-225-gina-de-webparts-de-sharepoint.aspx</id><published>2012-07-11T14:45:00Z</published><updated>2012-07-11T14:45:00Z</updated><content type="html">&lt;p&gt;Para completar el ciclo, es necesario crear la p&amp;aacute;gina de webparts, agregar un CEW y colocar ah&amp;iacute; el c&amp;oacute;digo JavaScript necesario para hacer el llamado al servicio web de actualizaci&amp;oacute;n de items de la biblioteca de documentos.&lt;/p&gt;
&lt;p&gt;En espec&amp;iacute;fico el CEW debe contener el siguiente c&amp;oacute;digo:&lt;/p&gt;
&lt;p&gt;&amp;lt;script src=&amp;quot;/Scripts/jquery.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;function gup( name )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; name = name.replace(/[\[]/,&amp;quot;&lt;a&gt;\\\[&amp;quot;).replace(/[\]]/,&amp;quot;\\\&lt;/a&gt;]&amp;quot;);&lt;br /&gt;&amp;nbsp; var regexS = &amp;quot;[\\?&amp;amp;]&amp;quot;+name+&amp;quot;=([^&amp;amp;#]*)&amp;quot;;&lt;br /&gt;&amp;nbsp; var regex = new RegExp( regexS );&lt;br /&gt;&amp;nbsp; var results = regex.exec( window.location.href );&lt;br /&gt;&amp;nbsp; if( results == null )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return results[1];&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;function ActualizaEmbarque()&lt;br /&gt;{&lt;br /&gt;var IDFormulario=gup(&amp;#39;IDForm&amp;#39;);&lt;br /&gt;var Estado=gup(&amp;#39;Estado&amp;#39;);&lt;br /&gt;var Gerente=gup(&amp;#39;Gerente&amp;#39;);&lt;/p&gt;
&lt;p&gt;if (Estado==&amp;#39;1&amp;#39;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; Estado=&amp;quot;APROBADO&amp;quot;;&lt;br /&gt;}&lt;br /&gt;else if (Estado==&amp;#39;2&amp;#39;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; Estado=&amp;quot;NO APROBADO&amp;quot;;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;if (Gerente==&amp;#39;1&amp;#39;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; Gerente=&amp;quot;AprobacionGerente1&amp;quot;;&lt;br /&gt;}&lt;br /&gt;else if (Gerente==&amp;#39;2&amp;#39;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; Gerente=&amp;quot;AprobacionGerente2&amp;quot;;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;var soapEnv = &amp;quot;&amp;lt;?xml version=\&amp;#39;1.0\&amp;#39; encoding=\&amp;#39;utf-8\&amp;#39;?&amp;gt; \&lt;br /&gt;&amp;lt;soap:Envelope xmlns:xsi=\&amp;#39;http://www.w3.org/2001/XMLSchema-instance\&amp;#39; \&lt;br /&gt;xmlns:xsd=\&amp;#39;http://www.w3.org/2001/XMLSchema\&amp;#39; \&lt;br /&gt;xmlns:soap=&amp;#39;http://schemas.xmlsoap.org/soap/envelope/\&amp;#39;&amp;gt; \&lt;br /&gt;&amp;lt;soap:Body&amp;gt; \&lt;br /&gt;&amp;lt;UpdateListItems xmlns=&amp;#39;http://schemas.microsoft.com/sharepoint/soap/&amp;#39;&amp;gt; \&lt;br /&gt;&amp;lt;listName&amp;gt;Control de Embarques de Chatarra&amp;lt;/listName&amp;gt; \&lt;br /&gt;&amp;lt;updates&amp;gt; \&lt;br /&gt;&amp;lt;Batch OnError=&amp;#39;Continue&amp;#39;&amp;gt; \&lt;br /&gt;&amp;lt;Method ID=&amp;#39;1&amp;#39; Cmd=&amp;#39;Update&amp;#39;&amp;gt; \&lt;br /&gt;&amp;lt;Field Name=&amp;#39;ID&amp;#39;&amp;gt;&amp;quot;+IDFormulario+&amp;quot;&amp;lt;/Field&amp;gt; \&lt;br /&gt;&amp;lt;Field Name=&amp;#39;&amp;quot;+Gerente+&amp;quot;&amp;#39;&amp;gt;&amp;quot;+Estado+&amp;quot;&amp;lt;/Field&amp;gt; \&lt;br /&gt;&amp;lt;/Method&amp;gt; \&lt;br /&gt;&amp;lt;/Batch&amp;gt; \&lt;br /&gt;&amp;lt;/updates&amp;gt; \&lt;br /&gt;&amp;lt;/UpdateListItems&amp;gt; \&lt;br /&gt;&amp;lt;/soap:Body&amp;gt; \&lt;br /&gt;&amp;lt;/soap:Envelope&amp;gt;&amp;quot;;&lt;br /&gt;$.ajax({&lt;br /&gt;url: &amp;quot;/_vti_bin/lists.asmx&amp;quot;,&lt;br /&gt;beforeSend: function(xhr) { xhr.setRequestHeader(&amp;quot;SOAPAction&amp;quot;, &amp;quot;&lt;a href="http://schemas.microsoft.com/sharepoint/soap/UpdateListItems"&gt;http://schemas.microsoft.com/sharepoint/soap/UpdateListItems&lt;/a&gt;&amp;quot;);&lt;br /&gt;},&lt;br /&gt;type: &amp;quot;POST&amp;quot;,&lt;br /&gt;dataType: &amp;quot;xml&amp;quot;,&lt;br /&gt;data: soapEnv,&lt;br /&gt;complete: UpdateListItems,&lt;br /&gt;contentType: &amp;quot;text/xml; charset=\&amp;quot;utf-8\&amp;quot;&amp;quot;&lt;br /&gt;});&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;function UpdateListItems(xData, status) &lt;br /&gt;{&lt;br /&gt;alert(&amp;quot;Aprobaci&amp;oacute;n: &amp;quot; + status );&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;ActualizaEmbarque();&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;El archivo jquery.min.js lo pueden obtener de este sitio &lt;span style="font-family:Courier New;"&gt;&lt;a href="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&gt;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&lt;/a&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;La parte medular de este c&amp;oacute;digo es:&lt;/p&gt;
&lt;p&gt;&amp;lt;UpdateListItems xmlns=&amp;#39;http://schemas.microsoft.com/sharepoint/soap/&amp;#39;&amp;gt; \&lt;br /&gt;&amp;lt;listName&amp;gt;Control de Embarques de Chatarra&amp;lt;/listName&amp;gt; \&lt;br /&gt;&amp;lt;updates&amp;gt; \&lt;br /&gt;&amp;lt;Batch OnError=&amp;#39;Continue&amp;#39;&amp;gt; \&lt;br /&gt;&amp;lt;Method ID=&amp;#39;1&amp;#39; Cmd=&amp;#39;Update&amp;#39;&amp;gt; \&lt;br /&gt;&amp;lt;Field Name=&amp;#39;ID&amp;#39;&amp;gt;&amp;quot;+IDFormulario+&amp;quot;&amp;lt;/Field&amp;gt; \&lt;br /&gt;&amp;lt;Field Name=&amp;#39;&amp;quot;+Gerente+&amp;quot;&amp;#39;&amp;gt;&amp;quot;+Estado+&amp;quot;&amp;lt;/Field&amp;gt; \&lt;br /&gt;&amp;lt;/Method&amp;gt; \&lt;br /&gt;&amp;lt;/Batch&amp;gt; \&lt;br /&gt;&amp;lt;/updates&amp;gt; \&lt;br /&gt;&amp;lt;/UpdateListItems&amp;gt; \&lt;/p&gt;
&lt;p&gt;Este c&amp;oacute;digo es el que construye el cuerpo de la actualizaci&amp;oacute;n del item utilizando el servicio web de SharePoint.&lt;/p&gt;
&lt;p&gt;&amp;lt;listName&amp;gt;Control de Embarques de Chatarra&amp;lt;/listName&amp;gt;: hace referencia al nombre de la lista en donde se har&amp;aacute;n las actualizaciones.&lt;/p&gt;
&lt;p&gt;&amp;lt;Method ID=&amp;#39;1&amp;#39; Cmd=&amp;#39;Update&amp;#39;&amp;gt; \: como es posible enviar varias actualizaciones en un mismo paso, aqu&amp;iacute; indicamos que existe uno solo (ID=&amp;#39;1&amp;#39;) y que sera de una operaci&amp;oacute;n de actualizacip&amp;oacute;n (Cmd=&amp;#39;Update&amp;#39;).&lt;/p&gt;
&lt;p&gt;&amp;lt;Field Name=&amp;#39;ID&amp;#39;&amp;gt;&amp;quot;+IDFormulario+&amp;quot;&amp;lt;/Field&amp;gt; \: utilizando el par&amp;aacute;metro enviado en el URL, indicamos cual es el ID del item que vamos a actualizar.&lt;/p&gt;
&lt;p&gt;&amp;lt;Field Name=&amp;#39;&amp;quot;+Gerente+&amp;quot;&amp;#39;&amp;gt;&amp;quot;+Estado+&amp;quot;&amp;lt;/Field&amp;gt; \: aqu&amp;iacute; indicamos el campo del item que vamos a actualizar y el valor respectivo. Es importante mencionar que si el nombre del campo posee espacios en blanco debe ir en el formato: &amp;quot;Nombre_x0020_Campo&amp;quot;, la cadena &amp;quot;_x0020_&amp;quot; representa a un espacio en blanco.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ACTUALIZACI&amp;Oacute;N:&lt;/strong&gt; para visualizar el nombre de campo que se debe colocar en el XML Field Name se recomienda ingresar a la configuraci&amp;oacute;n de la lista y hacer clic en el campo, revisar en el URL el par&amp;aacute;metro &lt;strong&gt;Field&lt;/strong&gt;. Esto es de utilidad en el caso de que el campo contenga tildes o sea demasiado largo, por ejemplo Field=Aprobaci%5Fx00f3%5Fn%5Fx0020%5FAprobador. es necesario reemplazar &lt;strong&gt;%5F&lt;/strong&gt; por un &lt;strong&gt;_&lt;/strong&gt;, para este caso &lt;strong&gt;_x00f3_&lt;/strong&gt; representa a una &lt;strong&gt;&amp;oacute;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Si se requiere actualizar m&amp;aacute;s campos simplemente se deben agregar m&amp;aacute;s secciones del tipo &amp;lt;Field Name=&amp;#39;&amp;quot;+Gerente+&amp;quot;&amp;#39;&amp;gt;&amp;quot;+Estado+&amp;quot;&amp;lt;/Field&amp;gt; \.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Espero que esta serie de posts sean de su utilidad.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1812713" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="SharePoint 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/SharePoint+2010/default.aspx" /></entry><entry><title>Sharepoint 2010 - Aprobación de workflows para dispositivos móviles - Parte 3: Código para envío de correo electrónico de notificación</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/10/sharepoint-2010-aprobaci-243-n-de-workflows-para-dispositivos-m-243-viles-parte-3-c-243-digo-para-env-237-o-de-correo-electr-243-nico-de-notificaci-243-n.aspx" /><id>/blogs/tech-steps/archive/2012/07/10/sharepoint-2010-aprobaci-243-n-de-workflows-para-dispositivos-m-243-viles-parte-3-c-243-digo-para-env-237-o-de-correo-electr-243-nico-de-notificaci-243-n.aspx</id><published>2012-07-10T21:37:00Z</published><updated>2012-07-10T21:37:00Z</updated><content type="html">&lt;p&gt;A pesar de que un correo electr&amp;oacute;nico puede ser enviado utilizando una acci&amp;oacute;n de SPD, en este caso particupar para la plantilla de formulario de InfoPath 2010 fue necesario incluir c&amp;oacute;digo C# dentro de las acciones de un bot&amp;oacute;n para poder enviar el correo de notificaci&amp;oacute;n junto con el enlace adjunto de la p&amp;aacute;gina con los par&amp;aacute;metros necesarios para poder hacer la aprobaci&amp;oacute;n de un item desde el correo electr&amp;oacute;nico.&lt;/p&gt;
&lt;p&gt;El c&amp;oacute;digo C# ingresado es el siguiente:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;try&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;/*Recupera algunos campos para enviar por correo electr&amp;oacute;nico desde INFOPATH*/&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;XPathNavigator&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; CamposFormulario = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.MainDataSource.CreateNavigator().SelectSingleNode(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;//my:myFields/my:CAMPOS_APOYO/my:IDForm&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.NamespaceManager);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; IDFormulario = CamposFormulario.Value;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;XPathNavigator&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; NombreF = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.MainDataSource.CreateNavigator().SelectSingleNode(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;//my:myFields/my:GENERAL/my:NoOrdenCompra&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.NamespaceManager);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; OrdenCompra = NombreF.Value;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;XPathNavigator&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; CorreoGerenteUno = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.MainDataSource.CreateNavigator().SelectSingleNode(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;//my:myFields/my:APROBACION_METALICOS/my:CorreoGerente1&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.NamespaceManager);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; CorreoGerente1 = CorreoGerenteUno.Value;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;XPathNavigator&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; CorreoGerenteDos = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.MainDataSource.CreateNavigator().SelectSingleNode(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;//my:myFields/my:APROBACION_METALICOS/my:CorreoGerente2&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.NamespaceManager);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; CorreoGerente2 = CorreoGerenteDos.Value;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;/*Crea un document PDF con la vista actual*/&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.CurrentView.Export(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;@&amp;quot;c:\temp\&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; + OrdenCompra + &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;_MemoMetalicos.pdf&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;ExportFormat&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Pdf);&lt;span style="font-size:x-small;"&gt; &lt;span style="font-size:x-small;"&gt;&lt;font size="2"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;/*Importante detener al menos por 10 segundos mientras se crea el documento caso contrario genera un error*/&lt;br /&gt;Thread&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Sleep(10000); &lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;font size="2"&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;/*Crea un nuevo objeto del tipo mail*/&lt;br /&gt;MailMessage&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; mail = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;MailMessage&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(); &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SmtpClient&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; SMTPServer = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SmtpClient&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;&amp;lt;servidor de correo&amp;gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;); &lt;br /&gt;&lt;span style="font-size:x-small;"&gt;mail.From = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;MailAddress&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;&amp;lt;direcci&amp;oacute;n de correo del remitente&amp;gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;); &lt;br /&gt;mail.To.Add(CorreoGerente1);&lt;br /&gt;&lt;span style="font-size:x-small;"&gt;mail.Subject = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Aprobaci&amp;oacute;n de Orden de Compra - &amp;quot; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;+ OrdenCompra;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;AlternateView&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; av = &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;AlternateView&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.CreateAlternateViewFromString(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Se ha generado una nueva Orden de Compra que requiere ser aprobada por usted. &amp;lt;br&amp;gt; En el documento adjunto encontrar los detalles de la Orden de Compra. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; Para APROBAR la Orden de Compra hacer clic &amp;lt;a href=&amp;#39;http://&amp;lt;URL del servidor y la biblioteca&amp;gt;/paginaWebService.aspx?ID=&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; + IDFormulario + &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;&amp;amp;Gerente=1&amp;amp;Estado=1&amp;#39;&amp;gt;AQU&amp;Iacute;&amp;lt;/a&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; Para NO APROBAR la Orden de Compra hacer clic &amp;lt;a href=&amp;#39;http://&amp;lt;URL del servidor y la biblioteca&amp;gt;/paginaWebService.aspx?ID=&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; + IDFormulario + &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;&amp;amp;Gerente=1&amp;amp;Estado=2&amp;#39;&amp;gt;AQU&amp;Iacute;&amp;lt;/a&amp;gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;text/html&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;); &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Attachment &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;adjunto;&lt;span style="font-size:x-small;"&gt; &lt;br /&gt;adjunto = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Attachment&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;@&amp;quot;c:\temp\&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; + OrdenCompra + &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;_MemoMetalicos.pdf&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;); &lt;br /&gt;mail.Attachments.Add(adjunto);&lt;br /&gt;SMTPServer.Send(mail);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;MessageBox&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Show(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Correo enviado exitosamente. El formulario se cerrar automticamente en 5 segundos.&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;); &lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; (&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Exception &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;ex) &lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;MessageBox&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Show(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Error: &amp;quot; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;+ ex.Message); &lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;finally&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Thread&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Sleep(5000);&lt;span style="font-size:x-small;"&gt; &lt;br /&gt;Application.Quit(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;);&lt;br /&gt;&lt;/span&gt;}&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;mail.AlternateViews.Add(av);&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;La parte clave de este c&amp;oacute;digo es&amp;nbsp;la creaci&amp;oacute;n del objeto&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;AlternateView&lt;/span&gt;&lt;/span&gt;&amp;nbsp;ya que el cuerpo del mensaje debe ser enviado en formato HTML para poder&amp;nbsp;incluir los enlaces de aprobaci&amp;oacute;n, en el caso de que se requiera enviar &amp;uacute;nicamente texto plano se puede utilizar el m&amp;eacute;todo &amp;quot;mail.body(&amp;quot;cuerpo del mensaje&amp;quot;);. &lt;br /&gt;&lt;br /&gt;El formato de los enlaces de aprobaci&amp;oacute;n es:&amp;nbsp;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:#a31515;"&gt;&amp;lt;a href=&amp;#39;http://&amp;lt;URL del servidor y la biblioteca&amp;gt;/paginaWebService.aspx?ID=&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; + IDFormulario + &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;&amp;amp;Gerente=1&amp;amp;Estado=1&amp;#39;&amp;gt;AQU&amp;Iacute;&amp;lt;/a&amp;gt; &lt;/span&gt;&lt;/span&gt;, en este enlace se hace referencia a la p&amp;aacute;gina de webparts &amp;quot;paginaWebService.aspx&amp;quot; en donde se encuentra incluido un CEW con el c&amp;oacute;digo javascript necesario para hacer la actualizaci&amp;oacute;n del item de la biblioteca de formularios InfoPath. &lt;br /&gt;&lt;br /&gt;Adicionalmente se env&amp;iacute;an los par&amp;aacute;metros necesarios para hacer el llamado al servicio web de actualizaci&amp;oacute;n de items.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;En la siguiente parte revisaremos el c&amp;oacute;digo JavaScript incluido en el CEW que hace el llamado al servicio web para hacer la actualizaci&amp;oacute;n del item de la biblioteca de documentos.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1812711" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="SharePoint 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/SharePoint+2010/default.aspx" /></entry><entry><title>Sharepoint 2010 - Aprobación de workflows para dispositivos móviles - Parte 2: Solución</title><link rel="alternate" type="text/html" href="/blogs/tech-steps/archive/2012/07/10/sharepoint-2010-aprobaci-243-n-de-workflows-para-dispositivos-m-243-viles-parte-2-soluci-243-n.aspx" /><id>/blogs/tech-steps/archive/2012/07/10/sharepoint-2010-aprobaci-243-n-de-workflows-para-dispositivos-m-243-viles-parte-2-soluci-243-n.aspx</id><published>2012-07-10T20:39:00Z</published><updated>2012-07-10T20:39:00Z</updated><content type="html">&lt;p&gt;En la parte 1 de esta serie expliqu&amp;eacute; el problema de hacer una aprobaci&amp;oacute;n de un workflow basado en SharePoint Server 2010, SharePoint Designer 2010 e InfoPath 2010. Ahora es tiempo de explicar la soluci&amp;oacute;n al escenario.&lt;/p&gt;
&lt;p&gt;- Al finalizar la creaci&amp;oacute;n de un nuevo item dentro de la biblioteca de formularios, utilizando InfoPath, autom&amp;aacute;ticamente se dispara un correo electr&amp;oacute;nico de notificaci&amp;oacute;n a los aprobadores para que revisen la informaci&amp;oacute;n y procedan&amp;nbsp; a &amp;quot;Aprobar&amp;quot; o &amp;quot;No Aprobar&amp;quot;.&lt;/p&gt;
&lt;p&gt;- Este enlace adjunto al cuerpo del correo hace referencia a una p&amp;aacute;gina de webparts de SharePoint 2010 . Este enlace adjunto, adem&amp;aacute;s de la direcci&amp;oacute;n URL de la p&amp;aacute;gina, debe contener al menos dos par&amp;aacute;metros para poder actualizar un item de la biblioteca de formularios: ID del item, Estado de Aprobaci&amp;oacute;n, por ejemplo, 1 = Aprobado, 2 = No Aprobado.&lt;/p&gt;
&lt;p&gt;- Esta p&amp;aacute;gina de webparts funcionar&amp;aacute; como una interfaz de comunicaci&amp;oacute;n para hacer el llamado al servicio web de actualizaci&amp;oacute;n de items de una lista de SharePoint. Para lograr esto es necesario integrar c&amp;oacute;digo javascript dentro de un CEW. Este c&amp;oacute;digo debe ejecutar dos acciones:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; - Leer los par&amp;aacute;metros del URL enviado por correo.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; - Invocar al web service y enviar los valores requeridos para que actualicen un item de la biblioteca de formularios de SharePoint.&lt;/p&gt;
&lt;p&gt;- Una de las limitantes encontradas es que el servicio web no puede actualizar los valores de los campos de una biblioteca de formularios que fueron creados a partir de la plantilla de InfoPath. Siendo m&amp;aacute;s espec&amp;iacute;fico, mi plantilla de formulario InfoPath posee un campo llamado &amp;quot;AprobacionCE&amp;quot;, el mismo que durante el proceso de publicaci&amp;oacute;n fue considerado para que se presente en la bilbioteca de formularios del sitio SharePoint.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/2438.img5.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/2438.img5.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/8787.img6.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/8787.img6.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/1817.img7.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/1817.img7.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/6710.img7.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- Este campo, durante el proceso de publicaci&amp;oacute;n, debi&amp;oacute; ser configurado para que pueda ser modificado externamente, es decir, sin necesidad de InfoPath.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/3681.img8.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/3681.img8.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- Debido a la limitante antes expuesta es necesario crear un campo de apoyo para poder colocar el estado de aprobaci&amp;oacute;n, Aprobado / No Aprobado, y luego por medio de un workflow de SPD hacer la actualizaci&amp;oacute;n al campo respectivo del formulario de InfoPath.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/2235.img9.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/2235.img9.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;En la siguiente parte analizaremos el c&amp;oacute;digo C# inclu&amp;iacute;do en la plantilla del formulario de InfoPath 2010 para el env&amp;iacute;o del correo electr&amp;oacute;nico de notificaci&amp;oacute;n de aprobaci&amp;oacute;n.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1812659" width="1" height="1"&gt;</content><author><name>tech-steps</name><uri>http://msmvps.com/members/tech_2D00_steps/default.aspx</uri></author><category term="SharePoint 2010" scheme="http://msmvps.com/blogs/tech-steps/archive/tags/SharePoint+2010/default.aspx" /></entry></feed>