smemo

技術メモです。

【Dynamics】新機能 フィールドへの推奨通知表示

新たにに追加されたフィールドへの推奨通知機能について。

■概要
フィールドの横に推奨アイコンが表示され、アイコンをクリックするとメッセージが表示。「適用」ボタン押下時に指定したアクションを実行することが可能となる。

例として、取引先担当者の勤務先電話番号変更時に推奨アイコンを表示し「優先する連絡先」に電話を表示する。

イメージは以下。

電話番号を変更
f:id:smemo:20161212225722p:plain

推奨アイコンが表示される
f:id:smemo:20161212225727p:plain

メッセージが表示。「適用」をクリックする
f:id:smemo:20161212225737p:plain

優先する連絡方法に「電話」が設定される
f:id:smemo:20161212225743p:plain


今回使用したコードはこちら

// 携帯電話フィールドのコントロール
var myControl = Xrm.Page.getControl('mobilephone');

// 優先する連絡先フィールドのコントロール
var preferredcontactmethodcode = Xrm.Page.data.entity.attributes.get('preferredcontactmethodcode');

if (!myControl.getValue() && preferredcontactmethodcode.getValue() != 3) {
    var actionCollection = {
        message: '',
        actions: null
    };

    // アクションの設定
    actionCollection.actions = [function () {
        // 優先する連絡を携帯電話に設定
        preferredcontactmethodcode.setValue(3);
        myControl.clearNotification('my_unique_id');
    }];

    // 携帯電話フィールドに通知の表示
    myControl.addNotification({
        messages: ['優先する連絡先に電話を設定しますか?'],
        notificationLevel: 'RECOMMENDATION',
        uniqueId: 'my_unique_id',
        actions: [actionCollection]
    });
}
else
    console.log("Notification not set");


この機能を利用していろいろなことができそうと感じました。
フィールド上にボタンを配置するようなことも可能になりそうです。

簡易表示ビューで複数行テキストのレイアウトが崩れる場合の対応方法

f:id:smemo:20161211230143p:plain
イメージのような感じで簡易表示フォームで複数行テキストを表示すると2行程度までしか表示されません。「customizations.xml」を修正することで複数行テキストをきれいに表示することができます。

修正前のXMLは以下。

<FormXml>
  <forms type="quick">
    <systemform>
      <formid>{68feb574-a0b2-4724-9a1d-cfcad828d48f}</formid>
      <IntroducedVersion>1.0.0.0</IntroducedVersion>
      <FormPresentation>1</FormPresentation>
      <FormActivationState>1</FormActivationState>
      <form maxWidth="400">
        <tabs>
          <tab id="{88c80e4e-0925-4505-9aeb-e72fa5116c71}" name="tab_1" showlabel="false">
            <labels>
              <label description="タブ" languagecode="1041" />
            </labels>
            <columns>
              <column width="100%">
                <sections>
                  <section id="{ab204366-e65d-493f-b726-184a074f07cd}" name="tab_1_column_1_section_1" columns="1" showlabel="false" showbar="false" IsUserDefined="0">
                    <labels>
                      <label description="section" languagecode="1041" />
                    </labels>
                    <rows>
                      <row>
                        <cell id="{d54d7304-3931-00c0-aa70-a63e041a8e24}" showlabel="true" locklevel="0">
                          <labels>
                            <label description="代表電話" languagecode="1041" />
                          </labels>
                          <control id="telephone1" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="telephone1" disabled="false" />
                        </cell>
                      </row>
                      <row>
                        <cell id="{e69b453c-85ee-388a-748b-73a434215516}" showlabel="true" locklevel="0">
                          <labels>
                            <label description="電子メール" languagecode="1041" />
                          </labels>
                          <control id="emailaddress1" classid="{ADA2203E-B4CD-49be-9DDF-234642B43B52}" datafieldname="emailaddress1" disabled="false" />
                        </cell>
                      </row>
                      <row>
                        <cell id="{d17d8271-6bcb-23e2-4092-6b1103de3d19}" showlabel="true" locklevel="0">
                          <labels>
                            <label description="Web サイト" languagecode="1041" />
                          </labels>
                          <control id="websiteurl" classid="{71716B6C-711E-476c-8AB8-5D11542BFB47}" datafieldname="websiteurl" disabled="false" />
                        </cell>
                      </row>
                      <row>
                        <cell id="{a47a34ad-e9c5-ec15-1da9-7a1667e790e7}" showlabel="true" locklevel="0">
                          <labels>
                            <label description="説明" languagecode="1041" />
                          </labels>
                          <control id="description" classid="{E0DECE4B-6FC8-4a8f-A065-082708572369}" datafieldname="description" disabled="false" />
                        </cell>
                      </row>
                    </rows>
                  </section>
                </sections>
              </column>
            </columns>
          </tab>
        </tabs>
        <DisplayConditions Order="3">
          <Role Id="{627090ff-40a3-4053-8790-584edc5be201}" />
          <Role Id="{119f245c-3cc8-4b62-b31c-d1a046ced15d}" />
        </DisplayConditions>
      </form>
      <IsCustomizable>1</IsCustomizable>
      <CanBeDeleted>1</CanBeDeleted>
      <LocalizedNames>
        <LocalizedName description="Test簡易表示フォーム" languagecode="1041" />
      </LocalizedNames>
    </systemform>
  </forms>
</FormXml>

修正後は以下

      <FormXml>
        <forms type="quick">
          <systemform>
            <formid>{68feb574-a0b2-4724-9a1d-cfcad828d48f}</formid>
            <IntroducedVersion>1.0.0.0</IntroducedVersion>
            <FormPresentation>1</FormPresentation>
            <FormActivationState>1</FormActivationState>
            <form maxWidth="400">
              <tabs>
                <tab id="{88c80e4e-0925-4505-9aeb-e72fa5116c71}" name="tab_1" showlabel="false">
                  <labels>
                    <label description="タブ" languagecode="1041" />
                  </labels>
                  <columns>
                    <column width="100%">
                      <sections>
                        <section id="{ab204366-e65d-493f-b726-184a074f07cd}" name="tab_1_column_1_section_1" columns="1" showlabel="false" showbar="false" IsUserDefined="0">
                          <labels>
                            <label description="section" languagecode="1041" />
                          </labels>
                          <rows>
                            <row>
                              <cell id="{d54d7304-3931-00c0-aa70-a63e041a8e24}" showlabel="true" locklevel="0">
                                <labels>
                                  <label description="代表電話" languagecode="1041" />
                                </labels>
                                <control id="telephone1" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="telephone1" disabled="false" />
                              </cell>
                            </row>
                            <row>
                              <cell id="{e69b453c-85ee-388a-748b-73a434215516}" showlabel="true" locklevel="0">
                                <labels>
                                  <label description="電子メール" languagecode="1041" />
                                </labels>
                                <control id="emailaddress1" classid="{ADA2203E-B4CD-49be-9DDF-234642B43B52}" datafieldname="emailaddress1" disabled="false" />
                              </cell>
                            </row>
                            <row>
                              <cell id="{d17d8271-6bcb-23e2-4092-6b1103de3d19}" showlabel="true" locklevel="0">
                                <labels>
                                  <label description="Web サイト" languagecode="1041" />
                                </labels>
                                <control id="websiteurl" classid="{71716B6C-711E-476c-8AB8-5D11542BFB47}" datafieldname="websiteurl" disabled="false" />
                              </cell>
                            </row>
                            <row>
                              <!-- rowspan="4" を追加 -->
                              <cell id="{a47a34ad-e9c5-ec15-1da9-7a1667e790e7}" showlabel="true" locklevel="0" rowspan="4">
                                <labels>
                                  <label description="説明" languagecode="1041" />
                                </labels>
                                <control id="description" classid="{E0DECE4B-6FC8-4a8f-A065-082708572369}" datafieldname="description" disabled="false" />
                              </cell>
                            </row>
                            <!-- <row/> を追加 -->
                            <row/>
                            <row/>
                            <row/>
                          </rows>
                        </section>
                      </sections>
                    </column>
                  </columns>
                </tab>
              </tabs>
              <DisplayConditions Order="3">
                <Role Id="{627090ff-40a3-4053-8790-584edc5be201}" />
                <Role Id="{119f245c-3cc8-4b62-b31c-d1a046ced15d}" />
              </DisplayConditions>
            </form>
            <IsCustomizable>1</IsCustomizable>
            <CanBeDeleted>1</CanBeDeleted>
            <LocalizedNames>
              <LocalizedName description="Test簡易表示フォーム" languagecode="1041" />
            </LocalizedNames>
          </systemform>
        </forms>
      </FormXml>

修正したファイルをインポートして公開。
修正後イメージは以下。複数行テキストの内容が表示されています。
f:id:smemo:20161211231135p:plain

簡易表示フォームのレイアウトで困った場合は参考にしてみてください。

左外部結合(Left join)のビューを作成

今回は左外部結合のビューを作成する手順のメモ。

DynamicsのGUIからは左外部結合のビューは作成できないと思います。なので活動を一度も行ったことのない取引先企業の抽出を行うなどの、参照先エンティティ(取引先企業)を軸にしながら参照元(活動)が存在しないレコードを抽出するようなビューを作成することはできなかったと思います。

ただ、ビューの構成情報を管理しているxml(customizations.xml)を修正することで左外部結合のビューを作成することができました。

注意点としては作成したビューの検索条件はGUIから変更できないこと、高度な検索でビューが選択できなかったこと。


以下のMSDNを参考にしました。
左外部結合を FetchXML で使用して "存在しない" 記録をクエリする
 

以下にも保存済みクエリの編集をサポートすると記載がありました
カスタマイズ ファイルを編集するとき


以下手順のメモです。

続きを読む

Web API 名前を指定してメタデータをクエリする

12月のアップデートでWebAPIを使ってメタデータをクエリする際に名前(LogicalName)を使用できるようになりました。(アップデート以前はIDが必要でした。)

名前または MetadataId でのメタデータの取得

//エンティティ
/api/data/v8.2/EntityDefinitions(LogicalName='account')
//属性
/api/data/v8.2/EntityDefinitions(LogicalName='account')/Attributes(LogicalName='emailaddress1')
//[関連付け]
/api/data/v8.2/RelationshipDefinitions(SchemaName='Account_Tasks')
//グローバル オプション セット
/api/data/v8.2/GlobalOptionSetDefinitions(Name='metric_goaltype')

これでメタデータを取得するのがさらに簡単にできるようになりました。

ビューにアイコン(画像)表示

Dynamicsのビューにアイコン表示

最近のアップデートで追加された機能。
f:id:smemo:20161203140708p:plain
※イメージは評価が高の場合に画像を表示

MSDNを参考にしました。
https://technet.microsoft.com/ja-jp/library/dn509578.aspx#GridIcons

続きを読む

カスタムアクティビティ Custom Workflow Activity

DynamicsCRM,365のカスタムアクティビティの作成方法

Visualstudio を使用している場合はDeveloperToolkitが便利。

DeveloperToolkitを使用してワークフローの作成についてはこちらを。

Create a new Developer Toolkit project

 


※注意点
カスタムアクティビティに対するInputとOutputはGUIで定義するのではなく、
コード内でInput、Outputを定義するとDynamics側でカスタムアクティビティを使用する際にInOutのパラメータを使用できるようになる。

続きを読む