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


MVP 2010, 2011
- Консалтинг
- Проектирование
- Разработка
- Обучение
MVP 2010, 2011
Перенос участников между маркетинговыми списками
Запись от Артем Enot Грунин размещена 16.02.2010 в 16:44
Теги java script, list, unsupport
Давеча на форуме задавался вопрос каким образом можно перенести (не скопировать, а именно перенести) выбранных участников из одного маркетингового списка в другой. Задача показалась мне разумной и интересной, так что я потратил немного времени чтобы ее реализовать:
Конечно, это не самое лучшее решение - если по уму, то нужно делать свою страницу и вызывать ее из кода ISV кнопки, которую поместить на грид сущности listmember... Постойте, а кто-нибудь вообще видит такую сущность в списке кастомизаций? Вот и я нет. Гриды у listmember, надо сказать, тоже весьма условные - в них показываются объекты другого типа. Словом, ISV.config в этом случае не работает. Ну а рас уж приходится прибегать к извращениям чтобы добавить нужный элемент меню, то не вижу большого зла в том, чтобы добавить туда еще немного unsupport, и для выполнения логики вызывать системные скрипты. Поочередно вызывая системные функции копирования и удаления выбранных участников, мы в итоге получим нужный нам результат - перенос. Минус только один: перед удалением система запросит у нас подтверждение, что, впрочем, можно отнести и к плюсам. В качестве первого приближения, думаю, данный подход потянет.
Идея подмены loadarea взята отсюда: Change Cases Associated Default View.
Инъекция кода меню из другого моего поста: Отклик от кампании.
Сама задача обсуждается тут: PostBack, Удаление listmember из маркетинговых списков.
Код:
//<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>
Идея подмены loadarea взята отсюда: Change Cases Associated Default View.
Инъекция кода меню из другого моего поста: Отклик от кампании.
Сама задача обсуждается тут: PostBack, Удаление listmember из маркетинговых списков.
Всего комментариев 0



