AXForum  
Вернуться   AXForum > Блоги > CRM, SharePoint и Черная Магия
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
  • Консалтинг
  • Проектирование
  • Разработка
  • Обучение


MVP 2010, 2011
Оценить эту запись

Перенос участников между маркетинговыми списками

Запись от Артем Enot Грунин размещена 16.02.2010 в 16:44

Давеча на форуме задавался вопрос каким образом можно перенести (не скопировать, а именно перенести) выбранных участников из одного маркетингового списка в другой. Задача показалась мне разумной и интересной, так что я потратил немного времени чтобы ее реализовать:
Код:
//<List.OnLoad>
var oMenuItemText = "Перенести в другой список";

var _loadarea = loadArea;
loadArea = function(sArea, sParams, sUrl, bIsvMode)
{
    _loadarea(sArea, sParams, sUrl, bIsvMode);

    if (sArea != "areaListMember") return;

    var oFrame = document.getElementById(sArea + "Frame");
    oFrame.onreadystatechange = function()
    {
        if (oFrame.readyState == "complete")
        {
            var odoc = oFrame.contentWindow.document;
            AddMenuItem(odoc);
        }
    }
}

var AddMenuItem = function(oDocument)
{
    var oId = '_MImoveListMember';

    var oAction = 'action="'; 
    // Вызов функции копирования в другой список
    oAction += "doAction('crmGrid', '4301', 'copylistmember');";
    // Вызов функции удаления из текущего списка
    oAction += "doActionEx('crmGrid', '4301', top.crmFormSubmit.crmFormSubmitId.value, 'delete', top.crmFormSubmit.crmFormSubmitObjectType.value, 'tab=areaListMember');";
    oAction += '"';

    var oMenuItemHtml = '<LI class="ms-crm-MenuItem-Label" id="' + oId + '" ' + oAction + '></LI>';
    var oMenu = oDocument.getElementById("mnuMoreActions");

    var oItem = oMenu.appendChild(oDocument.createElement(oMenuItemHtml));
    oItem.innerHTML = '<SPAN class="ms-crm-MenuItem-Label">' +
                    '<A class="ms-crm-MenuLink" onclick="return false;" href="javascript:onclick();" target="_self">' +
                        '<SPAN class="ms-crm-MenuItem-Icon"></SPAN>' +
                        '<SPAN class="ms-crm-MenuItem-Text">' +
                            oMenuItemText +
                        '</SPAN>' +
                    '</A>' +
                '</SPAN>';
}
//</List.OnLoad>
Конечно, это не самое лучшее решение - если по уму, то нужно делать свою страницу и вызывать ее из кода ISV кнопки, которую поместить на грид сущности listmember... Постойте, а кто-нибудь вообще видит такую сущность в списке кастомизаций? Вот и я нет. Гриды у listmember, надо сказать, тоже весьма условные - в них показываются объекты другого типа. Словом, ISV.config в этом случае не работает. Ну а рас уж приходится прибегать к извращениям чтобы добавить нужный элемент меню, то не вижу большого зла в том, чтобы добавить туда еще немного unsupport, и для выполнения логики вызывать системные скрипты. Поочередно вызывая системные функции копирования и удаления выбранных участников, мы в итоге получим нужный нам результат - перенос. Минус только один: перед удалением система запросит у нас подтверждение, что, впрочем, можно отнести и к плюсам. В качестве первого приближения, думаю, данный подход потянет.

Идея подмены loadarea взята отсюда: Change Cases Associated Default View.
Инъекция кода меню из другого моего поста: Отклик от кампании.
Сама задача обсуждается тут: PostBack, Удаление listmember из маркетинговых списков.
Размещено в CRM
Просмотров 18090 Комментарии 0
Всего комментариев 0

Комментарии

 


Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:07.