2017-10-17 3 views
0

Ich habe den folgenden Code:Hinzufügen DynamicPropertyInstance markiert nicht das Salesorderdetail als gültig

var propertyInstance = new DynamicPropertyInstance() 
{ 
    DynamicPropertyId = new EntityReference(DynamicProperty.EntityLogicalName, Guid.Parse("0ceedfcc-68b2-e711-8168-e0071b658ea1")), 
    ValueString = jobId.ToString(), 
    RegardingObjectId = line.ToEntityReference(), 
}; 

crmContext.AddObject(dynamicPropertyInstance); 
crmContext.SaveChanges(); 

Es wird erfolgreich eine DynamicPropertyInstance zu einem SalesOrderLine hinzufügen, aber wenn die Bestellung im CRM-UI sieht es nicht das passieren Validierung (wie es eine erforderliche Eigenschaft ist). Ich habe keinen Weg gefunden, diese Eigenschaft gültig zu machen. Durch das Bearbeiten der Eigenschaft, die ich in der Benutzeroberfläche hinzugefügt habe (Zurücksetzen des Werts), wird die Instanz auch nicht als gültig markiert. Das Hinzufügen derselben Eigenschaft über die UI macht als gültig.

Die ID der DynamicProperty ist korrekt, wie durch das Laden der 2 Instanzdatensätze über das SDK und den Vergleich der Eigenschaften überprüft. Sonderbarerweise, wenn ich die 2 Datensätze über das SDK lade, hat die, die ich im Code erstellt habe, eine validationstatus von true (obwohl es nicht ist) und die, die ich in der UI erstellt habe, hat eine validationstatus von false und ValueString gibt zurück null (was falsch ist). Alle anderen Eigenschaften stimmen entweder überein oder haben relevante Werte (wie Daten, Objekt-IDs usw.)

Ich vermisse wahrscheinlich einen Methodenaufruf, um neu zu berechnen, ob die Instanz gültig ist oder nicht, aber ich kann nichts darin finden die Dokumentation, um das zu unterstützen. Gelingt das nicht, es ist möglicherweise ein Fehler in CRM

Antwort

0

einen Fall mit Microsoft Support erhöht und einige Abhilfe Code gegeben:

//Get DynamicPropertyInstance 

UpdateProductPropertiesRequest UpdateRequest = new UpdateProductPropertiesRequest(); 
UpdateRequest.PropertyInstanceList = new EntityCollection(); 
UpdateRequest.PropertyInstanceList.EntityName = DynamicPropertyInstance.EntityLogicalName; 
Entity dpInstance = new Entity(DynamicPropertyInstance.EntityLogicalName, Dpi.Id); 
dpInstance.Attributes.Add(nameof(Dpi.ValueString).ToLower(), "Blarg"); 
dpInstance.Attributes.Add(nameof(Dpi.DynamicPropertyInstanceid).ToLower(), Dpi.Id); 
dpInstance.Attributes.Add(nameof(Dpi.RegardingObjectId).ToLower(), new EntityReference(SalesOrderDetail.EntityLogicalName, line.Id)); 
dpInstance.Attributes.Add(nameof(Dpi.DynamicPropertyId).ToLower(), new EntityReference(DynamicProperty.EntityLogicalName, dpId)); 

UpdateRequest.PropertyInstanceList.Entities.Add(dpInstance); 

crmContext.Execute(UpdateRequest); 

Im Grunde sieht es aus wie Sie wieder eingestellt haben oder erneut anschließen Entities für CRM, um es abzuholen, so ist dies eine Problemumgehung für einen Fehler in CRM

Verwandte Themen