我对Dynamics的工作原理一无所知,也不了解它的数据模型(也不了解它的术语,所以如果我使用了错误的术语,我会提前道歉).
我正在建立一个网站,当有人填写该网站上的表格时,需要在Dynamics CRM中创建一个新记录(我相信最新版本是2011).
本网站是用PHP构建的,因此MS提供的示例代码不适用.理想情况下,我正在寻找的是一些指令或教程的链接,如下所示:
我知道也许在CRM中没有直接的"联系"概念,而是"机会","人"和"组织"的某种组合.我知道也许你不只是发送密码而是一些身份验证令牌或cookie数据.我知道它可能需要SOAP调用而不是REST调用(虽然最新版本似乎支持REST,我更喜欢它,因为它更简单).我知道它可能不会返回JSON字符串.我上面发布的内容只是我理想答案看起来的格式的一个例子(不是要求要求,只是因为我知道MS和PHP世界之间的事情可能会"失去翻译",所以希望这有助于解释什么对我虚弱的大脑的一个有用的答案看起来像).
或者也许我完全偏离基础,如果没有大量的定制化,那么做这种事情是不可能的?
顺便说一下,我目前不关心"双向同步",所以我只需要告诉CRM有一个新的联系人(理想情况下它会自动标记它认为是重复的记录,但这不是必需的).
感谢您提供的任何指导或帮助.
这个问题很麻烦.我试图在html页面内运行一个简单的jquery脚本,只是弹出一个警告框.
我上传了jquery库和json库
我有一个html页面,其中包含以下引用和对我的jquery脚本的引用.当我将这个html嵌入为iframe时,它没有提出警报.
<SCRIPT src="../ClientGlobalContext.js.aspx"></SCRIPT>
<SCRIPT type=text/javascript src="../jquery1.4.1.min.js"></SCRIPT>
Run Code Online (Sandbox Code Playgroud)
我正在阅读有关相对路径的内容以及我尝试过的内容
<SCRIPT type=text/javascript src="../Script/jquery1.4.1.min.js"></SCRIPT>
<SCRIPT type=text/javascript src="../Scripts/jquery1.4.1.min.js"></SCRIPT>
Run Code Online (Sandbox Code Playgroud)
都.
但它不起作用.
使用CRM 2011 SDK(v5.0.10)我遇到了少数Lookup字段的问题,其中目标没有填充,我希望有人可以帮助我确定在这些情况下确定引用实体的最佳方法.
具体来说,我正在使用此调用检索实体,属性和关系元数据:
var entityRequest = new RetrieveAllEntitiesRequest
{
RetrieveAsIfPublished = true,
EntityFilters = EntityFilters.Entity | EntityFilters.Attributes | EntityFilters.Relationships
};
var entityResponse = (RetrieveAllEntitiesResponse)_organizationService.Execute(entityRequest);
return entityResponse.EntityMetadata.ToList();
Run Code Online (Sandbox Code Playgroud)
稍后,在使用从该调用返回的EntityMetadata对象时,我检查Attributes集合,对于LookupAttributeMetadata对象,我尝试使用LookupAttributeMetadata对象的Targets属性确定查找引用的实体.
但是,在某些情况下,LookupAttributeMetadata对象具有空的Targets集合.例如,Campaign活动(逻辑名称:campaignactivity)实体将Service字段(逻辑名称:serviced)定义为Lookup字段,但LookupAttributeMetadata对象上的Targets属性为空.
当我查看实体的Web UI Customizations屏幕并打开Service字段时,在Type部分下显示Type:Lookup,Target Record Type:Account,Relationship Name:campaignactivity_account.
这些信息来自哪里?
另请注意:Campaign活动或帐户实体上没有名为"campaignactivity_account"的关系.
更新:我正在运行Dynamics CRM 2011 Rollup 8的库存安装(尽管我在Rolloup 7上也看到了这一点).虽然"广告系列活动"是我在我的示例中使用的字段,但总共有14个问题,如下所示.我正在寻找一个通用的解决方案(针对每个解决方案的一次性解决方案),以避免if (entityName=="rollupfield" && fieldName=="organizationid")...
在我的代码中使用一堆逻辑,因为我正在使用的实体和字段是由用户在运行时选择的,我不知道我必须提前知道我会被交给谁.
更新:以下控制台应用程序可用于重现该问题.
//Requires the following Referenses:
// Microsoft.CSharp
// Microsoft.IdentityModel
// Microsoft.xrm.sdk
// System
// System.Core
// System.Data
// …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从CRM中检索实体列表,但我想让每个实体都与相关实体相关联.到目前为止,我有以下代码:
FilterExpression filterExpression = new FilterExpression();
ConditionExpression condition = new ConditionExpression(Constants.ModifiedOnAttribute, ConditionOperator.GreaterEqual, lastSync);
filterExpression.AddCondition(condition);
QueryExpression query = new QueryExpression()
{
EntityName = entityName,
ColumnSet = new ColumnSet(attributesMetadata.Select(att => att.Name).ToArray<string>()),
Criteria = filterExpression,
Distinct = false,
NoLock = true
};
RetrieveMultipleRequest multipleRequest = new RetrieveMultipleRequest();
multipleRequest.Query = queryExpression;
RetrieveMultipleResponse response = (RetrieveMultipleResponse)proxy.Execute(multipleRequest);
Run Code Online (Sandbox Code Playgroud)
在变量响应中,我可以看到EntityCollection属性,但在内部,相关实体总是空的.
我想知道是否可以使用RetrieveMultipleRequest检索具有相关实体的给定实体的集合,而不是使用RetrieveRequest逐个检索.
有谁知道如何将EntityReference转换为实体.
protected override void Execute(CodeActivityContext executionContext)
{
[Input("Email")]
[ReferenceTarget("email")]
public InArgument<Entity> EMail { get; set; }
Entity MyEmail = EMail.Get<Entity>(executionContext);
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误.无法转换此.
使用本指南:https://msdn.microsoft.com/en-us/library/mt607719.aspx,我正在尝试创建批处理请求以删除报价上的所有quotedetails.我正在使用jquery的ajax来执行请求:
$.ajax(
{
method: 'POST',
url: 'http://crm/api/data/v8.0/$batch',
headers: {
'Content-Type': 'multipart/mixed;boundary=batch_' + batchId,
'Accept': 'application/json'
},
data: payload
});
Run Code Online (Sandbox Code Playgroud)
这是有效载荷:
–batch_SuL11egVC7
Content-Type:multipart/mixed;boundary=changeset_Sj74vxbGYr
–changeset_Sj74vxbGYr
Content-Type:application/http
Content-Transfer-Encoding:binary
Content-ID:1
DELETE crm/.../quotedetails(cc9b9ba8-4570-e611-80ba-0050568a6c2d) HTTP/1.1
Content-Type: application/json;type=entry
–changeset_Sj74vxbGYr
Content-Type:application/http
Content-Transfer-Encoding:binary
Content-ID:2
DELETE crm/.../quotedetails(cd9b9ba8-4570-e611-80ba-0050568a6c2d) HTTP/1.1
Content-Type: application/json;type=entry
–changeset_Sj74vxbGYr--
-batch_SuL11egVC7--
Run Code Online (Sandbox Code Playgroud)
我没有收到错误,但引号细节没有删除.这是回应:
--batchresponse_a3304387-0e91-4097-b9f8-a207da3aa845--
Run Code Online (Sandbox Code Playgroud)
我也找到了这个例子,我试图用Postman复制它:批量请求 - Dynamics CRM
头:
Content-Type:multipart/mixed;boundary=batch_123456
Accept:application/json
Odata-MaxVersion:4.0
Odata-Version:4.0
Run Code Online (Sandbox Code Playgroud)
身体:
–-batch_123456
Content-Type:multipart/mixed;boundary=changeset_123457
–-changeset_123457
Content-Type:application/http
Content-Transfer-Encoding:binary
Content-ID:1
POST http://onpremisesurl/api/data/v8.0/accounts HTTP/1.1
Content-Type:application/json;type=entry
{name: 'batch acount 1'}
–-changeset_123457
Content-Type:application/http
Content-Transfer-Encoding:binary
Content-ID:2
POST http://onpremisesurl/api/data/v8.0/accounts HTTP/1.1
Content-Type:application/json;type=entry
{name: …
Run Code Online (Sandbox Code Playgroud) 我在CRM中构建了一个自定义操作,我需要通过它的WebAPI来解决这个问题.自定义操作已激活,我在创建CRM时没有出现任何错误.
我尝试从VB.NET应用程序调用此操作,如:
Dim httpch As New HttpClientHandler
Dim requestUri As String = "contacts(1fcfd54a-15d3-e611-80dc-0050569ea396)/Microsoft.Dynamics.CRM.new_addnotetocontact"
httpch.Credentials = New NetworkCredential("username", "password", "domain")
Dim httpClient As New HttpClient(httpch)
httpClient.BaseAddress = New Uri(CRMWebApiUri)
httpClient.Timeout = New TimeSpan(0, 2, 0)
httpClient.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0")
httpClient.DefaultRequestHeaders.Add("OData-Version", "4.0")
httpClient.DefaultRequestHeaders.Add("Prefer", "odata.include-annotations='OData.Community.Display.V1.FormattedValue'")
httpClient.DefaultRequestHeaders.Accept.Add(New MediaTypeWithQualityHeaderValue("application/json"))
Dim jsonNote As JObject = New JObject(New JProperty("NoteTitle", "'Mails have been deleted'"), New JProperty("NoteText", "This contacts SmarterMail data has been deleted due to inactivity"))
Dim postData = New StringContent(jsonNote.ToString(), Encoding.UTF8, "application/json")
Dim retrieveContactResponse As HttpResponseMessage = httpClient.PostAsync(requestUri, postData).Result …
Run Code Online (Sandbox Code Playgroud) 尝试在.NET Core 2.0项目中使用Microsoft Dynamics 365 SDK核心程序集时,运行时只会出现以下错误using Microsoft.Xrm.Sdk
:
TypeLoadException:无法从程序集'System.ServiceModel,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'加载类型'System.ServiceModel.Description.MetadataConversionError'.
看起来核心程序集(Microsoft.Xrm.Sdk.Client)可能与~net4x之外的任何内容都不兼容.
是否有任何明显的方法来解决此错误或加载目标上下文中System.ServiceModel
所需的WCF 类/接口?是否可以使用
Microsoft.Windows.Compatibility来弥补差距?看起来Microsoft.Windows.Compatibility包文档表明Windows Communication Foundation(WCF)类/接口是"可用的".如何使用兼容包加载?Microsoft.Xrm.Sdk
netcoreapp2.0
System.ServiceModel.Description
感谢您提供任何帮助!
是否有任何在线资源显示使用Java编写的客户端访问Microsoft CRM内部部署Web服务的基本步骤?
我应该使用哪个Web服务工具包?
我尝试使用JAXB,但WSDL元素命名中存在冲突,需要进行类自定义.如果我找到正确的绑定修复程序,我会在此处发布.
我使用Erik Pool的实现ICodeWriterFilterService
和Manny Grewal的GenerateOption
函数作为模型来过滤掉CRMSvcUtil
生成的文件中不需要的实体.虽然Erik建议返回true
为GenerateOptionSet
方法enums
集生成的方法,但这样做会复制任何特定实体使用的任何全局选项集(如该帖子的其中一条评论中所述).
为了解决这个问题,我检查是否已经生成了选项集,如果是,我将返回默认选项(大概false
是大多数情况下),如下所示.
//list of generated option sets, instantiated in the constructor
private List<string> GeneratedOptionSets;
public bool GenerateOptionSet
(OptionSetMetadataBase optionSetMetadata, IServiceProvider services)
{
if (!GeneratedOptionSets.Contains(optionSetMetadata.Name))
{
GeneratedOptionSets.Add(optionSetMetadata.Name);
return true;
}
return _defaultService.GenerateOptionSet(optionSetMetadata, services);
}
Run Code Online (Sandbox Code Playgroud)
但是当在我的CRM项目中合并生成的文件时,编译错误
Run Code Online (Sandbox Code Playgroud)Cannot convert type 'Microsoft.Xrm.Sdk.OptionSetValue' to 'int'
总是被看起来像的每一行代码抛出
this.SetAttributeValue
("address1_shippingmethodcode", new Microsoft.Xrm.Sdk.OptionSetValue(((int)(value))));
Run Code Online (Sandbox Code Playgroud)
.
作为一种变通方法,我用一个单独的项目中,我过滤我需要的实体运行CRMSvcUtil
的论据埃里克表明,更换代码的麻烦的部分(int)(value)
(这里value
是一个OptionSetValue
含)value.Value
时生成的文件后,再重新保存文件,并所有问题都消失了.
我的问题是:我是否需要做一些不同的事情来修复这个编译错误与默认CRMSvcUtil
生成的文件,而不做像修改生成的文件这样的hackish?
dynamics-crm ×10
c# ×2
jquery ×2
.net ×1
.net-core ×1
crm ×1
enums ×1
html ×1
java ×1
javascript ×1
odata ×1
php ×1
vb.net ×1
web-services ×1