InfoPath 時間の計算

こんばんは。奥田です。
InfoPath フォームで、[開始時間] と [終了時間] があり、終了時間-開始時間が何時間か計算したいときはないでしょうか。
既定値の数式として [終了時間] – [開始時間] としても時間の計算は行えません。

InfoPath で時間の計算を行いたい場合には次のように設定します。

<設定方法>
 
次のフィールドがあることを前提としています。
   ・ [開始時間] (日付と時刻) フィールド
   ・ [終了時間] (日付と時刻) フィールド
   ・ [時間計] (10進) フィールド

[時間計] フィールドの既定値に次の数式を設定
(((number(substring(終了時間, 12, 2)) * 3600) + (number(substring(終了時間, 15, 2)) * 60)) – ((number(substring(開始時間, 12, 2)) * 3600) + (number(substring(開始時間, 15, 2)) * 60))) / 3600
 jikanip

以上で、開始時間と終了時間を入力すると、時間計が表示されます。

jikanip2
既定値をちょっと工夫しているだけなので、もちろん InfoPath クライアントだけでなくブラウザーフォームでも利用可ですうさぎ

奥田理恵でした。

InfoPath 2010 VSTA で SharePoint オブジェクトの利用

InfoPath 2010 の VSTA で、SPWeb とか SPList 等の Microsoft.SharePoint.dll を利用したコードを記述した場合、コースのセキュリティを完全信頼にしないと実行時エラーとなります。

「System.Security.SecurityException:型 ‘microsoft.sharepoint.security.sharepointpermission, microsoft.sharepoint.security, version=14.0.0.0, culture=neutral, publickeytoken=71e9bce111e9429c’ のアクセス許可の要求に失敗しました。」 とエラーとなります。

SharePoint オブジェクトを扱った InfoPath フォーム開発を行う場合は、完全信頼が必須です。
また完全信頼とすることで、発行時には管理者発行を行います。
(発行ウィザードで [管理者発行] 以外は選択できないようになるはずです)。

以上、InfoPath フォーム開発時の注意点でした。

奥田理恵

SharePoint 2010 検索 searchadministration.aspx 404 エラー

SharePoint 2010 サーバーの全体管理で、検索サービス アプリケーションの管理ページ (http://***/ searchadministration.aspx) を開くと、404 エラーとなり開かないことがありました。

searchadministration.aspx を 14 以下で検索すると、SearchAdminWebParts フィーチャーで提供される機能であることがわかります。また調べてみるとこのフィーチャーがなぜかアクティブ化されてないだけではなく、インストールもされていないことがわかりました。

SearchAdminWebParts フィーチャーをインストール、アクティブ化することで解決できます。

<参考>
・ インストール
   stsadm –o installfeature –filename SearchAdminWebParts\feature.xml
アクティブ化
   stsadm –o activatefeature –filename SearchAdminWebParts\feature.xml –url http://***

以上、検索サービスアプリケーションの管理ページが開かない際の解決方法でした。

奥田理恵

SharePoint 2010 カスタム WCF サービスの展開

こんにちは、奥田です。
かなーり以前に、「InfoPath Forms Services 匿名アクセスで投稿したい!」 というタイトルで、InfoPath Forms Services のブラウザー フォームを匿名アクセス権限でライブラリに保存するための WCF サービスの作成、公開方法をこのブログに投稿しました。SharePoint Server 2007、InfoPath 2007 のバージョンです。
昨日 SharePoint Server 2010 で同様の WCF サービスを開発したのですが、展開時にハマったポイントがあるので、ご紹介します。

以前の投稿では、WCF サービスを開発して、SharePoint サイトをホストしている IIS 上にアプリケーションとして展開する手順をご紹介しましたが、SharePoint 2010 の場合、この方法では SPWeb とか SPSite とか Microsoft.SharePoint.dll のオブジェクトを利用する際に実行時エラーとなります。
「Microsoft SharePoint は、バージョン 4.0.30319.1 の Microsoft .Net Runtime ではサポートされません。」 と PlatformNotSupportedException がでます。

SharePoint 2010 の場合、WCF サービスを展開する際には、SharePoint 上にカスタム WCF サービスとして展開しなければいけないようです。
カスタム WCF サービスの作成については、下記記事が参考となりますが、展開方法があまり詳しく書かれていなかったので、カスタム WCF サービスを展開する SharePoint プロジェクトの開発手順をご紹介したいと思います。

「MSDN :SharePoint Foundation 2010 の WCF サービス」
http://msdn.microsoft.com/ja-jp/library/ff521586.aspx
「MSDN : カスタム WCF サービスを SharePoint Foundation で作成する」
http://msdn.microsoft.com/ja-jp/library/ff521581.aspx

<手順>

1. Visual Studio 2010 で [空の SharePoint プロジェクト] を作成します。
(ISAPI 以下に WCF サービスを展開するため、ファーム ソリューションで)

2. プロジェクト内にサービス クラスファイルと、サービスコントラクトファイルを追加
   サービスクラスに [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]  を利用して ASP.NET 互換モードを許可するよう構成すること。

3. プロジェクト内に [SharePoint のマップされたフォルダー] で [ISAPI] フォルダーへのマップフォルダーを作成

4. [ISAPI] マップフォルダー内に、さらにフォルダーを作成し、その中に ***.svc と web.config ファイルを作成します。
   ipwcf1

5. ***.svc と web.config を開発した WCF サービスに応じて内容を編集します。
aspNetCompatibilityEnabled は true とすること。

  (例)

   ・ ***.svc
<%@ Assembly Name=”InfoPathWcf,Version=1.0.0.0,Culture=Neutral,PublicKeyToken=4d22f097b6564138″ %>
<%@ ServiceHost Service=”InfoPathWcf.InfoPathSv” %>
 
   ・ web.config

<?xml version=”1.0″ encoding=”utf-8″ ?>
<configuration>
  
<system.web> </system.web>
 
<system.serviceModel>
 
<serviceHostingEnvironment aspNetCompatibilityEnabled=”true” />
 
<services>
  
<service behaviorConfiguration=”InfoPathWcf.InfoPathSvBehavior” name=”InfoPathWcf.InfoPathSv”>
  
<endpoint address=”” binding=”basicHttpBinding” contract=”InfoPathWcf.IInfoPathSv”>
 
    <identity><dns value=”localhost” /></identity>
  
</endpoint>
  
<endpoint address=”mex” binding=”mexHttpBinding” contract=”IMetadataExchange” />
 
<host>
  
<baseAddresses>
    
<add baseAddress=”http://ci:8888/&#8221; />
  
</baseAddresses>
 
</host>
 
</service>
 
</services>
 
<behaviors>
  
<serviceBehaviors>
  
<behavior name=”InfoPathWcf.InfoPathSvBehavior”>
   
<serviceDebug includeExceptionDetailInFaults=”true”/>
   
<serviceMetadata httpGetEnabled=”true” />
  
</behavior>
 
</serviceBehaviors>
 
</behaviors>
 
</system.serviceModel>
 
</configuration>

あとは配置なり、パッケージなりを行います。

展開すると、http://SharePoint URL/_vti_bin/(ISAPI 下のフォルダー名)/****.svc でアクセスできます。
 ipwcf2

  ※ 下記ブログを参考にさせていただきました。
    http://answers.oreilly.com/topic/1404-how-to-customize-wcf-services-in-sharepoint-2010/

以上、奥田でした。