我如何查询CRM Dynamics以获得前50条记录(如sqlserver中的top)。
谢谢,
使用Microsoft Dynamics AX 2012.
我有一个listpage form具有引用ListPageInteraction类,只是想改变一些控件的标签/标题.为此,我需要做一些事情:
element.form().design().control('<YourControlName>');
但我不能在ListPageInteraction课堂上得到这种方法.我决定研究类的初始化方法.但是没有办法去从那里的形式,我怎么去控制和设置标签?
我一直在尝试使用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) 我需要检查并查看用户是否在特定团队中.我假设我必须从团队开始,但我并不确定.只需查看并查看用户所属的所有团队就更容易了.有人在插件中有一个使用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)
感谢您的帮助!!
加里
如何打开在SysQueryForm中作为容器保存在表中的查询,编辑查询,然后再次将其保存在表中?
我已经知道如何将其保存到表中并从表中读取它,但是我无法找到如何在SysQueryForm中打开查询并让用户对其进行编辑然后保存的方法。
要么
有什么好方法可以存储或查询用户可以调整并可以在代码中运行的查询?
我使用JavaScript根据某些选项设置所需的字段级别,该字段显示为可选,但表单无法保存,请填写此字段.
我的代码
Xrm.Page.ui.controls.get("new_field").setRequiredLevel("none");
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会发生这种情况我试图使用此代码隐藏字段
Xrm.Page.ui.controls.get("new_field").setVisible(false);
Run Code Online (Sandbox Code Playgroud)
它隐藏了该字段,但是当我按下保存时,该字段再次显示为魅力,无法保存表单.
是否有方法检查是否从数据库中检索字段?我创建了一些从不同位置调用的逻辑.但是从某些位置,使用字段列表选择表缓冲区.我想只在没有检索到字段的情况下再次执行查询.获取正确记录的查询非常繁重,在大多数情况下,该字段将为空.
Common o;
o = args.caller();
if(!isFieldRetrievedFromDatabase(o.(fieldId)))
{
o = refetch(o);
}
//execute logic for o
Run Code Online (Sandbox Code Playgroud) 我需要定期(即每晚)与CRM单向同步外部数据.
这包括创建新记录以及更新现有记录.
这意味着,我必须跟踪由同步过程创建的CRM实体的ID.
强调textI我已经设法从数据库表行创建和更新CRM中的记录,所以这不是问题.
id:插入新行时表的主键设置new_myentityid:映射实体的主要属性,在同步过程创建记录之后设置new_name etc:记录属性的值我没有id在数据库中拥有一个PrimaryKey()并new_myentityid在一个单独的列中跟踪CRM ID(),我还可以摆脱id-columns并制作表的CRM-ID-Column(new_myentityid)主键,插入新记录(当将其设置newid()),所以基本上代替id与new_myentityid从数据库的角度.然后我可以通过ExecuteMultipleRequest组合来批量upsert UpsertRequest.
这样,我会在每个映射表中保存一列,以及在创建它们之后存储CRM ID的逻辑.
这是可以接受的还是有什么东西可以让我避免这种情况?
有没有办法绕过返回的fetchXML值返回正确的链接实体逻辑名称命名,而不是构建命名,如:
customer_contact1_x002e_contactid
customer_contact1_x002e_fullname
Run Code Online (Sandbox Code Playgroud)
我从请求中删除了所有别名.这是什么,不能在请求中修复?或者它是由Microsoft CRM推出的用于指定实体关系的"尾巴",我所能做的就是在响应中使用它?
我正在寻找一种方法来为某些表启用日志记录更改.
我已经尝试并测试过以编程方式将表添加到数据库日志中,但到目前为止取得了各种成功 - 有时它有时它不起作用(大多数情况下它没有) - 似乎只是将行插入DatabaseLog表中并不是很有效.
我尝试过:
使用正确的tableId,fieldId,logType和添加行.
域名已被指定为"管理员",主要公司,空白场和子公司,结果相同.
我创建了处理插入的类,主要的两个函数是:
public static void InsertBase(STR tableName, domainId _domain='Admin')
{
//base logging for insert, delete, uptade on fieldid=0
DatabaseLog DBDict;
TableId _tableId;
DatabaseLogType _logType;
fieldId _fieldId =0;
List logTypes;
int i;
ListEnumerator enumerator;
;
_tableId= tableName2id(tableName);
logTypes = new List(Types::Enum);
logTypes.addEnd(DatabaseLogType::Insert);
logTypes.addEnd(DatabaseLogType::Update);
logTypes.addEnd(DatabaseLogType::Delete);
logTypes.addEnd(DatabaseLogType::EventInsert);
logTypes.addEnd(DatabaseLogType::EventUpdate);
logTypes.addEnd(DatabaseLogType::EventDelete);
enumerator = logTypes.getEnumerator();
while(enumerator.moveNext())
{
_logType = enumerator.current();
select * from dbdict where
dbdict.logTable==_tableId && dbdict.logField==_fieldId
&& dbdict.logType==_logType;
if(!dbDict) //that means it doesnt exist …Run Code Online (Sandbox Code Playgroud)