AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Blogs
CRM
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.01.2012, 18:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,459 / 846 (79) +++++++
Регистрация: 28.10.2006
axforum blogs: Импорт участников маркетингового списка из Excel
Источник: http://axforum.info/forums/blog.php?b=308
==============

Загрузка участников маркетингового списка, или позиций прайслиста из Excel файла, является камнем преткновения уже не одной версии CRM. Менялся механизм импорта, писались утиллиты, а воз, кажется, и ныне там. Сегодня я попытаюсь решить эту проблему для всего разумного человечества или хотя бы его части!
Итак, стандартный механизм удобен тем что он:
  • Стандартный!
  • Умеет быстро делать сопоставления
  • Умеет массово грузить и связывать несколько объектов в одном задании
  • Имеет гибкие настройки поиска и сопоставления идентификаторов
Плохо только одно - он не может загружать связи N:N.
Когда я понял, что не хочу еще раз реализовывать все это, идея пришла достаточно быстро:
  1. Создаем свой кастомный объект ListMember
  2. Настраиваем в нем связи с List, Contact, Account, Lead.
  3. Стандартными средствами создаем шаблон для импорта этого объекта.
  4. Пишем плагин который асинхронно срабатывает на событие post-create объекта ListMember, вынимает из него ListId и при помощи AddMemberListRequest добавляем в него ContactId, AccountId или LeadId - в зависимости от того, что было указано в файле импорта!
На мой взгляд, это крайне элегантное решение, так как не требует больших трудозатрат и максимально полно использует стандартный функционал. В случае возникновения ошибок (например, неправильный тип списка) они будут отражаться в ошибках импорта как и все прочие!

X++:
IPluginExecutionContext context = localContext.PluginExecutionContext; // Используется CRM Developer Toolkit if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { Entity entity = (Entity)context.InputParameters["Target"]; fixrm_ListMember listMember = entity.ToEntity(); EntityReference listId = listMember.fixrm_ListId; if (listId != null) { AddMemberListRequest request = new AddMemberListRequest(); request.ListId = listId.Id; EntityReference accountId = listMember.fixrm_AccountId; if (accountId != null) { request.EntityId = accountId.Id; } else { EntityReference contactId = listMember.fixrm_ContactId; if (contactId != null) { request.EntityId = contactId.Id; } else { EntityReference leadId = listMember.fixrm_LeadId; if (leadId != null) { request.EntityId = leadId.Id; } } } IOrganizationService service = localContext.OrganizationService; service.Execute(request); } }
Неуправляемое решение и проект выложу чуть позже, как только нормально портирую его на "чистую" версию системы.


Источник: http://axforum.info/forums/blog.php?b=308
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DynamicsAxSCM: Visualizing Security in Microsoft Dynamics AX 2012 Blog bot DAX Blogs 0 29.08.2011 13:11
crminthefield: How to Create a Silverlight Web Resource that Interacts with CRM 2011 Forms Blog bot Dynamics CRM: Blogs 0 24.06.2011 04:17
axforum blogs: Импорт в Excel из CRM Blog bot Dynamics CRM: Blogs 0 14.02.2011 11:11
DynamicsAxSCM: Personalization of Role Centers in Dynamics AX 2009 Blog bot DAX Blogs 0 21.06.2010 16:05
Список участников маркетингового списка koalex Dynamics CRM: Функционал 4 25.04.2008 09:04
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:20.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.