2013-02-04 113 views
2

在導入時如何註冊插件?
有消息「導入」和「全部導入」。他們如何使用?在導入時註冊CRM 2011插件

我想導入到一個特定的實體時,創建一個單一的紀錄。
我試圖用'導入',但我不知道context.InputParameters["Target"]是什麼。導入CSV時插件不會觸發。

+1

我不是在我的電腦前,現在所以它的選中,但自發的我會說,你應該聽*更新*在插件的消息。 –

+0

非常感謝您的答案。我正在Create上註冊插件;儘管我真的很希望插件僅在整個導入時觸發一次。 – Bvrce

+0

看到我的答案。 :) –

回答

1

一個插件可以使用更新創建消息。現在,我明白你想限制執行只是一個(和最後一個)實例。從技術上講,不能做到。每個更新創建將分別調用插件。

,有變通辦法。不自豪,但是,我做到了。一旦。

public void Execute(...) 
{ 
    Entity entity = context.InputParameters["Target"] as Entity; 
    bool isTheLast = entity["someField"] == "Viltersten is Godlike"; 
    if(!isTheLast) 
    return; 
} 

這可以做得更短,一條線做。我只是想成爲一名教師。另外,我沒有檢查確切的語法,但你明白了。把你導入的最後一件東西命名爲獨特的東西。然後,讓插件開火一切。只有一個實例可以通過。

這將是FUBAR如果你無法控制進口秩序。

就我而言,我不能。我的解決方案是引入一個新的實體,稱爲控制器。在所有的輸入之後,我創建了一個新的實例。在那裏,我確實執行了其他實體所需的所有操作。

Braggable?幾乎不。是否可行?是。

+0

謝謝。我創建了一個記錄 - 具有相同的導入順序號 - 爲導入單獨的實體。插件檢查是否存在具有與其他實體的序列號相同的記錄,如果不存在,則創建記錄。我發現,即使在創建多個記錄的情況下,這也必須是因爲線程。我引入了另外一個條件來檢查是否有多條記錄被返回,如果有的話刪除多餘的記錄;刪除必須在try {}中,因爲多個實例最終試圖刪除相同的記錄! – Bvrce

+0

很酷。可怕的調試(特別是如果你在網上),但很酷。我沒有經歷過**這個特殊問題,但你正在做更復雜的操作,可能是我所做的。很高興知道這些事情,所以我知道要注意什麼。另外,如果您想更改示例代碼片段,請隨時編輯我的答案。我感覺有點太懶,而你的頭腦裏新鮮的東西。 –

4

導入創建/更新的實體,所以你應該能夠開火基礎上創建和更新的消息

+0

這種方法的工作原理。唯一的缺點是插件會導入導入中的每一行。 – Bvrce

相關問題