利用Office套件中的Infopath工具,我們可以非常方便的建立自己的電子表單,當然我們可以把這種表單發佈到SharePoint進行共享使用。這是企業應用中最爲常見的一種電子表單開發和應用場景。
在SharePoint中使用Infopath是非常簡單的。但有時企業會出現一些莫名其妙的問題,我在這裏記錄一些常見或使用中需要注意的事項,以方便大家查閱。希望大家在使用過程中遇到了問題,也及時的通知我,並將問題的解決方法寫入本文中。
小注:聽說微軟將不再升級Infopath,2013版將是最後一版。不過我還沒有得到確切的結論,不知道微軟將以什麼軟體去替代它,這要看下一版的SharePoint的新功能特性才能知道了。
各種問題彙集於此。大家可通過搜索頁面關鍵詞來查找了。如果內容過多,我會把它寫成續篇。
1、檢查SharePoint的Infopath服務是否開啓了瀏覽器支持。
Get-SPInfoPathFormsService
默認是開啓的,如果你發現你的infopath表單在sharepoint中不能通過瀏覽器打開,則可通過上述的命令去檢查一下,如果是false則說明了關閉了瀏覽器支持。不用緊張,當然有命令來開啓它了。
Set-SPInfoPathFormsService -AllowUserFormBrowserEnabling $true -AllowUserFormBrowserRendering $true
當然,不要忘記檢查表單庫的高級設置中,是否啓用“在瀏覽器中打開”。
2、InfoPath表單中能否寫C#代碼
這是當然可以的,不過你要熟悉一下特殊的對象模型纔可以。
3、InfoPath調用WebService進行數據寫入時的注意事項
在Infopath中定義了WebServie的寫入數據的連接器後,記得要到SharePoint站點中創建“數據連接庫”並添加數據連接,以信任允許電子表單調用webservice。
4、username函數的使用問題
在infopath中有個username函數,用於獲得當前用戶的賬戶信息。當使用此函數參與函數的組合使用或利用這個函數進行記錄篩選過濾時,此函數會失效。這可能是個bug,不過這個問題有個解決的辦法,你只需要在表單任何位置放置一個計算控件,並將username函數值定義在控件的默認值上就可以了,別忘了把這個控件隱藏起來哦。這是我的解決辦法,開發者如遇到此問題,可以嘗試我這種方法。
5、域的類型使用
域(屬性)類型,在發佈到sharepoint中後,此類型的字段是可以被sharepoint修改的,而域(字段)類型,則是隻讀的。sharepoint工程師可以利用工具檢查這些字段的屬性值就能得到答案。當然也可以通過sharepoint API模型來修改這些字段的屬性值。
6、infopath的視圖
infopath中還有視圖的概念,利用視圖我們可以定義出很多表單。我們可以在表單的規則管理器上切換視圖,當然你可以設定一些條件。在流程開發時,此功能非常有效。
7、對infopath文件的認知
infopath文件的擴展名爲xsn,這是種壓縮文件。你可以利用解壓工具打開它看看。電子表單通過xml的描述方式組織定義。這種技術被很多表單設計公司所利用。XML定義被存儲到sharepoint內容數據庫中,當瀏覽者需要訪問表單時,sharepoint通過FormService服務將xml定義體解析成html協議的內容體(這是模板引擎在起作用)響應到瀏覽器的客戶端,這就是大致的原理。
8、數據連接超時問題
當表單實際調用webservice時,因網速或其他原因而造成連接超時。這時,我們可以修改數據連接超時時限來解決此問題。
Set-SPInfoPathFormsService -MaxDataConnectionResponseSize 3
9、表單的安全控制
當表單使用http認證時需要SSL加密;
當有包含用戶名和密碼的數據庫連接新的數據連接文件時;
當運行自定義表單通過數據連接文件訪問數據源時;
當表單需要訪問與sharepoint不同的數據源時;
我們可以使用一下命令來進行控制處理
Set-SPInfoPathFormsService –RequireSslForDataConnections $true –AllowEmbeddedSqlForDataConnection $true –AllowUdcAuthenticationForDataConnections $true –AllowUserFormCrossDomainDataConnections $true
解釋一下這個命令的參數:
RequireSslForDataConnections:True爲表單使用HTTP認證時需要SSL加密。
AllowEmbeddedSqlForDataConnection:當有包含用戶名和密碼的數據庫連接信息的數據連接文件時,設置爲True。
AllowUdcAuthenticationForDataConnections:是否允許自定義表單通過數據連接文件訪問數據源。
AllowUserFormCrossDomainDataConnections:當表單需要訪問與SharePoint不同的數據源時,設置爲True。
10、設置會話狀態
Set-SPInfoPathFormsService –MaxPostbacksPerSession 110 –ActiveSessionTimeout 720
11、啓用視圖狀態
Set-SPInfoPathFormsService –AllowViewState $true –ViewStateThreshold 40961
12、用命令驗證和上傳表單模板
Test-SPInfoPathFormTemplate -Path "<<full path to InfoPath form template>>" Install-SPInfoPathFormTemplate-Path "<<full path to InfoPath form template>>"
13、用命令一次上傳多個表單模板
"<<path of form 1>>" , "<<path of form 2>" , "<<path of form 3>>" | Install-SPInfoPathFormTemplate
這裏用到了管道命令,大家注意點。並不是命令寫反了。
14、激活、停用網站集的表單模板
Enable-SPInfoPathFormTemplate -Identity "<<name of form template>>" -Site "<<URL of Site Collection>>" Disable-SPInfoPathFormTemplate -Identity "<<name of form template>>" -Site "<<URL of Site Collection>>"
15、從InfoPath表單服務移除一個表單
Uninstall-SPInfoPathFormTemplate -Identity "<<name of form template>>"
16、禁用InfoPath表單服務中的某個表單
Stop-SPInfoPathFormTemplate -Identity "<<name of form template>>"
17、啓用InfoPath的Web服務代理
Set-SPInfoPathWebServiceProxy -Identity "<<URL of web application>>" -AllowWebServiceProxy $true Set-SPInfoPathWebServiceProxy -Identity "<<URL of web application>>" -AllowForUserForms $true
18、InfoPath無法保存表單
當在InfoPath發佈表單時,可能會提示你無法保存表單的錯誤信息,如下圖
解決方法:在Window系統中安裝啓用“桌面體驗”功能。