2014-01-17 67 views
2

我使用CRM 2013內部部署與UR1安裝任務「關於」字段不從子網格填充在CRM 2013

我有上有一個子網格的自定義實體在看相關的「任務」,它看起來像這樣: subgrid on custom entity

每當我使用子網格右上角的「+」按鈕創建子網格任務時,新創建任務的「關注」字段保持空白。當它應該通過查找它創建的記錄進行填充時。

Empty Regarding field on task created from custom entity

我有哪些檢查「關於」現場檢查什麼樣的實體,它是從創建(如果它是從一個創建),並從調用實體獲取某些字段值任務實體的javascript填充任務中的字段。

自「關於」字段填寫永遠的JavaScript永遠不會觸發 - 和字段不填充。

當記錄被保存,如果有關字段爲空(我還沒有手工填寫它) - 15秒後,如果您刷新頁面 - 它最終會被正確記錄約10填充。然後填充正確的字段,用戶可以編輯選項設置值並再次保存。這對於用戶來說並不理想,因爲他們希望它是一個流暢的動作。

有沒有解決這個問題的任何方式?

編輯這個問題的未來的瀏覽器:

發現周圍的部分工作。如果您使用「活動」子網格而不是「任務」子網格,則該字段將填充。這有一個缺點,因爲你不能編輯「活動」子網格的視圖來顯示「任務」特定的字段。

+0

新的可編輯的分格似乎並不具有相同的錯誤。如果您從該子網格添加任務,則關於如預期設置。 –

回答

1

跑進這個相同的問題。我解決這個問題的方法是向表單上的自定義實體添加查找(我們將其放在隱藏的選項卡上)。當從該自定義實體創建任務時,查找將被填充。然後,您可以使用該查找來獲取需要填充的值,包括關於字段。不是最優雅的,但它的作品。

+0

我確實得到了這條路線。就像你說的不是最優雅的,但它的工作原理。在試圖找到解決方法時,我注意到如果我使用「Activity」子網格而不是「Task」子網格,它將填充Regarding字段。但是在活動子網格中,您不能編輯視圖以包含任務特定的字段;所以對客戶來說並不好。 – madbrendon

1

我也遇到了這個問題,並用純JS的方式解決去。在加載任務表單時,調用populateRegarding()。

這工作,因爲即使對於查找默認不填充,查詢字符串參數包括_CreateFromType和_CreateFromId值。

該作品在2015年,沒有測試的早期版本。請注意,它不受支持。

function populateRegarding() { 
 
    var regarding = Xrm.Page.getAttribute("regardingobjectid"), 
 
    createFromType = Xrm.Page.context.getQueryStringParameters()._CreateFromType, 
 
    createFromId = Xrm.Page.context.getQueryStringParameters()._CreateFromId; 
 

 
    if (!createFromId || !createFromType || 
 
     !regarding || regarding.getValue() !== null) { 
 
    return; 
 
    } 
 

 
    var entityLogicalName = getEntityLogicalNameFromObjectTypeCode(createFromType); 
 

 
    regarding.setValue([{ 
 
    id: createFromId, 
 
    entityType: entityLogicalName, 
 
    name: "Hardcoded Name" // TODO: retrieve name dynamically 
 
    }]); 
 
} 
 

 
// This method uses an undocumented object and is therefore unsupported. 
 
// You could implement a supported version of this function by querying for 
 
// metadata, but that would be very expensive. 
 
function getEntityLogicalNameFromObjectTypeCode(otc) { 
 
    var map = Mscrm.EntityPropUtil.EntityTypeName2CodeMap, 
 
    logicalName; 
 

 
    otc = Number(otc); // convert string to number 
 

 
    for (logicalName in map) { 
 
    if (!map.hasOwnProperty(logicalName)) { continue; } 
 

 
    if (map[logicalName] === otc) { 
 
     return logicalName; 
 
    } 
 
    } 
 
}