Разработка
14
Окт
0

Программный импорт вложений в CRM

Не устраивает стандартный импорт файлов в CRM? Напишите свой! Например, с помощью консольного приложения. Код будет таким:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Client;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.Runtime.Serialization;
using System.IO;

namespace importAttachments
{
    class Program
    {
        static void Main(string[] args)
        {
            // Подключаемся к CRM
            ClientCredentials credentials = new ClientCredentials();
            credentials.Windows.ClientCredential = new System.Net.NetworkCredential("Administrator", "1qaz@WSX", "D2011");
            Uri uri = new Uri("http://crm2011:5555/superfirma/XRMServices/2011/Organization.svc");
            OrganizationServiceProxy proxy = new OrganizationServiceProxy(uri, null, credentials, null);
            proxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
            IOrganizationService service = (IOrganizationService)proxy;

            // Получаем полные имена к файлав в определенной папке
            string[] filePaths = Directory.GetFiles(@"c:\test\");

            // Просматриваем каждый их файлов
            foreach(string file in filePaths)
            {
                // Начинаем считываение файла
                FileInfo filePointer = new FileInfo(file);                
                FileStream fileStream = filePointer.OpenRead();
                
                // Кодируем содержимое файла используя base64
                byte[] byteData = new byte[fileStream.Length + 1];
                fileStream.Read(byteData, 0, (int)fileStream.Length);
                string encodedData = System.Convert.ToBase64String(byteData);
                
                // Закрываем поток
                fileStream.Close();

                // Формируем новое Примечание
                Entity iNote = new Entity("annotation");
                iNote["isdocument"] = true; // С типом "Вложение"
                iNote["objectid"] = new EntityReference("account", new Guid("10E25FE5-73E2-E111-B2D5-000C29CDB72E"));
                iNote["filename"] = filePointer.Name;
                iNote["subject"] = filePointer.Name;
                iNote.Attributes.Add("documentbody", encodedData);

                // Создаем Примечание
                service.Create(iNote);

                Console.WriteLine("Импортирован файл: " + filePointer.Name);                
            }

            Console.WriteLine("\nPress <Enter> to exit.");
            Console.ReadLine(); 
        }
    }
}

Этот код делает следующее:

  • Подключается CRM;
  • Возвращаем полные имена всех файлов из определенной папки;
  • Просматриваем по очереди все файлы и создаем на их основе Примечания в CRM.



Комментарии (0)

*

code