我是CRM的新手,我正在谷歌搜索如何使用jScript库MS CRM(在线)隐藏和显示文本字段,并找到了使用该功能的几个选项setVisible.
我试过这些选择:
Xrm.Page.ui.tabs.get('new_fieldname').setVisible(false);Xrm.Page.data.entity.attributes.get('new_fieldname').setVisible(false);Xrm.Page.getAttribute('new_fieldname').controls.get(0).setVisible(false);但只有最后一个才真正起作用.第一个选项给我一个错误信息.
他们之间有什么不同?
我已经构建了以下LINQ查询
var activeMembers = from m in context.py3_membershipSet
join c in context.ContactSet on m.py3_Member.Id equals c.ContactId
where m.statuscode.Value == 1
orderby m.py3_name
select m;
Run Code Online (Sandbox Code Playgroud)
但我已经看到一个格式如下的示例:
var contacts =
(
from c in xrm.ContactSet
join a in xrm.AccountSet on c.ParentCustomerId.Id equals a.Id
where a.Name == "Acme Pty Ltd"
select new
{
Name = c.FullName,
DOB = c.BirthDate,
Gender = (c.FormattedValues.Contains("gendercode") ? c.FormattedValues["gendercode"] : "Ambiguous")
}
);
Run Code Online (Sandbox Code Playgroud)
(我意识到这是一组不同的数据)在这种情况下,包含'select new'实际上做了什么?
它比第一个代码块中的示例有什么好处?
我意识到有些人可能会觉得这是一个乏味的问题,但我想学习LINQ并且需要快速学习它.但我也不想在客户端实时CRM上运行一些我不完全理解的东西
我有一条 JSON 消息要使用包含另一个对象的 JSON 的字符串属性进行反序列化。我有以下课程
public class Envelope
{
public string Type { get; set; }
public Message InnerMessage { get; set; }
}
public class Message
{
public string From { get; set; }
public string To { get; set; }
public string Body { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我收到的 JSON 消息采用以下格式:
{
Type : "send",
InnerMessage : "{ From: \"sender\", To: \"receiver\", Body: \"test\" }"
}
Run Code Online (Sandbox Code Playgroud)
请注意,它InnerMessage包含类的序列化Message,而不是类的 JSON。
InnerMessage如果我将属性的类型保留为Message,标准 JSON.NET 反序列化将失败。 …
我们的一个程序允许用户通过选择视图然后点击功能区按钮批量插入相关记录.保存表单,设置标志,然后插件完成其工作.
我们正在使用带有视图选择器的子网格,以便用户动态选择或创建自己的视图.选择视图后,将显示结果数(提供的值为lte 5k).
当插件运行fetchxml服务器端(检索userquery或savedquery,然后是Retrieve + FetchExpression)时,结果会发生变化.我们不仅获得不同数量的记录,而且还有一些记录不同.
我们的结论是,这个问题与时区有关.一些过滤器包括"on-or-after"运算符以及日期值.例:
<filter type="and">
<condition attribute="modifiedon" operator="on-or-after" value="2011-01-01" />
<condition attribute="modifiedon" operator="on-or-before" value="2011-12-31" />
</filter>
Run Code Online (Sandbox Code Playgroud)
该插件以管理员身份运行.更改插件用户无效 - 就像使用FetchExpression从CRM中提取记录时不考虑当前用户时区一样.
如何确保fetchxml表达式在客户端和服务器端返回相同的结果?
可能相关:MSDN线程.
谢谢你的时间.
编辑:按照Daryl的建议,我运行了一条SQL跟踪.结果令人费解.对于客户端查询,日期是正确偏移的(从CRM运行,即高级查找) - 这意味着fetchxml使用用户的时区设置正确转换.服务器端的同一查询不会发生这种情况; 输出SQL包含"原样"的日期过滤器,没有时区偏移量.无论查询执行上下文的来源如何,我都假设发生了相同的翻译.
编辑2:隐藏的代码区域(我的上一个调试手段)中的标志阻止插件在运行用户的上下文中实例化服务.一切都运行良好.感谢大家的时间和帮助,非常感谢.
我正在尝试使用fetchxml从另一条记录中获取值以创建一个新记录.除了从选项集或查找字段中获取任何值之外,我已设法完成所有工作.选项集不给出任何错误,但只是根本不设置字段,查找说GUID格式不正确,可能是因为它没有通过GUID.
任何人都可以帮我弄清楚如何获得这些价值观?
谢谢
编辑:我的代码如下.选项集是评分(ts_grading)及其我需要从fetch中获取的qualityStatement Guid(ts_quality_statement_id).
string fetchXml = @"<fetch distinct='false' mapping='logical' output-format='xml-platform' version='1.0'>
<entity name='ts_self_assessment_item'>
<attribute name='ts_evidence_of_areas_of_improvement'/><attribute name='ts_evidence_of_strengths'/><attribute name='ts_expected_completion_date'/>
<attribute name='ts_grading'/><attribute name='ts_quality_statement_id'/>
<filter type='and'>
<condition attribute='ts_self_assessment_id' uitype='ts_self_assessment' operator='eq' value='" + selfAssessmentID + "'/></filter></entity></fetch>";
// Execute Fetch xml
EntityCollection selfAssessmentItemResult = Service.RetrieveMultiple(new FetchExpression(fetchXml));
foreach (var selfAssessment in selfAssessmentItemResult.Entities)
{
string areasOfImprovement = selfAssessment["ts_evidence_of_areas_of_improvement"].ToString();
string strengths = selfAssessment["ts_evidence_of_strengths"].ToString();
DateTime completionDate = Convert.ToDateTime(selfAssessment["ts_expected_completion_date"].ToString());
string grading = selfAssessment["ts_grading"].ToString();
Guid qualityStatement = new Guid(selfAssessment["ts_quality_statement_id"].ToString());
Guid parentSelfAssessment = new Guid(entity.Attributes["ts_self_assessmentid"].ToString());
}
}
Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用Dynamics CRM 2011 SDK中的Merge示例. http://msdn.microsoft.com/en-us/library/hh547408.aspx
我修改了一下.我创建了两个Contacts而不是Accounts(尽管代码中的某些变量名称可能会另有说明.例如,_account1Id实际上是contact1的GUID.)
第一个联系人记录包含姓名,姓氏和电话字段.第二个联系人记录填写了姓名,姓氏和电子邮件字段.
合并发生的部分如下.可以从顶部的链接看到原始代码.
当我运行以下修改的示例时,电子邮件地址不会合并到新的联系人记录中.我得到的是一个合并的联系人与其中一个记录的值,添加了地址数据,但没有电子邮件.我认为这应该用第二条记录中的非空字段填充主记录的空字段.
作为Dynamics CRM的新手,我经过大量的谷歌搜索和调试后无法理解原因.如果有人可以就问题可能给我一些反馈,我会很高兴的.
提前致谢.
_serviceProxy.EnableProxyTypes();
CreateRequiredRecords(); // created two contacts with same name, surname. first record has telephone1 filled, second record has emailaddress filled.
EntityReference target = new EntityReference();
target.Id = _account1Id;
target.LogicalName = Contact.EntityLogicalName;
MergeRequest merge = new MergeRequest();
merge.SubordinateId = _account2Id;
merge.Target = target;
merge.PerformParentingChecks = false;
Contact updateContent = new Contact();
updateContent.Address1_Line1 = "test";
merge.UpdateContent = updateContent;
MergeResponse merged = (MergeResponse)_serviceProxy.Execute(merge);
Contact mergeeAccount =
(Contact)_serviceProxy.Retrieve(Contact.EntityLogicalName,
_account2Id, new ColumnSet(allColumns: true)); …Run Code Online (Sandbox Code Playgroud) 如果单击自定义功能区按钮,是否可以使用JavaScript打开现有实体表单,或者是否有其他方法可以打开现有表单(例如,活动表单)?
我需要检查并查看用户是否在特定团队中.我假设我必须从团队开始,但我并不确定.只需查看并查看用户所属的所有团队就更容易了.有人在插件中有一个使用N:N关系的例子吗?
这是我到目前为止的代码......
// Set the properties of the QueryExpression object.
teamQuery.EntityName = "team";
teamQuery.AddAttributeValue("name", "Team");
teamQuery.ColumnSet = teamColumnSet;
EntityCollection teamDetail = service.RetrieveMultiple(teamQuery);
foreach (var teamDetail in teamDetail.Entities)
{
teamGuid = teamDetail.Id;
}
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!!
加里
我正在创建一个插件,Dynamics CRM 2011以便在获得领先资格时执行.我用这个代码
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = factory.CreateOrganizationService(null);
Entity curEntity = (Entity)context.InputParameters["Target"];
Run Code Online (Sandbox Code Playgroud)
但当我得到context.InputParameters["Target"]它时说没有找到钥匙.如何在获得潜在客户资格时获得主导实体?
如何使用 Dynamics CRM 中的插件设置查找字段的值?我正在使用下面的代码,但它不起作用。
Entity ent = (Entity)service.Retrieve("mdoc_sentence", sGUID, new ColumnSet(new string[]{ "lookupFiled"} );
ent["lookupFiled"] = "baa25488-6d99-es11-99da-225056836fb7";
service.Update(ent);
Run Code Online (Sandbox Code Playgroud)