Por eso he intentado buscar alguna forma no soportada de realizarlo, ya que al final los ficheros en CRM están almacenados en el SQL Server.
Los adjuntos se encuentran en el campo "DocumentBody" de la tabla "Annotation" y están almacenados en campos de tipo "text" en formato Base64.
Para accededer a los mismos hay que hacer una consulta SQL como la siguiente:
SELECT FileName,FileSize, DocumentBody
FROM FilteredAnnotation
WHERE FileName is not null
AND ObjectId=<Guid de la entidad>
Así, una vez recogidos los resultados de la consulta, hay que convertir esos ficheros en Base64 a ficheros físicos en el disco duro.
Byte[] filebytes = Convert.FromBase64String(Registro["DocumentBody"].ToString());
FileStream fs = new FileStream("C:\\Adjuntos\\" + Registro["FileName"].ToString() , FileMode.CreateNew, FileAccess.Write, FileShare.None);
fs.Write(filebytes, 0, filebytes.Length);
fs.Close();
En este ejemplo de código "Registro" es un DataRow, que se ha recogido de hacer la consulta SQL anterior, y los ficheros son almacenados en la carpeta "C:\Adjuntos\".
un saludo
Hola buenos dias, antes que nada gracias por este post es justo lo que estoy buscando, tengo una pregunta, este codigo donde lo ejecutas "Byte[] filebytes = Convert.FromBase64String(Registro["DocumentBody"].ToString());
ResponderEliminarFileStream fs = new FileStream("C:\\Adjuntos\\" + Registro["FileName"].ToString() , FileMode.CreateNew, FileAccess.Write, FileShare.None);
fs.Write(filebytes, 0, filebytes.Length);
fs.Close();"
Gracias por el apoyo
Saludos