2014-12-09 1 views
0

Уважаемые умные разработчики там,MS CRM 2013 Атрибут parentcustomeridtype не должен быть NULL, если атрибут parentcustomerid не NULL

я сталкиваюсь с проблемой, когда я хочу, чтобы создать контакт, принадлежащий организации в Microsoft Dynamics CRM 2013 через веб услуги

client = new OrganizationServiceClient("CustomBinding_IOrganizationService"); 
var newContactProperties = new Dictionary<string, object> { 
       { "lastname", "TestContact"}, 
       { "firstname", "A"}, 
       { "fullname", "A TestContact"} 

     }; 

/* organizationType is a CRM.CRMWebServices.OptionSetValue 
* with ExtensionData null, PropertyChanged null and a valid Value 
* 
* orgReference is a CRM.CRMWebServices.EntityReference 
* with a valid Id 
*/ 

newContactProperties.Add("parentcustomeridtype", organizationType); 
newContactProperties.Add("parentcustomerid", orgReference); 

var entity = new Entity(); 
entity.LogicalName = "contact"; 
entity.Attributes = new AttributeCollection(); 
entity.Attributes.AddRange(newContactProperties); 

client.Create(entity); 

Это дает мне ошибку «Атрибут parentcustomeridtype не должен быть NULL, если атрибут parentcustomerid не NULL»

Я озадачен, почему-й происходит и как я могу решить эту проблему. Пожалуйста, помогите мне, если сможете.

Спасибо, AllWorkNoPlay

+0

Правильно ли установлено значение организацииType? Как показано ниже: OptionSetValue organizationType = new OptionSetValue (1); Это должно быть 1, если родительский клиент является учетной записью или 2, если это контакт. –

+0

вам не нужно устанавливать свойства fullname и parentcustomeridtype, убедитесь, что orgReference содержит правильное логическое имя родительской записи. –

+0

Даже с вашими полезными советами мне не удается избавиться от этого сообщения об ошибке. Теперь я попытаюсь выполнить то, что хочу, используя объекты с ранней привязкой, с http://xrmearlyboundgenerator.codeplex.com. Создание учетных записей и контактов работает, теперь я пытаюсь использовать метод AttachLink OrganizationServiceContext ... для продолжения. – AllWorkNoPlay

ответ

2

Вам не нужно устанавливать "parentcustomeridtype" атрибут отдельно. Это системное поле, будет установлено платформой, а в parentcustomerid существует по старой причине, когда это был тип клиента в более ранних версиях Dynamics CRM. Вам нужно указать только EntityReference в поле поиска.
newContactProperties.Add("parentcustomerid", new EntityReference("account", new Guid("{accountid guid}")));
Также неясно, какой тип вы используете в поле «orgReference». Для контактных типов допустимых типов должны быть «учетные записи» или «контакт».

+0

Благодарим вас за реакцию. Я устанавливаю parentcustomeridtype или нет, не имеет значения, всегда получаю эту ошибку. OrgReference содержит действительную EntityReference для учетной записи. – AllWorkNoPlay

0

Благодарим вас за ответы, поэтому мне не удалось это правильно использовать с помощью веб-сервисов.

Я попытался с помощью Early Bound доступ с успехом:

  1. порожденных объектов прокси с помощью https://xrmearlyboundgenerator.codeplex.com/
  2. Добавлена ​​строка [сборка: Microsoft.Xrm.Sdk.Client.ProxyTypesAssemblyAttribute) (], чтобы AssemblyInfo иметь Intellisense доступны (даже для настраиваемой полей)
  3. Теперь мне удается создать контакт и назначить его в организации (что-то вроде этого):

    var contact = new Contact() 
            { 
             FirstName = "Bob", 
             LastName = "Dobalina", 
             Address1_Line1 = "123 Strasse", 
             Address1_City = "Berlin", 
             Address1_PostalCode = "32254", 
             Telephone1 = "425-555-5678", 
             EMailAddress1 = "[email protected]" 
            }; 
    
        var account = new Account() 
        { 
         Name = "Siemens Germany", 
        }; 
    
    
        context.AddObject(contact); 
        context.AddObject(account); 
    
        context.AddLink(account, "contact_customer_accounts", contact); 
    
        context.SaveChanges(); 
    } 
    

 Смежные вопросы

  • Нет связанных вопросов^_^