2017-06-06 5 views
1

エンティティのメタデータを取得する必要があります。 厳密な要件:「エンティティスキーマ名」を持つフォーム上のフィールド値を読み取る。これで、そのEntityの主キースキーマ名を取得する必要があります。出来ますか?もしそうなら、私を助けてください。 例:そのフィールドに「lead」と入力すると、そのWeb APIが私に「leadid」を取得して別のフィールドに格納する必要があります。 2.「インシデント」と入力すると、そのウェブAPIが「インシデント」になりますweb apiを使用してエンティティメタデータを取得する

答えて

1

エンティティメタデータを取得する必要はありません。主キーは常に「エンティティスキーマ名」+「id」です。そのルールからの例外ではありません。それでもメタデータを取得したい場合は、呼び出すことによってそれを行うことができるようになります。エンティティ「アカウント」のすべての属性を返します

https://crmaddress/api/data/v8.2/EntityDefinitions(LogicalName='account')/Attributes?$select=LogicalName 

は、主キーは任意の「@のodata.type」属性のないものです

1

ええ、私はそれはそれはエンティティー・スキーマ名+ ID(リード+ ID = leadid)だ各エンティティの主キーとしてスキーマ名だ場合は取得する必要がないことに同意するものとします。しかし、私たちはそれが良い習慣ではないと感じました。私たちは次のコードでこれを達成しました。正しいエンティティ・スキーマ名を指定すると、その主ID属性が別のフィールドに自動的に移入されます。 new_primarykey - 私はnew_entityschemaname fieldonでフォームをエンティティスキーマ名を入力することに主キースキーマ名を移入しています。

function getPrimaryKey() { 
 
    var Oldprimary = Xrm.Page.data.entity.attributes.get("new_primarykey").getValue(); 
 
    var req = new XMLHttpRequest(); 
 
    var entityName = Xrm.Page.data.entity.attributes.get("new_entityschemaname").getValue(); 
 
    var url = Xrm.Page.context.getClientUrl() + "/api/data/v8.2/" + "EntityDefinitions?$select=PrimaryIdAttribute&$filter=SchemaName eq '" + entityName + "'"; 
 
    req.open("GET", url, false); 
 
    req.setRequestHeader("OData-MaxVersion", "4.0"); 
 
    req.setRequestHeader("OData-Version", "4.0"); 
 
    req.setRequestHeader("Accept", "application/json"); 
 
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
 
    req.setRequestHeader("Prefer", "odata.include-annotations=\"*\""); 
 
    req.onreadystatechange = function() { 
 
     Xrm.Page.data.entity.attributes.get("new_primarykey").setValue(""); 
 
     if (this.readyState === 4) { 
 
      
 
       
 
      
 
      req.onreadystatechange = null; 
 
      if (this.status === 200) { 
 
       var results = JSON.parse(this.response); 
 
       var primarykey = results.value[0].PrimaryIdAttribute; 
 
       Xrm.Page.data.entity.attributes.get("new_primarykey").setValue(primarykey); 
 
    
 
      } 
 
      else { 
 
       Xrm.Utility.alertDialog("Error"); 
 
      } 
 
     } 
 
    } 
 
    req.send(); 
 
}; 
 

enter image description here

関連する問題