Javascript Dynamics CRM中的定期约会

Javascript Dynamics CRM中的定期约会,javascript,dynamics-crm,Javascript,Dynamics Crm,看起来Dynamics不允许定期约会。我找到了一个用于定期服务活动的方法,但我并不真正了解它发送SOAP对象的部分。如果有人能提供帮助,我将不胜感激这可以通过工作流、在特定时间间隔或特定条件下创建活动来完成。。。CRM本身没有定期约会 另一个解决方法可能是通过Outlook客户端安排约会,并将客户端与CRM同步,但我没有测试此解决方案。这可以通过工作流、在特定时间间隔或特定条件下创建活动来完成。。。CRM本身没有定期约会 另一个解决方法可能是通过Outlook客户端安排约会,并将客户端与CRM同

看起来Dynamics不允许定期约会。我找到了一个用于定期服务活动的方法,但我并不真正了解它发送SOAP对象的部分。如果有人能提供帮助,我将不胜感激

这可以通过工作流、在特定时间间隔或特定条件下创建活动来完成。。。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>"+