サンプル: 日時の動作の変換
公開日: 2016年11月
対象: Dynamics CRM 2015
このサンプルでは、ConvertDateAndTimeBehaviorRequest メッセージを使用して、UTC 値をシステムに存在する Dynamics 365 の日時属性の DateOnly 値に変換した後、その属性の動作を UserLocal から DateOnly に変更する方法を示します。詳細:データベース内の既存の日時値の動作の変換。
このサンプルは、Microsoft Dynamics CRM Online 2015 更新プログラム 1 向けです。 これは、日時の動作の変換からダウンロードして使用できます。
前提条件
Microsoft Dynamics CRM Online 2015 更新プログラム 1 組織へのアクセス権を取得します。
このサンプルに示した ConvertDateAndTimeBehaviorRequest メッセージを使用するには、CRM 組織のシステム管理者ロールを使用できるようにします。 そうしない場合、このサンプルは動作しません。
DateTimeAttributeBehavior Visual Studio プロジェクトをダウンロードします。
DateTimeAttributeBehavior Visual Studio プロジェクトを開き、Microsoft.CrmSdk.CoreAssemblies バージョン 7.1.0-preview NuGet Package をインストールします。 手順については、後述の「NuGet パッケージのインストール」を参照してください。
NuGet パッケージのインストール後、サンプルの実行方法と何をするかの指示については、サンプルの実行 を参照してください。
このトピックの内容
このサンプルの概要
ConvertDateandTimeBehavior クラスの Run メソッドは、サンプルに対して、適切なバージョンの Dynamics 365 を実行しているかどうかを確認します。
CreateRequiredRecords メソッドは、サンプルに必要な以下のレコードを作成します。
Account エンティティのサンプルの日時属性を UserLocal 動作で作成します。
サンプルの取引先企業レコードを、新しい日時属性に March 31, 2015 11:00 PM UTC の値を使用して作成します。
日時属性の動作を DateOnly に変更します。
別のサンプルの取引先企業レコードを、新しい日時属性に March 31, 2015 11:00 PM UTC の値を使用して作成します。 属性は現在のところは DateOnly なので、時刻の部分は省略されて、システムには March 31, 2015 00:00:00 として保存されます。
両方の取引先企業レコードの日付属性の値を取得します。 動作が変更されるので、両方の値は March 31, 2015 00:00:00 として表示されます。 ただし、データベース内では、最初の取引先企業レコードの値は UTC (March 31, 2015 11:00 PM) のままです。
ConvertDateAndTimeBehaviorRequest SDK メッセージを実行して、日時属性の UTC 値を DateOnly 値に変換する非同期ジョブを作成します。 SDK メッセージ内の変換ルールが、CRM 内のインド標準時 (IST) のタイム ゾーン コードによって値を変換します (190)。
ConvertDateAndTimeBehaviorRequest request = new ConvertDateAndTimeBehaviorRequest() { Attributes = new EntityAttributeCollection() { new KeyValuePair<string, StringCollection>("account", new StringCollection() { "new_sampledatetimeattribute" }) }, ConversionRule = DateTimeBehaviorConversionRule.SpecificTimeZone.Value, TimeZoneCode = 190, // Time zone code for India Standard Time (IST) in CRM AutoConvert = false // Conversion must be done using ConversionRule }; // Execute the request ConvertDateAndTimeBehaviorResponse response = (ConvertDateAndTimeBehaviorResponse)_serviceProxy.Execute(request);
変換後、両方の取引先企業レコードの日時属性の値を取得します。 最初の取引先企業レコードの UTC 値は、変換がインド標準時 (IST) のタイム ゾーンによって行われたので、3 月 31 日 から 4 月 1 日 に変換されました。 2 番目の取引先企業レコードの値は、すでに DateOnly 値であったので、影響はありません。
最後に、DeleteRequiredRecords メソッドは、サンプル実行時に作成された、エンティティ レコードとユーザー定義の日時属性を削除するように求めます。
y を入力し、[Enter: を押して、組織からエンティティ レコードおよびユーザー定義属性を削除します。
組織にエンティティ レコードとユーザー定義属性を残す場合は、n を入力し、[Enter] を押します。 元の状態に戻る場合は、後で手動で削除する必要があります。
NuGet パッケージのインストール
このサンプルに必要なアセンブリをインストールするには、次の手順を使用します。
このサンプルをダウンロードし、ファイルを抽出します。
C# フォルダーに移動し、Visual Studio で、DateTimeAttributeBehavior.sln ファイルを開きます。
Visual Studio で、DateTimeAttributeBehavior プロジェクトを右クリックし、[NuGet Packages の管理] を選択します。
プレビューのリリースの場合は、検索条件に [安定版のみ] ではなく、かならず [プレリリースを含める] を選択してください。 次に、"Microsoft Dynamics CRM 2015 SDK core assemblies" を検索します。7.1.0-preview バージョンを選択していることを確認します。
[インストール] をクリックします。 このパッケージのインストールを実行するには、ライセンス条項に同意する必要があります。
サンプルの実行
Visual Studio で、ソリューションを開き、必要な NuGet パッケージがインストールされた状態で、F5 キーを押します。
以前に、Microsoft Dynamics 365 マネージド コード サンプルのいずれも実行していない場合は、コードを実行するための情報を入力する必要があります。そうでない場合は、すでに設定済みの Dynamics 365 サーバーの 1 つに対応する数字を入力します。
プロンプト
内容
CRM サーバーの名前とポート [crm.dynamics.com] を入力してください
Microsoft Dynamics CRM Server の名前を入力します。 北米では、既定は Microsoft Dynamics CRM Online (crm.dynamics.com) です。
例:
crm5.dynamics.comこの組織は Microsoft Online Services でプロビジョニングされていますか (y/n) [n]
Microsoft Online Services でプロビジョニングされている組織の場合は、y を入力します。 その他の場合、n を入力します。
domain\username を入力してください
Microsoft アカウントを入力します。
パスワードを入力してください
パスワードを入力します。 文字はウィンドウに "*" で表示されます。 パスワードは、後で再利用できるように Microsoft Credential Manager で安全に保存されます。
組織番号を指定してください (1-n) [1]
組織の一覧から、所属する組織に該当する番号を入力します。 既定値は 1 です。これは一覧の最初の組織を示します。
このサンプルは、このサンプルの概要 に説明されている操作を実行しますが、追加のオプションの実行を求められることがあります。
サンプルが完了したら、[Enter] を押して、コンソール ウィンドウを閉じます。
関連項目
ConvertDateAndTimeBehaviorRequest
日時属性の動作と形式
エンティティ属性メタデータのカスタマイズ
© 2017 Microsoft. All rights reserved. 著作権