Javascript Dynamics CRM中的定期约会
看起来Dynamics不允许定期约会。我找到了一个用于定期服务活动的方法,但我并不真正了解它发送SOAP对象的部分。如果有人能提供帮助,我将不胜感激这可以通过工作流、在特定时间间隔或特定条件下创建活动来完成。。。CRM本身没有定期约会Javascript Dynamics CRM中的定期约会,javascript,dynamics-crm,Javascript,Dynamics Crm,看起来Dynamics不允许定期约会。我找到了一个用于定期服务活动的方法,但我并不真正了解它发送SOAP对象的部分。如果有人能提供帮助,我将不胜感激这可以通过工作流、在特定时间间隔或特定条件下创建活动来完成。。。CRM本身没有定期约会 另一个解决方法可能是通过Outlook客户端安排约会,并将客户端与CRM同步,但我没有测试此解决方案。这可以通过工作流、在特定时间间隔或特定条件下创建活动来完成。。。CRM本身没有定期约会 另一个解决方法可能是通过Outlook客户端安排约会,并将客户端与CRM同
另一个解决方法可能是通过Outlook客户端安排约会,并将客户端与CRM同步,但我没有测试此解决方案。这可以通过工作流、在特定时间间隔或特定条件下创建活动来完成。。。CRM本身没有定期约会
另一个解决方法可能是通过Outlook客户端安排约会,并将客户端与CRM同步,但我没有测试此解决方案。可以在MS CRM 4.0中创建重新预约,而无需使用工作流 我已经完成了一个创建服务活动的实现。我在服务活动实体中添加了两个新字段。 请阅读下面的详细实施: 实体名称:serviceappointment 添加两个新字段 新领域1 字段标签:重复频率 字段名称:新_重复活动 需求级别:无约束 字段类型:选取列表 字段值: 1-每日 2-每周 3-每两周一次 四个月 5-每两个月 6-每季度 7-半年一次 8年一次 新领域2 字段标签:周期性结束日期 字段名称:new_recurringenddate 字段类型:日期时间 字段格式:仅日期 需求级别:无约束 新领域的目的 字段名称:新_重复活动 目的:此字段将接受用户的重复频率 字段名称:new_recurringenddate 目的:此字段将接受用户提供的日期。它不会创建超出日期的任何活动。否则它将进入一个无止境的循环 代码片段1
代码片段2 //将此代码段添加到服务活动的OnSave事件中
// Function to format a date to the UTC format required by web services
function DateToUTCFormat(inputDate)
{
var date = inputDate.getDate();
var month = inputDate.getMonth()+1;
var year = inputDate.getYear();
var hours = inputDate.getHours();
var minutes = inputDate.getMinutes();
var ampm = " AM";
if (hours > 11)
{
ampm = " PM";
hours = hours - 12;
}
if (hours == 0)
{hours = 12;}
if (minutes < 10)
{var time = hours.toString() + ":0" + minutes.toString() + ":00" + ampm;}
else
{var time = hours.toString() + ":" + minutes.toString() + ":00" + ampm;}
var UTCDate = month.toString() + "/" + date.toString() + "/" + year.toString() + " " + time;
return UTCDate;
}
if (crmForm.all.new_recurringactivity.disabled == false && crmForm.all.new_recurringactivity.DataValue && crmForm.all.new_recurringactivity.DataValue)
{
var interval = 0;
switch (parseInt(crmForm.all.new_recurringactivity.DataValue))
{
case 1: // Daily (Please check the value you are getting from the CRM Form)
interval = 1;
break;
case 2: // weekly
interval = 7;
break;
case 3: // Fortnightly
interval = 14;
break;
case 4: // Monthly
interval = 30;
break;
case 5: // Bi-Monthly
interval = 60;
break;
case 6: // Quarterly
interval = 90;
break;
case 7: // Half Yearly
interval = 180;
break;
case 8: // Yearly
interval = 365;
break;
}
var recurringEnd = crmForm.all.new_recurringenddate.DataValue;
recurringEnd.setDate(recurringEnd.getDate()+1);
var activityStart = crmForm.all.scheduledstart.DataValue;
var activityEnd = crmForm.all.scheduledend.DataValue;
// Set the first reccuring appointment as per the recurring frequency opted by the user
activityStart.setDate(activityStart.getDate()+interval);
activityEnd.setDate(activityEnd.getDate()+interval);
// Prepare values for the new Service Activity
var subject = crmForm.all.subject.DataValue;
var regardingId = crmForm.all.regardingobjectid.DataValue[0].id;
var customerId = crmForm.all.customers.DataValue[0].id;
var serviceid = crmForm.all.serviceid.DataValue[0].id;
var resourceId = crmForm.all.resources.DataValue[0].id;
var ownerId = crmForm.all.ownerid.DataValue[0].id;
var new_recurringactivity = crmForm.all.new_recurringactivity.DataValue;
// Loop for the number of recurring Service Activities
while (activityStart < recurringEnd)
{
// Prepare the SOAP message.
var startUTC = DateToUTCFormat(activityStart);
var endUTC = DateToUTCFormat(activityEnd);
// alert("startUTC: "+startUTC);
var recurringEndUTC = DateToUTCFormat(recurringEnd);
var authenticationHeader = GenerateAuthenticationHeader();
var xml = "<?xml version='1.0' encoding='utf-8'?>" +
"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'"+
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"+
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+
authenticationHeader+
"<soap:Body>"+
"<Create xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+
"<entity xsi:type='serviceappointment'>"+
"<subject>"+subject+"</subject>"+
"<serviceid>"+serviceid+"</serviceid>"+
"<ownerid>"+ownerId+"</ownerid>"+
"<customers>"+
"<activityparty>"+
"<partyobjecttypecode>account</partyobjecttypecode>"+
"<partyid>"+customerId+"</partyid>"+
"<participationtypemask>11</participationtypemask>"+
"</activityparty>"+
"</customers>"+
"<resources>"+
"<activityparty>"+
"<partyobjecttypecode>systemuser</partyobjecttypecode>"+
"<partyid>"+resourceId+"</partyid>"+
"<participationtypemask>1</participationtypemask>"+
"</activityparty>"+
"</resources>"+
"<scheduledstart>"+startUTC+"</scheduledstart>"+
"<scheduledend>"+endUTC+"</scheduledend>"+
"<new_recurringenddate>"+recurringEndUTC+"</new_recurringenddate>"+
"<new_recurringactivity>"+new_recurringactivity+"</new_recurringactivity>"+
"</entity>"+
"</Create>"+
"</soap:Body>"+
"</soap:Envelope>";
// Prepare the xmlHttpObject and send the request.
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Create");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
// Capture the result
var resultXml = xHReq.responseXML;
// Check for errors.
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0)
{
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
// Notify user of Service Activity creation
else
{
// alert("Service Activity created on " + activityStart);
}
// Increment the next Service Actvity to be created by as per the recurring frequency opted by the user
activityStart.setDate(activityStart.getDate()+interval);
activityEnd.setDate(activityEnd.getDate()+interval);
}
} // Code block Ends
//将日期格式化为web服务所需的UTC格式的函数
函数DateToUTCFormat(inputDate)
{
var date=inputDate.getDate();
var month=inputDate.getMonth()+1;
var year=inputDate.getYear();
var hours=inputDate.getHours();
var minutes=inputDate.getMinutes();
var ampm=“AM”;
如果(小时数>11)
{
ampm=“PM”;
小时=小时-12;
}
如果(小时==0)
{小时=12;}
如果(分钟<10)
{var time=hours.toString()+“:0”+分钟。toString()+“:00”+ampm;}
其他的
{var time=hours.toString()+“:“+minutes.toString()+”:00“+ampm;}
var UTCDate=month.toString()+“/”+date.toString()+“/”+year.toString()+“+时间;
返回UTCDate;
}
if(crmForm.all.new\u recurringactivity.disabled==false&&crmForm.all.new\u recurringactivity.DataValue&&crmForm.all.new\u recurringactivity.DataValue)
{
var区间=0;
开关(parseInt(crmForm.all.new_recurringactivity.DataValue))
{
案例1://每日(请检查您从CRM表单中获得的值)
间隔=1;
打破
案例2://每周
间隔=7;
打破
案例3://每两周一次
间隔=14;
打破
案例4://每月
间隔=30;
打破
案例5://每两个月一次
间隔=60;
打破
案例6://季度
间隔=90;
打破
案例7://半年一次
间隔=180;
打破
案例8://每年
间隔=365;
打破
}
var recurringEnd=crmForm.all.new\u recurringenddate.DataValue;
recurringEnd.setDate(recurringEnd.getDate()+1);
var activityStart=crmForm.all.scheduledstart.DataValue;
var activityEnd=crmForm.all.scheduledendd.DataValue;
//根据用户选择的定期频率设置第一次预约
activityStart.setDate(activityStart.getDate()+间隔);
activityEnd.setDate(activityEnd.getDate()+间隔);
//为新服务活动准备值
var subject=crmForm.all.subject.DataValue;
var regardingId=crmForm.all.regardingobjectid.DataValue[0].id;
var customerId=crmForm.all.customers.DataValue[0].id;
var serviceid=crmForm.all.serviceid.DataValue[0].id;
var resourceId=crmForm.all.resources.DataValue[0].id;
var ownerId=crmForm.all.ownerId.DataValue[0].id;
var new_recurringactivity=crmForm.all.new_recurringactivity.DataValue;
//循环获取定期服务活动的数量
while(activityStart
问候,
Sarbashish Bhattacharjee可以在MS CRM 4.0中创建重新预约,而无需使用工作流
我已经完成了一个创建服务活动的实现。我在服务活动实体中添加了两个新字段。
请阅读下面的详细实施:
实体名称:serviceappointment
添加两个新字段
新领域1
字段标签:重复频率
字段名称:新_重复活动
需求级别:无约束
字段类型:选取列表
字段值:
1-每日
2-每周
3-每两周一次
四个月
5-每两个月
6-每季度
7-半年一次
8年一次
新领域2
字段标签:周期性结束日期
字段名称:new_recurringenddate
字段类型:日期时间
字段格式:仅日期
需求级别:无约束
新领域的目的
字段名称:新_重复活动
目的:此字段将接受用户的重复频率
字段名称:new_recurringenddate
用途:此字段将接受用户提供的日期。它不会创建超出该日期的任何活动。否则将
// Function to format a date to the UTC format required by web services
function DateToUTCFormat(inputDate)
{
var date = inputDate.getDate();
var month = inputDate.getMonth()+1;
var year = inputDate.getYear();
var hours = inputDate.getHours();
var minutes = inputDate.getMinutes();
var ampm = " AM";
if (hours > 11)
{
ampm = " PM";
hours = hours - 12;
}
if (hours == 0)
{hours = 12;}
if (minutes < 10)
{var time = hours.toString() + ":0" + minutes.toString() + ":00" + ampm;}
else
{var time = hours.toString() + ":" + minutes.toString() + ":00" + ampm;}
var UTCDate = month.toString() + "/" + date.toString() + "/" + year.toString() + " " + time;
return UTCDate;
}
if (crmForm.all.new_recurringactivity.disabled == false && crmForm.all.new_recurringactivity.DataValue && crmForm.all.new_recurringactivity.DataValue)
{
var interval = 0;
switch (parseInt(crmForm.all.new_recurringactivity.DataValue))
{
case 1: // Daily (Please check the value you are getting from the CRM Form)
interval = 1;
break;
case 2: // weekly
interval = 7;
break;
case 3: // Fortnightly
interval = 14;
break;
case 4: // Monthly
interval = 30;
break;
case 5: // Bi-Monthly
interval = 60;
break;
case 6: // Quarterly
interval = 90;
break;
case 7: // Half Yearly
interval = 180;
break;
case 8: // Yearly
interval = 365;
break;
}
var recurringEnd = crmForm.all.new_recurringenddate.DataValue;
recurringEnd.setDate(recurringEnd.getDate()+1);
var activityStart = crmForm.all.scheduledstart.DataValue;
var activityEnd = crmForm.all.scheduledend.DataValue;
// Set the first reccuring appointment as per the recurring frequency opted by the user
activityStart.setDate(activityStart.getDate()+interval);
activityEnd.setDate(activityEnd.getDate()+interval);
// Prepare values for the new Service Activity
var subject = crmForm.all.subject.DataValue;
var regardingId = crmForm.all.regardingobjectid.DataValue[0].id;
var customerId = crmForm.all.customers.DataValue[0].id;
var serviceid = crmForm.all.serviceid.DataValue[0].id;
var resourceId = crmForm.all.resources.DataValue[0].id;
var ownerId = crmForm.all.ownerid.DataValue[0].id;
var new_recurringactivity = crmForm.all.new_recurringactivity.DataValue;
// Loop for the number of recurring Service Activities
while (activityStart < recurringEnd)
{
// Prepare the SOAP message.
var startUTC = DateToUTCFormat(activityStart);
var endUTC = DateToUTCFormat(activityEnd);
// alert("startUTC: "+startUTC);
var recurringEndUTC = DateToUTCFormat(recurringEnd);
var authenticationHeader = GenerateAuthenticationHeader();
var xml = "<?xml version='1.0' encoding='utf-8'?>" +
"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'"+
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"+
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+
authenticationHeader+
"<soap:Body>"+
"<Create xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+
"<entity xsi:type='serviceappointment'>"+
"<subject>"+subject+"</subject>"+
"<serviceid>"+serviceid+"</serviceid>"+
"<ownerid>"+ownerId+"</ownerid>"+
"<customers>"+
"<activityparty>"+
"<partyobjecttypecode>account</partyobjecttypecode>"+
"<partyid>"+customerId+"</partyid>"+
"<participationtypemask>11</participationtypemask>"+
"</activityparty>"+
"</customers>"+
"<resources>"+
"<activityparty>"+
"<partyobjecttypecode>systemuser</partyobjecttypecode>"+
"<partyid>"+resourceId+"</partyid>"+
"<participationtypemask>1</participationtypemask>"+
"</activityparty>"+
"</resources>"+
"<scheduledstart>"+startUTC+"</scheduledstart>"+
"<scheduledend>"+endUTC+"</scheduledend>"+
"<new_recurringenddate>"+recurringEndUTC+"</new_recurringenddate>"+
"<new_recurringactivity>"+new_recurringactivity+"</new_recurringactivity>"+
"</entity>"+
"</Create>"+
"</soap:Body>"+
"</soap:Envelope>";
// Prepare the xmlHttpObject and send the request.
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Create");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
// Capture the result
var resultXml = xHReq.responseXML;
// Check for errors.
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0)
{
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
// Notify user of Service Activity creation
else
{
// alert("Service Activity created on " + activityStart);
}
// Increment the next Service Actvity to be created by as per the recurring frequency opted by the user
activityStart.setDate(activityStart.getDate()+interval);
activityEnd.setDate(activityEnd.getDate()+interval);
}
} // Code block Ends
"<resources>"+
"<activityparty>"+
"<partyobjecttypecode>systemuser</partyobjecttypecode>"+
"<partyid>"+resourceId+"</partyid>"+
"<participationtypemask>1</participationtypemask>"+
"</activityparty>"+
"</resources>"+
"<partyobjecttypecode>systemuser</partyobjecttypecode>"+