如何在 CRM 中 'fetchXml' 根据日期而不是时间进行记录?

How can I 'fetchXml' records according to date but not time in CRM?

我正在处理两个实体,约会和费用。我的目标是让新的费用记录在指定费用日期时自动填充其某些字段,onChange。它会触发一个查询,该查询应该 return 具有相同日期和拥有用户的记录。

这是我的代码:

function bringData()
{
    var date = Xrm.Page.getAttribute("new_tripDate").getValue();
    var owner = Xrm.Page.getAttribute("ownerid").getValue();
    if (owner != null)
        {
            var ownerID = owner[0].id;
            var ownerName = owner[0].name;    
        }

    var fetchXml="<fetch mapping='logical'>"+"<entity name='appointment'>"+"<attribute name='regardingobjectid'/>"+"<filter>"+"<condition attribute = 'ownerid' operator='eq' value='"+ownerID+"' />"+"<condition attribute='scheduledstart' operator='on' value='"+date+"' />"+"</filter>"+"</entity>"+"</fetch>";
    var retrievedAppointments = XrmServiceToolkit.Soap.Fetch(fetchXml);
    if (retrievedAppointments.length == 0)
        {
            alert("No matching records were found.");
            return;
        }
    else
        {
            console.log(retrievedAppointments);
        } 
}

它从当前费用页面获取日期并将其用于查询。但是,该函数在更改时给我一个错误,指出日期 "is invalid, or outside the supported range"。我从查询中删除了日期条件,它 returns 基于拥有用户的记录没问题。我认为问题在于约会实体中有指定时间,而不是费用日期,但我认为使用 "on" 条件运算符可以解决该问题。我很茫然。

谢谢

由 Xrm.Page.getAttribute("new_tripDate").getValue() 编辑的日期时间格式 return 是 fetch 无法处理的,您需要将其转换为 ISO Format 最低限度。

使用 ISOFormat 方法更改日期格式,或使用 moment.js 之类的库,或想出您自己的小辅助函数 return 格式正确的日期字符串。 用以下内容替换您的日期变量:

var date = new Date(Xrm.Page.getAttribute("new_tripDate").getValue()).toISOString();