Blog de P@blo - Sharepoint Server

Recent Posts

Tags

News



  • Locations of visitors to this page
    En poco incluiré algunos posts sobre workflow con Microsoft Office Sharepoint Server 2007 ó Windows Sharepoint Services v3.
    Ahora le toco el turno a la integración de Exchange Server 2007 con una central IP-PBX, encontré una muy buena que puede ser configurada a nivel de software: http://www.3cx.com/, pruébenla...!!!
    Probando Office Communications Server (OCS) 2007, más allá de probar la mensajería instantánea tradicional, la característica de Web Conference era muy esperada desde la desaparición de su similar con Exchange Conference Server 2000. Más información http://office.microsoft.com/en-us/communicationsserver/default.aspx

Community

Email Notifications

Recursos Técnicos

Herramientas

Blogs destacados

Archives

August 2012 - Posts

Sharepoint 2010 + Infopath 2010: The operation could not be completed

En un formulario de Infopath, al crear una nueva conexión de extracción de datos, se presentó el siguiente mensaje de error:

En mi escenario, se creó 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ón de sitios en el sitio raiz de IIS.

Para solucionar el problema ejecutar el siguiente procesimiento:

- Utilizar la consola de Administración Central de Sharepoint para crear una colección de sitios en el sitio raiz de IIS (Sitio Web por Defecto).

- Crear nuevamente la conexión de recepción de información en el formulario de Infopath.

 

 

Como siempre espero esta información sea de su utilidad.

Sharepoint 2010: Como ampliar el tamaño de un campo de tipo "Búsqueda" (Lookup) en una lista personalizada

En una lista de Sharepoint, un campo de tipo Lookup se utiliza para hacer referencia a una lista que contiene las opciones o infomación que requerimos. Por ejemplo, en una lista personalizada de Sharepoint puedo mantener el registro de varios documentos de la organizació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 y además se van a seleccionar varios documentos, la vista del campo relacionado es similar a la siguiente figura:

 

El campo "Documentos Relacioados" se encuentra configurado de la siguiente forma:

 Para ampliar el tamaño de la columna "Documentos Relacionados" se considera la cadena de caracteres de mayor longitud. Es necesario editar la página en donde se encuentre el campo de tipo "Lookup" e insertar un webpart de tipo WCE (Web Content Editor), editar el código HTML e ingresar el siguiente código:

<script src="/ScriptsDocumentos/jquery-1.7.2.min.js" type="text/javascript"></script><script src="/ScriptsDocumentos/jquery.SPServices-0.7.1a.min.js" type="text/javascript"></script><script type="text/javascript">

$(document).ready(function() {

$().SPServices.SPSetMultiSelectSizes({

multiSelectColumn: "Documentos Relacionados"

});

}); </script>

El efecto posterior al ingreso del script es el siguiete:

Los archivos: jquery-1.7.2.min.js y jquery.SPServices-0.7.1a.min.js, pueden descargarlo de este enlace:  http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tech-steps.Sharepoint2010/2337.JScripts.zip, recuerden incluirlos en una biblioteca de Sharepoint y hacer la referencia correcta al momento de escribir el código en el WCE.

Como enviar archivos adjuntos de Infopath 2010 como adjuntos de correo electrónico.

El reto de hoy es generar el código necesario para poder enviar un documento adjunto de un formulario de Infopath 2010 como un adjunto de un correo electrónico. Como base es necesario tener al menos un control de tipo adjunto y un botón en el formulario. En el botón es necesario ingresar el siguiente código:

- Importante incluir las siguientes referencias:

using System.IO;
using System.Net.Mail;
using System.Text;

- Algunas variables y constantes necesarias para el proceso:

private const int SP1Header_Size = 20;
private const int FIXED_HEADER = 16;
private int fileSize;
private int attachmentNameLength;
private string attachmentName;
private byte[] decodedAttachment;

- Dos funciones principales que cumplen la función de decodificadores del archivo adjunto:

public void InfoPathAttachmentDecoder(string theBase64EncodedString)
  {
   byte [] theData = Convert.FromBase64String(theBase64EncodedString);
   using(MemoryStream ms = new MemoryStream(theData))
   {
    BinaryReader theReader = new BinaryReader(ms);   
    DecodeAttachment(theReader);
   }
  }

  private void DecodeAttachment(BinaryReader theReader)
  {
   //Position the reader to obtain the file size.
   byte[] headerData = new byte[FIXED_HEADER];
   headerData = theReader.ReadBytes(headerData.Length);

   fileSize = (int)theReader.ReadUInt32();
   attachmentNameLength = (int)theReader.ReadUInt32() * 2;
   
   byte[] fileNameBytes = theReader.ReadBytes(attachmentNameLength);
   //InfoPath uses UTF8 encoding.
   Encoding enc = Encoding.Unicode;
   attachmentName = enc.GetString(fileNameBytes, 0, attachmentNameLength - 2);
   decodedAttachment = theReader.ReadBytes(fileSize);
  }

- Y finalmente la llamada a los procedimientos en el botón del formularios, este código aplica cuando es un solo campo de documento adjunto:

 XPathNavigator Adjunto = this.MainDataSource.CreateNavigator().SelectSingleNode("/my:misCampos/my:Adjuntos/my:Documento", this.NamespaceManager);
String textoAdjunto = Adjunto.Value;
if (textoAdjunto.Length > 0)
{
                InfoPathAttachmentDecoder(textoAdjunto);
                MemoryStream streamAdjunto = new MemoryStream(decodedAttachment);
                Attachment adjuntoCorreo = new Attachment(streamAdjunto, attachmentName);
                MailMessage mail = new MailMessage();
                SmtpClient SMTPServer = new SmtpClient("servidor_correo");
                mail.From = new MailAddress("remitente@midominio.com");
                mail.To.Add("destinatario@otrodominio.com");
                mail.Subject = "Adjunto desde Infopath";
                mail.Body = "prueba";
                mail.Attachments.Add(adjuntoCorreo);
                SMTPServer.Send(mail);
}

- Este código aplica cuando es una tabla de repetición:

XPathNavigator root = MainDataSource.CreateNavigator();
XPathNodeIterator RepTable = root.Select("/my:misCampos/my:Adjuntos", NamespaceManager);
MailMessage mail = new MailMessage();
SmtpClient SMTPServer = new SmtpClient("servidor_correo");
mail.From = new MailAddress("remitente@midominio.com");
mail.To.Add("destinatario@otrodominio.com");
mail.Subject = "Adjuntos desde infopath";
mail.Body = "prueba";
while (RepTable.MoveNext())
{
                XPathNavigator Adjunto = RepTable.Current.SelectSingleNode("my:Documento", NamespaceManager);
                String textoAdjunto = Adjunto.Value;               
                if (textoAdjunto.Length > 0)
                {
                    InfoPathAttachmentDecoder(textoAdjunto);
                    MemoryStream streamAdjunto = new MemoryStream(decodedAttachment);
                    Attachment adjuntoCorreo = new Attachment(streamAdjunto, attachmentName);
                    mail.Attachments.Add(adjuntoCorreo);                   
                }
}
SMTPServer.Send(mail);

Algunos enlaces de referencia:

- http://support.microsoft.com/kb/2517906

- http://support.microsoft.com/kb/892730

- http://www.csharp411.com/c-convert-string-to-stream-and-stream-to-string/

- http://social.msdn.microsoft.com/Forums/en-US/sharepointinfopath/thread/87e79f00-0277-4dbe-9092-c9e9bafe23a0/