Quantcast
Channel: tyoshikawa1106のブログ
Viewing all 1438 articles
Browse latest View live

SFDC:デバイスに応じたレコードページコンポーネント表示ルールの設定を試してみました

$
0
0

デバイスに応じたレコードページコンポーネント表示ルールの設定を試してみました。

f:id:tyoshikawa1106:20200119170601p:plain


対象のコンポーネントを選択してコンポーネントの表示を設定からデバイスを条件に表示有無を指定できます。
f:id:tyoshikawa1106:20200119170708p:plain:w300


便利。


SFDC:TrailheadでWinter'20の新機能の学習をやってみました

$
0
0

TrailheadでWinter'20の新機能の学習をやってみました。

f:id:tyoshikawa1106:20191217191135p:plain

取引先チームの新規機能

下記の機能が追加されました。

  • オブジェクトマネージャに [取引先チームメンバー] が追加された。
  • 取引先チームメンバーで「カスタム項目、ボタン、およびリンク」が利用可能になった。
  • 取引先チームメンバーオブジェクトは、ワークフロールールを作成することも可能になった。
  • プロセスビルダーで取引先チームを作成可能になった。
    • ※組織で取引先チームが有効化されている場合

f:id:tyoshikawa1106:20191217191725p:plain

LEXでの取引先と商談チームのアクセス権参照

  • Lightning Experience で取引先および商談チームのアクセス権を見れるようになった。
    • ※今まではClassicのみ。

f:id:tyoshikawa1106:20191217191617p:plain

カスタマイズ可能な取引先責任者の役割による追跡とレポートの改善

取引先責任者の役割でカスタム項目やボタン、トリガがつくれるようになった?

f:id:tyoshikawa1106:20191217192234p:plain

メールテンプレートの署名

下記の書き方がつかえるようになったみたいです。

 {{{Sender.Signature}}}


f:id:tyoshikawa1106:20191217192409p:plain

承認プロセスの制限緩和

次のように制限緩和されたみたいです。

組織当たりの承認プロセス数は、有効件数が 1,000 件、総数が 2,000 件まで可能になりました。
各オブジェクトの承認プロセス数は、有効件数が 300 件、総数が 500 件まで可能です。

項目の参照の確認とそれを使用したレポートの検索

オブジェクトの設定で特定の項目がApexや数式などどこで使用できるかわかるようになったみたいです。
f:id:tyoshikawa1106:20191217192540p:plain


「使用場所」ボタンで参照できます。項目の詳細ページに追加されていました。サッとチェックしただけですが標準項目では利用できないかもしれません。
f:id:tyoshikawa1106:20191217192854p:plain

f:id:tyoshikawa1106:20191217192910p:plain

SFDC:Lightning Web コンポーネント開発を試してみました

$
0
0

Lightning Web コンポーネント開発を試してみました。
f:id:tyoshikawa1106:20200119180059p:plain

仕事でSalesforceアプリを開発するときにはVisualforceページで開発しているのと、どうしてもLightningコンポーネント開発が必要になるときには一つ前のバージョンのLightning Auraコンポーネントで開発を行ったため、今の所必要になることもなかったのですが、Winter'20の認定資格更新モジュールをクリアするのに必要になってしまったので、重い腰を上げてやってみました。

Lightning Web コンポーネント開発の始め方

Lightning Web コンポーネント開発の始め方ですが、YoutubeのSalesforce Developers Japanのチャンネルで動画が公開されています。
f:id:tyoshikawa1106:20200119180402p:plain

Salesforce Developers Japan - YouTube


実際に作成するのはこの辺りからだと思います。
f:id:tyoshikawa1106:20200119181142p:plain

Lightning Web コンポーネントでHello Wolrd

1. SFDC:Create Lightning Web Componentコマンド実行

コマンド実行でファイルを作成します。
f:id:tyoshikawa1106:20200119181521p:plain

ファイル名はここで入力。
f:id:tyoshikawa1106:20200119181556p:plain


こんな感じでLWCファイルを作成できます。拡張子は.jsです。
f:id:tyoshikawa1106:20200119181721p:plain


作成されるファイルは下記の3つです。

  • helloLwc.js
  • helloLwc.html
  • helloLwc.js-meta.xml


ファイル名の先頭は小文字になるようです。自分の環境ではHelloLwc.jsで最初つくられたのですが保存してSalesforce側にデプロイしたタイミングか、それ以外のどこかで上記の3つのファイルにアクセスできるようになりました。


.xmlのファイルで使用箇所などの設定ができるみたいです。
f:id:tyoshikawa1106:20200119182727p:plain

<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>47.0</apiVersion>
    <isExposed>true</isExposed>
    <targets>
        <target>lightning__HomePage</target>
    </targets>
</LightningComponentBundle>


.htmlファイルでHTMLコードを記述します。
f:id:tyoshikawa1106:20200119182843p:plain

<template>
    <p>Hello LWC!</p>
</template>


DeployコマンドでSalesforce側にリリースします。
f:id:tyoshikawa1106:20200119182957p:plain


正常にリリースすると設定のLightningコンポーネントのページに追加されます。
f:id:tyoshikawa1106:20200119183129p:plain


ここまでできればLightningアプリケーションビルダーで利用可能になっていると思います。今回のコードの場合はホームのページで利用できるコンポーネントです。
f:id:tyoshikawa1106:20200119183331p:plain:w200


あとはドラッグ&ドロップで追加するだけ。テキストが表示されるシンプルなコンポーネントです。
f:id:tyoshikawa1106:20200119183434p:plain


背景も何も無い状態で表示されました。
f:id:tyoshikawa1106:20200119183543p:plain


上記まででLWCコンポーネントの最低限の枠ができました。続いてJS処理の実装です。「{name}」という感じに書くとバインド変数として扱われます。

<template>
    <p>Hello {name}!</p>
</template>

f:id:tyoshikawa1106:20200119195833p:plain


JS側はこんな感じ。

import { LightningElement } from 'lwc';

export default class HelloLwc extends LightningElement {
    name = 'Lightning';
}

f:id:tyoshikawa1106:20200119195926p:plain


デプロイコマンドでリリースするとSalesforce側に変数で宣言した値が表示されることを確認できます。
f:id:tyoshikawa1106:20200119200119p:plain


次はInputフィールドの使い方です。

<template>
    <p>Hello {name}!</p>
    <div>
        <input value={name} onkeyup={onNameChanged} />
    </div>
</template>


JSファイル側は次のように変更します。

import { LightningElement,track } from 'lwc';

export default class HelloLwc extends LightningElement {
    @track name = 'Lightning';

    onNameChanged() {
        this.name = this.template.querySelector('input').value;
    }
}

f:id:tyoshikawa1106:20200119200617p:plain


これでテキストボックスに入力した結果が画面に表示されるようになりました。
f:id:tyoshikawa1106:20200119200736p:plain


次はチェックボックスをつかった条件判定についてです。また、今回は複数のInputフィールドを用意するのでquerySelectorの条件をID指定にします。

<template>
    <p>Hello {name}!</p>
    <div>
        <input data-id="inputName" value={name} onkeyup={onNameChanged} />
    </div>
    <div>
        <input data-id="inputCheckbox" type="checkbox" onchange={onCheckboxChanged} />
        <template if:true={isChecked}>表示</template>
        <template if:false={isChecked}>非表示</template>
    </div>
</template>

f:id:tyoshikawa1106:20200119202447p:plain


JS側はこんな感じ。

import { LightningElement,track } from 'lwc';

export default class HelloLwc extends LightningElement {
    @track name = 'Lightning';
    @track isChecked = false;

    onNameChanged() {
        this.name = this.template.querySelector('[data-id="inputName"]').value;
    }

    onCheckboxChanged() {
        this.isChecked = this.template.querySelector('[data-id="inputCheckbox"]').checked;
    }
}

f:id:tyoshikawa1106:20200119202523p:plain


これで複数のInputフィールドのクエリセレクターの使い方とチェックボックスの値によるIF判定を動かすことができました。
f:id:tyoshikawa1106:20200119202632p:plain


最後にリスト表示についてです。今回は先にJSの処理から。

import { LightningElement,track } from 'lwc';

export default class HelloLwc extends LightningElement {
    @track name = 'Lightning';
    @track isChecked = false;
    @track members = [
        {
            id: "1",
            name: "Sato"
        },
        {
            id: "2",
            name: "Suzuki"
        },
        {
            id: "3",
            name: "Tanaka"
        }
    ];

    onNameChanged() {
        this.name = this.template.querySelector('[data-id="inputName"]').value;
    }

    onCheckboxChanged() {
        this.isChecked = this.template.querySelector('[data-id="inputCheckbox"]').checked;
    }
}


HTML側はこんな感じ。

<template>
    <p>Hello {name}!</p>
    <div>
        <input data-id="inputName" value={name} onkeyup={onNameChanged} />
    </div>
    <div>
        <input data-id="inputCheckbox" type="checkbox" onchange={onCheckboxChanged} />
        <template if:true={isChecked}>表示</template>
        <template if:false={isChecked}>非表示</template>
    </div>
    <div>
        <ul>
            <template for:each={members} for:item="member" for:index="index">
                <li key={member.id}>{index}. {member.name}</li>
            </template>
        </ul>
    </div>
</template>

f:id:tyoshikawa1106:20200119203455p:plain


これでリスト表示ができました。
f:id:tyoshikawa1106:20200119203519p:plain


リスト表示のもう一つの書き方です。

<template>
    <p>Hello {name}!</p>
    <div>
        <input data-id="inputName" value={name} onkeyup={onNameChanged} />
    </div>
    <div>
        <input data-id="inputCheckbox" type="checkbox" onchange={onCheckboxChanged} />
        <template if:true={isChecked}>表示</template>
        <template if:false={isChecked}>非表示</template>
    </div>
    <div>
        <!--
        <ul>
            <template for:each={members} for:item="member" for:index="index">
                <li key={member.id}>{index}. {member.name}</li>
            </template>
        </ul>
        -->
        <ul>
            <template iterator:it={members}>
                <li key={it.value.id}>{it.index}. {it.value.name}: {it.first} : {it.last}</li>
            </template>
        </ul>
    </div>
</template>

f:id:tyoshikawa1106:20200119204903p:plain


この書き方でもリスト表示ができました。また、リストの最初と最後の判定も動いています。
f:id:tyoshikawa1106:20200119204959p:plain


以上がSalesforce Developer JapanのYoutube動画で公開されているのを見ながら試してみたLightning Webコンポーネント開発の基本的な部分です。Apexコードとの連携は含まれていませんがこれをベースに勉強をしていけば良さそうでした。

おまけ

上記で覚えたやり方をベースにWinter'20でつくるハンズオンをやってみました。

HTML
<template>
    <lightning-card  title="Hello">
        <lightning-button label="New" slot="actions"></lightning-button>
        <p class="slds-p-horizontal_small">Card Body (custom component)</p>
        <p slot="footer">Footnote</p>
    </lightning-card>
    <lightning-button label="New" title="Non-primary action" onclick={handleClick} class="slds-m-left_x-small"></lightning-button>
</template>
JS
import { LightningElement } from 'lwc';

export default class MyComponent extends LightningElement {}
XML
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>47.0</apiVersion>
<isExposed>true</isExposed>
<targets>
<target>lightning__Tab</target>
</targets>
</LightningComponentBundle>
カスタムタグ

f:id:tyoshikawa1106:20200119210217p:plain


これで完成。
f:id:tyoshikawa1106:20200119210343p:plain


Ligtning Webコンポーネントの基本的な使い方はこんな感じでした。
f:id:tyoshikawa1106:20200119210354p:plain

その他参考

co-meeting もくもく会#23に参加しました

$
0
0

co-meeting もくもく会#23に参加しました。今回は日曜日の午後開催だったので、14時頃から参加させてもらいました。
f:id:tyoshikawa1106:20200119141514j:plain
※入り口にあるカフェは日曜日お休みでした。


今日のもくもく会では主にTrailheadで認定資格の更新モジュールを中心に進めました。(モジュール5つ完了)
f:id:tyoshikawa1106:20200119174939p:plain


新機能や知らなかった機能が結構あったのでブログにまとめたりして過ごしました。


下のは下書きのままおいてあった記事。たぶん他にも追記する予定でおいてあったけど、思い出せないのとだいたい形になっていたのでそのまま公開。


最近リリースノートをあまり読まなくなっているのですが、認定資格モジュールで特に重要な機能については確認できるので便利でした。また開発環境の無いMarketing Cloudの利用イメージを確認できるTrailheadシミュレータという仕組みがあることを知れたのも良かったです。


家だとあまり集中できなかったりするのですが、もくもく会のような場に参加させてもらうと集中できてよかったです。(ピザも美味しかったです。)
f:id:tyoshikawa1106:20200119183809j:plain

おまけ

今回はもうちょっとやってくということで20時から一時間ほど作業できる時間があったのでPlatformデベロッパーのリリース試験のモジュールクリアのためにLightning Webコンポーネント開発について勉強しました。Salesforce Developer JapanがYoutubeで参考動画を公開してくれているのでそちらがわかりやすかったです。


無事にLightning Webコンポーネント開発の第一歩を踏み出せました。
f:id:tyoshikawa1106:20200119210354p:plain

f:id:tyoshikawa1106:20200119211733p:plain


これでやりたかったことを全部やることができました。充実した時間を過ごせてよかったです。

SFDC:Lightningの公開&リソースカレンダーを試してみました

$
0
0

Lightningで使えるの公開&リソースカレンダーを試してみました。

f:id:tyoshikawa1106:20200128080003p:plain

公開カレンダーまたはリソースカレンダーの作成および管理


公開カレンダーは会社や部門での共通スケジュールを管理できる機能で、リソースカレンダーは会議室やプロジェクターなどの利用スケジュールを管理をするための機能です。

公開 &リソースカレンダーの作成方法

公開 &リソースカレンダーの作成方法です。まずは公開カレンダーですが公開カレンダーの新規作成ボタンからカレンダーを作成できます。今回は例として会社全体の行事などを管理できる全社カレンダーを作成してみます。
f:id:tyoshikawa1106:20200128080404p:plain


名前を入力して、有効チェックをつけて保存ボタンをクリックするだけで作成完了です。
f:id:tyoshikawa1106:20200128080446p:plain


作成後は共有ボタンをクリックしてユーザにアクセス権限を付与します。
f:id:tyoshikawa1106:20200128080521p:plain


社内ユーザ全員にアクセス権限を設定したい場合は公開グループのすべての内部ユーザを対象にすれば大丈夫です。
f:id:tyoshikawa1106:20200128080644p:plain


設定後はこんな感じ。用途に合わせて細かく権限を設定することも可能です。
f:id:tyoshikawa1106:20200128080740p:plain


続いてリソースカレンダーです。こちらもはリソースカレンダーの新規ボタンから作成します。作成→共有設定と手順は公開カレンダーと同じです。
f:id:tyoshikawa1106:20200128081105p:plain


こんな感じで設定完了です。
f:id:tyoshikawa1106:20200128081128p:plain

公開 &リソースカレンダーのアクセス方法

公開 &リソースカレンダーのアクセス方法です。カレンダーページで右側にある他のカレンダーの追加メニューから設定します。
f:id:tyoshikawa1106:20200128081302p:plain


ポップアップが表示されるので、最初は人を検索できますがアイコンをクリックすれば公開&リソースカレンダーを検索できます。
f:id:tyoshikawa1106:20200128081455p:plain


このように追加したいカレンダーを検索できます。
f:id:tyoshikawa1106:20200128081518p:plain


リソースカレンダーも同様に検索→追加できます。
f:id:tyoshikawa1106:20200128081611p:plain


こんな感じです。
f:id:tyoshikawa1106:20200128081702p:plain


追加後は色を設定しておくとカレンダーに表示された予定を確認しやすくなります。
f:id:tyoshikawa1106:20200128081756p:plain


カスタム色を選択から背景のテクスチャをつけたりも可能です。
f:id:tyoshikawa1106:20200128081835p:plain


これで公開&リソースカレンダーへのアクセスが可能になります。注意点としてはシステム管理者側での一括設定ができないようで各ユーザがカレンダーページで設定する必要があります。

公開&リソースカレンダーへの予定の追加

最後に公開&リソースカレンダーへの予定の追加方法です。登録された予定の確認だけなら上記のアクセス設定で可能ですが、カレンダーに表示したい予定の登録は下記のように行動の追加リンクから行います。

f:id:tyoshikawa1106:20200128082120p:plain


こんな感じ。
f:id:tyoshikawa1106:20200128082239p:plain


これで公開&リソースカレンダーへの予定の追加ができました。公開カレンダーのアクセス設定を行えばすべてのユーザがカレンダーページで予定を表示できます。
f:id:tyoshikawa1106:20200128082322p:plain


注意点ですが、任命先は個人のユーザではなく、公開カレンダーを設定する必要があります。そのため全社に共有したい個人の予定ではなく全社に共有する全体の予定を管理する使い方となります。任命先の指定なので行動の新規ページで切り替えて設定もできます。
f:id:tyoshikawa1106:20200128082655p:plain


また、ホームに表示される今日の行動には予定は表示されないのも注意点の一つです。あくまで予定はカレンダー内でのみ確認できます。
f:id:tyoshikawa1106:20200128083516p:plain:w300

※リソースカレンダーの行動の追加について

リソースカレンダーの行動の追加についてですが、こちらはちょっと特殊で、「被招集者」の仕組みの有効化が必要です。
f:id:tyoshikawa1106:20200128083347p:plain

行動のリソースの予約


被招集者は行動のレイアウト設定で追加することで利用できます。
f:id:tyoshikawa1106:20200128083614p:plain


この機能を追加すると次のように複数の参加者を設定できます。
f:id:tyoshikawa1106:20200128083708p:plain


同様にリソースもこちらで選択できます。
f:id:tyoshikawa1106:20200128083815p:plain


登録結果はこんな感じ。参加者や利用するリソースが管理できています。
f:id:tyoshikawa1106:20200128083909p:plain


カレンダーにはこのように表示されます。自分の予定とリソースカレンダーの予定で2つ登録されるので通常はリソースカレンダーの表示はオフにしておくなどでもいいかもしれません。(会議室やプロジェクターなどの確認時にオンにするイメージ)
f:id:tyoshikawa1106:20200128084057p:plain


Lightningの公開&リソースカレンダーはこんな感じでした。

SFDC:Salesforceのブランド設定とログインページのボタン色について

$
0
0

Salesforceではテーマやブランドの設定で背景色を変更したりできます。ですがログインページのボタンの色は変更できないみたいです。

f:id:tyoshikawa1106:20200202110450p:plain

My Domain - Allow Users to Change the Color of "Log In" Button - Ideas - Salesforce Trailblazer Community


ログインページのカスタマイズは私のドメインの設定からできますが、最近テーマおよびブランド設定などカスタマイズできる箇所が増えていたのでどこかの設定で反映されるんじゃないかなと試してみました。

コミュニティ周りは除くと設定できるのは下記の4つだと思います。

  • テーマおよびブランド設定
  • アプリケーションのブランド設定
  • Salesforce ブランド設定
  • 私のドメイン

テーマおよびブランド設定

Salesforceにログイン後に反映される背景色を変更できる設定はこちら。
f:id:tyoshikawa1106:20200202110704p:plain

f:id:tyoshikawa1106:20200202110812p:plain


ヘッダーの背景色以外にもボタンの色やリンクの色も変更できます。
f:id:tyoshikawa1106:20200202110913p:plain

アプリケーションのブランド設定

アプリケーションの設定でも色設定ができます。
f:id:tyoshikawa1106:20200202111031p:plain


少し分かりづらいですが変更できるのはナビゲーションバーの背景色。
f:id:tyoshikawa1106:20200202111148p:plain

Salesforce ブランド設定

Salesforce ブランド設定ではモバイルアプリの色を変更できます。
f:id:tyoshikawa1106:20200202111238p:plain

私のドメイン

私のドメインの設定ではログインページのカスタマイズができます。
f:id:tyoshikawa1106:20200202111336p:plain



上記を試してログインページを確認してみたところ・・・ログインボタンの色は変更できませんでした。
f:id:tyoshikawa1106:20200202111651p:plain


ログインボタンの色は変更できませんでしたが、それ以外の色はだいたい変更できたのでブランド設定が必要な場合は上記から対応すればいいと思います。

関連記事

SFDC:Lightningのグローバルアクションとフィード投稿設定について

$
0
0

Salesforceのグローバルアクションは取引先や商談に紐付く活動をササッと登録できて便利な機能です。
f:id:tyoshikawa1106:20200202134224p:plain


この機能を利用してデータを新規作成するとChatterフィードに新規データ作成の通知投稿が行われます。
f:id:tyoshikawa1106:20200202134439p:plain


業務用途に合えば便利ですが、ユーザの投稿に混ざるのでその人のChatterフィードがシステム投稿で埋もれてしまうのでちょっと困るかなとも思いました。
f:id:tyoshikawa1106:20200202134605p:plain


この自動投稿はグローバルアクションのフィード項目を作成のチェックボックスをオフにすることで無効にできます。
f:id:tyoshikawa1106:20200202134657p:plain


新規ToDoや活動の記録など標準のグローバルアクションでも無効にできるので特別必要でなければ運用開始時には無効にしておく方がいい気がしました。

関連記事

SFDC:Lightningのごみ箱機能でレポートの復元を試してしてみました

$
0
0

Winter'20でLightning Experienceにごみ箱機能が追加されました。これでClassicに戻さずにデータの復元が可能になりました。

f:id:tyoshikawa1106:20200204075027p:plain


ただし一部復元対象として扱われないオブジェクトがあるみたいです。例としてレポートオブジェクトがあります。
f:id:tyoshikawa1106:20200204075122p:plain


レポートを削除リンクから削除してからごみ箱を確認すると・・・
f:id:tyoshikawa1106:20200204075207p:plain

f:id:tyoshikawa1106:20200204075234p:plain


削除したレポートのレコードが表示されていないことを確認できます。
f:id:tyoshikawa1106:20200204075403p:plain


レポートに関してはClassicのごみ箱から引き続き復元できました。
f:id:tyoshikawa1106:20200204075453p:plain


不要になったレポートを削除する作業でうっかり必要なレポートを削除してしまったときはClassicに切り替えてから復元作業をする流れで対応できます。

関連記事


SFDC:ApexでDecimal型数値の整数変換を試してみました

$
0
0

ApexでDecimal型数値の整数変換する方法についてです。
f:id:tyoshikawa1106:20200204080549p:plain

Salesforce Developers


整数変換はround関数で実行できます。
f:id:tyoshikawa1106:20200204080650p:plain

Decimal d = null;
// round
d = 1;
System.debug('d = 1 : ' + d.round());
d = 1.1;
System.debug('d = 1.1 : ' + d.round());
d = 1.4;
System.debug('d = 1.4 : ' + d.round());
d = 1.5;
System.debug('d = 1.5 : ' + d.round());
d = 1.6;
System.debug('d = 1.6 : ' + d.round());
d = 1.9;
System.debug('d = 1.9 : ' + d.round());


上記の場合はこうなります。
f:id:tyoshikawa1106:20200204080732p:plain


round関数にはSystem.RoundingMode.UPやSystem.RoundingMode.DOWNなどのオプションがあります。

System.RoundingMode.UP

f:id:tyoshikawa1106:20200204080843p:plain

Decimal d = null;
// round
d = 1;
System.debug('d = 1 : ' + d.round(System.RoundingMode.UP));
d = 1.1;
System.debug('d = 1.1 : ' + d.round(System.RoundingMode.UP));
d = 1.4;
System.debug('d = 1.4 : ' + d.round(System.RoundingMode.UP));
d = 1.5;
System.debug('d = 1.5 : ' + d.round(System.RoundingMode.UP));
d = 1.6;
System.debug('d = 1.6 : ' + d.round(System.RoundingMode.UP));
d = 1.9;
System.debug('d = 1.9 : ' + d.round(System.RoundingMode.UP));


UPの場合はこうなります。
f:id:tyoshikawa1106:20200204080921p:plain

System.RoundingMode.DOWN

f:id:tyoshikawa1106:20200204081030p:plain

Decimal d = null;
// round
d = 1;
System.debug('d = 1 : ' + d.round(System.RoundingMode.DOWN));
d = 1.1;
System.debug('d = 1.1 : ' + d.round(System.RoundingMode.DOWN));
d = 1.4;
System.debug('d = 1.4 : ' + d.round(System.RoundingMode.DOWN));
d = 1.5;
System.debug('d = 1.5 : ' + d.round(System.RoundingMode.DOWN));
d = 1.6;
System.debug('d = 1.6 : ' + d.round(System.RoundingMode.DOWN));
d = 1.9;
System.debug('d = 1.9 : ' + d.round(System.RoundingMode.DOWN));

DOWNの場合はこうなります。
f:id:tyoshikawa1106:20200204081146p:plain


他にもいくつかオプションが用意されているので開発者ガイドで確認するのがいいと思います。

SFDC:パスワードポリシー設定の有効期限の1日以上判定について

$
0
0

パスワードポリシー設定の有効期限の1日以上判定についてです。

f:id:tyoshikawa1106:20200204230447p:plain


今までSales Cloudライセンスのユーザのみで運用している組織に対してChatter Freeユーザを有効化する必要があったのですが、パスワードポリシー設定の有効期限の1日以上判定の部分でちょっとトラブルに遭遇しました。


トラブルが起きたときの経緯は下記のとおりです。

  1. Chatter Freeユーザ用のプロファイルを用意
  2. Chatter Freeユーザの新規作成
  3. 上記ユーザ新規作成時に利用者に初回ログインの通知メールを送付
  4. ユーザ側でメールのリンクをクリック
  5. 通常は初回ログインのパスワード登録画面に移動するはずがログインページに移動してログイン失敗のメッセージが表示される


上記のように初回ログイン時になぜかパスワード登録ページに移動できずにログイン失敗となる現象です。・・・がこのトラブルに関しては原因不明ですがまれに遭遇することがありました。(稀に発生するのも不思議ですが...)


こうした初回ログイン時にエラーとなったときの対処方法として管理者ユーザがユーザ詳細ページのパスワードリセットボタンでパスワードを初期化することで復旧できると思います。


ですが、今回用意したChatter Freeユーザではパスワードリセット時に次のエラーが発生しました。

パスワードリセットに失敗しました。前回リセットから24時間経過していません。 (←だいたいこんな感じのメッセージ)


このエラーはパスワードポリシーの下記のチェックボックス項目にチェックがあると発生します。

パスワードの有効期限は 1 日以上にする必要があります

f:id:tyoshikawa1106:20200204231909p:plain


チェックがあることで最後にパスワードリセットしてから(?) 24時間経過しないと次のパスワードに変更できないようです。またこの設定についてはパスワードポリシーの設定ページ以外にもプロファイルの設定ページでも制御されています。

f:id:tyoshikawa1106:20200204232131p:plain


今回新しく作成したChatter Freeユーザのパスワードリセットでエラーが発生したのは、プロファイル側のチェックボックスの制御が優先されていたため起きていました。とはいえセキュリティ上の制限がなければパスワードポリシー側とプロファイル側で共通の設定にしておくのがいいと思います。


パスワードポリシー設定の有効期限の1日以上判定についてはこんな感じです。今回のように新規ユーザの初回ログインでエラーが発生したときにも影響のある制御項目のため、業務の要件を確認してから必要に応じてオフにしておくといいと思います。

SFDC:ChatterFreeユーザの標準プロファイルについて

$
0
0

ChatterFreeユーザの標準プロファイルについてです。

f:id:tyoshikawa1106:20200204233935p:plain


下記の2つの標準プロファイルが用意されています。

  • Chatter Free User
  • Chatter Moderator User


この2つの標準プロファイルの違いですが、Chatter Moderator Userの方は権限が一つ追加されたプロファイルとなります。追加された権限は下記の権限です。

Chatter のモデレート

f:id:tyoshikawa1106:20200204234146p:plain


モデレート権限ですが、下記の2つの機能などが付与されるとのことです。

  • Chatter Free ユーザの有効化または無効化
  • Chatter Free ユーザのモデレータへの任命または権限の取り消し

f:id:tyoshikawa1106:20200204234305p:plain

Help | Training | Salesforce


またモデレータ権限のあるユーザのプロフィール写真にはモデレータであることを確認できる表示がされるそうです。(ヘルプのキャプチャを参照)



基本的にはモデレータ権限の無い、普通のChatter Free Userのプロファイルを使えばいいと思います。また、補足として実際にユーザに割り当てるのは標準プロファイルではなく、コピーして作成したカスタムプロファイルを割り当てるのがいいと思います。カスタムプロファイルを用意する際には顧客の招待などシステム権限で不要なものは無効にしておくと権限を付与しすぎるのを防止できると思います。

SFDC:LightningでChatterFreeユーザ向けのアプリケーション設定を試してみました

$
0
0

LightningのChatterFreeユーザとアプリケーション設定を試してみました。Chatter Freeユーザは取引先などのレコードへのアクセス権限が無いChatterのみが利用できるライセンスのユーザとなります。そのためカスタムアプリケーションを作成して割り当てることはできないため、基本はアプリケーションランチャーから各タブリンクにアクセスする仕組みとなっているみたいです。

f:id:tyoshikawa1106:20200205074547p:plain

Help | Training | Salesforce


アクセスできるタブは次のとおりです。Chatter関係のタブとごみ箱にアクセスできます。
f:id:tyoshikawa1106:20200205074705p:plain


カスタムアプリケーションの割り当てはできませんが、ログイン時に表示されるタブの管理は可能です。標準アプリケーションのSalesforce Chatterで管理されています。(同名のアプリケーションが2つありますが、片方は接続アプリケーションで別用途のものです。)
f:id:tyoshikawa1106:20200205074856p:plain


このような感じでナビゲーションバーに表示したいタブを指定します。ホームのタブは選択された状態となりますが、Chatter Free ユーザはアクセス不可となります。
f:id:tyoshikawa1106:20200205075114p:plain


プロファイルへの割り当ての指定が可能ですが、Chatter Freeライセンスのプロファイルは選択できません。自動でこのアプリケーションが割り当てされる扱いとなっているようです。
f:id:tyoshikawa1106:20200205075231p:plain


上記のSalesforce Chatterアプリケーションで設定したタブの並び順でChatter Freeユーザログイン時にタブが表示されます。
f:id:tyoshikawa1106:20200205075352p:plain


ちなみに表示するタブをホームのみにすると次のようになりました。
f:id:tyoshikawa1106:20200205075426p:plain


LightningのChatterFreeユーザとアプリケーション設定はこんな感じです。アプリケーション設定で非表示にしたタブはアプリケーションランチャーからはアクセス可能なのでアクセス不可設定の目的ではなくログイン時に必要な機能にアクセスしやすくする目的で利用できると思います。

SFDC:ChatterFreeユーザの作成手順について

$
0
0

Chatter Freeユーザの作成手順についてです。Chatterのみが利用できるライセンスのユーザで追加費用なしで5,000ライセンスが利用可能になっていると思います。利用可能なライセンス数は設定の組織情報ページにあるユーザライセンスの欄で確認できます。

f:id:tyoshikawa1106:20200205080204p:plain

1. プロファイル作成

ChatterFreeユーザの作成が必要になったら、まずはプロファイルを用意します。Chatter Free ライセンスのユーザように標準プロファイルが用意されていますが、標準プロファイルは権限設定等の変更ができないため、基本的にはコピーしてカスタムプロファイルを用意してそちらをユーザに割り当てます。
f:id:tyoshikawa1106:20200205080426p:plain


ベースとして利用するのは「Chatter Free User」プロファイルです。Chatter Moderator Userプロファイルは一部管理権限が付与したいときのためのものなので基本的には不要と思います。

SFDC:ChatterFreeユーザの標準プロファイルについて - tyoshikawa1106のブログ


Chatter専用ライセンスのプロファイルとなるので変更できる権限設定は限られています。接続アプリケーションへのアクセスは基本的にはチェック不要だと思います。(ひとまずPCで普通に使う分には関係ないです。)
f:id:tyoshikawa1106:20200205081047p:plain


システム管理者権限ですが、デフォルトでは顧客への招待やパスワード無期限の権限が付与されていたりするので下記のように不要な権限は除外しておくといいと思います。必要になったタイミングで追加する管理で問題ないと思います。
f:id:tyoshikawa1106:20200205081235p:plain


セッションの設定は特に変更無しで問題ないと思います。組織のルールに合わせて必要な場合は変更してください。
f:id:tyoshikawa1106:20200205081315p:plain


パスワードポリシーも組織のルールに合わせる形ですが、「パスワードの有効期限は 1 日以上にする必要があります」のチェックはオフにしておく方が管理しやすいと思います。(パスワードリセットが24時間不可になる場合があります。)

SFDC:パスワードポリシー設定の有効期限の1日以上判定について - tyoshikawa1106のブログ

2. アプリケーション設定

プロファイルを用意できたら続いてアプリケーション設定です。標準アプリケーションのSalesforce Chatterをカスタマイズします。詳細は下記リンク先にまとめてあります。

SFDC:LightningでChatterFreeユーザ向けのアプリケーション設定を試してみました - tyoshikawa1106のブログ

3. ユーザの作成

最後にユーザの作成です。ユーザライセンスでChatter Freeを選択すると先程作成したプロファイルが選択できます。あとは通常のユーザ作成の手順と同じです。マーケティングユーザの権限など不要な権限はオフになるようにしておくといいと思います。(誤ってチェックありでも機能の利用はできないと思いますが)
f:id:tyoshikawa1106:20200205082055p:plain

補足1

Chatter Freeユーザとして作成後、Sales Cloudユーザへの機能のアップグレードは可能になっています。但し、Sales CloudユーザからChatter Freeユーザへの機能のダウングレードはできないため、切り替えの際には良く検討してから対応されるのがいいと思います。
f:id:tyoshikawa1106:20200205082726p:plain

補足2

Sales Cloudの利用権限は不要だが取引先や活動へのアクセスぐらいは利用したい。(特に活動による予定の共有)という場合はChatter Plusのライセンスが用意されているみたいです。※使ったことはないので詳細は未確認です。
f:id:tyoshikawa1106:20200205082302p:plain

Help | Training | Salesforce


もしかすると新規組織での追加はできないかもしれません。
f:id:tyoshikawa1106:20200205082559p:plain

SFDC:ChatterFreeユーザによるメモ機能の利用を試してみました

$
0
0

Chatter Freeユーザとメモ機能についてです。Chatter FreeライセンスはChatter機能のみ利用可能なため、それ以外の機能は利用できないユーザです。そんな中、メモの機能は利用可能となっていました。

f:id:tyoshikawa1106:20200209163302p:plain


ただし、メモのタブへのアクセスはできないみたいです。
f:id:tyoshikawa1106:20200209163348p:plain


登録したメモにはどうやってアクセスすればいいのかと検索してみたところ、ファイルのオブジェクトで管理されていました。
f:id:tyoshikawa1106:20200209163505p:plain


ということで登録したメモはファイルタブからアクセスが可能です。
f:id:tyoshikawa1106:20200209163611p:plain


メモの新規作成はグローバルアクションからのみとなっているみたいです。
f:id:tyoshikawa1106:20200209163650p:plain


レコードに追加のボタンはさすがに機能しないかと思ったのですが、管理コンテンツというオブジェクトへの追加が可能でした。
f:id:tyoshikawa1106:20200209163809p:plain


メモを共有については、人とグループが用意されています。こちらは作成直後は非公開でこの機能で社内共有するため必要な機能です。
f:id:tyoshikawa1106:20200209163939p:plain


Chatter Freeユーザによるメモ機能の利用はこんな感じでした。アプリケーションランチャーからメモタブにアクセスできないので、利用可能な機能には含まれていないと思っていたのですが、問題なく利用できるみたいです。

SFDC:Financial Services CloudのDeveloper Edtion組織の有効化を試してみました

$
0
0

Financial Services CloudのDeveloper Edtion組織の有効化を試してみました。サインアップ方法はTrailheadで紹介されています。

f:id:tyoshikawa1106:20200210075402p:plain

クライアントのリレーションを対応付ける 単元 | Salesforce Trailhead


サインアップページはこのような感じ。
f:id:tyoshikawa1106:20200210075518p:plain

Learn Financial Services Cloud on Trailhead | Salesforce Developers


フォームに入力すると有効化メールが届くのでそちらから初回ログインを行います。
f:id:tyoshikawa1106:20200210080055p:plain


ログイン後はこんな感じ。私のドメインは最初から有効化された状態でした。
f:id:tyoshikawa1106:20200210080206p:plain


インストール済みパッケージのページでFinancial Services Cloud関係のパッケージがインストールされている状態であることを確認できます。
f:id:tyoshikawa1106:20200210080353p:plain


組織のディスク使用量のページでテストデータが登録されていることも確認できました。
f:id:tyoshikawa1106:20200210080525p:plain


用意されたアプリケーションはこんな感じ。
f:id:tyoshikawa1106:20200210080658p:plain

Financial Services Cloud (Classic)

f:id:tyoshikawa1106:20200210080740p:plain

Retail Banking Console - リテールバンキングコンソール

f:id:tyoshikawa1106:20200210080838p:plain

Commercial Banking Console - 商業銀行コンソール

f:id:tyoshikawa1106:20200210080925p:plain

Wealth Management - 資産管理

f:id:tyoshikawa1106:20200210081046p:plain

Retail Banking - リテールバンキング

f:id:tyoshikawa1106:20200210081132p:plain

Insrance Console - 保険コンソール

f:id:tyoshikawa1106:20200210081225p:plain

保険エージェント

f:id:tyoshikawa1106:20200210081301p:plain

おまけ① - Lightning Bolt

f:id:tyoshikawa1106:20200210081416p:plain

おまけ② - Einstein Analytics Stadio

f:id:tyoshikawa1106:20200210081512p:plain


利用できるアプリケーションは上記のようになっていました。アプリケーションランチャーから確認できる各タブはこんな感じ。
f:id:tyoshikawa1106:20200210081641p:plain


このようにFinancial Services Cloudの機能を試せるDeveloper Edtion組織が利用可能となっているので、勉強したいときにはこの組織にサインアップすれば良さそうです。またTrailheadの製品フィルタでFinancial Services Cloudの絞り込みを行えば関連トレイルを探すことができます。
f:id:tyoshikawa1106:20200210081838p:plain

トレイル | Salesforce Trailhead


SFDC:Lightningのカレンダー共有を試してみました

$
0
0

Lightningのカレンダー共有を試してみました。

f:id:tyoshikawa1106:20200211084054p:plain


関連先や名前の項目が未登録の場合は基本的に非公開の活動となるため他のユーザは予定を確認することはできません。ですが、Lightningのカレンダーの機能を利用することで予定を確認することが可能となっています。

f:id:tyoshikawa1106:20200211084405p:plain:w200

f:id:tyoshikawa1106:20200211084538p:plain


こちらが他のユーザのカレンダーを表示した結果です。確認できるのは登録された予定の開始時間と終了時間のみとなっています。行動の詳細ページへのアクセスはできません。
f:id:tyoshikawa1106:20200211084652p:plain

メモ - 行動の予定の公開項目

ここで件名の代わりに表示されている「予定あり」の文言ですが、パッと見た感じ行動の予定の公開方法の項目で指定した内容が表示されているように見えます。
f:id:tyoshikawa1106:20200211084915p:plain

f:id:tyoshikawa1106:20200211084938p:plain


・・が試しに他の値に変更してみたところ特に反映されたりはありませんでした。予定の公開項目はLightningカレンダーではあまり意味が無いようです。


他ユーザの予定の共有についてですが、私のカレンダーの共有設定から可能です。
f:id:tyoshikawa1106:20200211085830p:plain

f:id:tyoshikawa1106:20200211085738p:plain


これで他のユーザのカレンダーで自分の予定を表示させることができました。
f:id:tyoshikawa1106:20200211085910p:plain


他ユーザ側では行動の詳細ページへのアクセスも可能ですが、編集や削除の機能は除外されてレイアウトも読み込み専用のレイアウトが適用されているようでした。
f:id:tyoshikawa1106:20200211090018p:plain


カレンダー共有後に一部行動を非公開にする方法についてです。
f:id:tyoshikawa1106:20200211090124p:plain


これは行動の持つ非公開チェックボックスの項目にチェックをつけることで予定ありとして表示可能になります。
f:id:tyoshikawa1106:20200211090309p:plain


基本的にカレンダーの共有をしたらすべての予定が共有され、非公開にしたいものを選択していくスタイルになるので少し注意が必要かもしれません。

カレンダーの共有とレポートについて

この方法で予定を共有した場合はLightningカレンダーでのみ活動のアクセスが可能になります。たとえば行動で自分の予定の一覧を確認できるレポートを作成したとします。
f:id:tyoshikawa1106:20200211090836p:plain:w300


他ユーザがそのレポートにアクセスしても内容を確認することができません。
f:id:tyoshikawa1106:20200211090946p:plain


カレンダーの共有で可能なのはあくまでLightningカレンダーのページ内のみとなっているため、レコードのアクセス権限を付与する場合は関連先や名前の項目にレコードを紐付けてレコードアクセス権限で制御する必要があります。

その他の予定の共有方法

ミーティングなど複数のメンバーの予定の場合に一人の参加者が他の参加者を招待する形で予定を共有することが可能です。
f:id:tyoshikawa1106:20200211091233p:plain


行動に用意された被招集者項目で参加者として指定することでそのユーザの予定として共有することが可能です。招待されたユーザ側でこの予定を確認できるのはホームの「今日の行動」コンポーネント内となります。
f:id:tyoshikawa1106:20200211091415p:plain


編集や削除権限は付与されませんが、行動の詳細は確認できます。
f:id:tyoshikawa1106:20200211091504p:plain


参加ユーザのカレンダーにも表示されます。
f:id:tyoshikawa1106:20200211091606p:plain


ちなみに招待された際の参加や非参加の返信についてですが、Lightnig SyncでMicrosoftやGoogleと連携したときにのみ利用可能となっています。
f:id:tyoshikawa1106:20200211091856p:plain

行動への招待に対する返答


また、行動の被招集者機能で招待できるのは社内ユーザのみではなく取引先責任者なども含まれます。Lightning Syncで連携がされていない場合、招待対象として選択しても通知メールが送信されたりはしないとのことです。(社内ユーザ含む)。Lightning SyncでMicrosoftやGoogleと連携したあとは、連携先のサービスの機能が適用される仕組みと思います。


Lightningのカレンダーの共有はこんな感じでした。

おまけ

Salesforceのカレンダー機能を利用するとログイン時にその日の予定を確認できるので便利です。
f:id:tyoshikawa1106:20200211093244p:plain

関連記事

SFDC:テリトリーの設定の有効化を試してみました

$
0
0

テリトリーの設定の有効化を試してみました。

f:id:tyoshikawa1106:20200211094337p:plain


テリトリーの概要はこんな感じ。(Trailheadより)

営業テリトリーを定めれば、どの担当者がどの取引先や商談に割り当てられているかを簡単に追跡できます。テリトリーを効率的に管理することで、リソースを効率的に割り当てることになるため、売上や利益が最大となる可能性が高まります。さらに、テリトリー管理によってチーム内の健全な競争が促され、盛り上がります。たとえば、今四半期の目標を最初に達成するのは北東部と南東部のどちらのテリトリーかを競わせることができます。


設定ページから有効化できます。有効化時にApexクラスを動かしたりもできるみたいです。また無効化リンクも用意されていました。
f:id:tyoshikawa1106:20200211094500p:plain


有効化すると設定メニューが追加されます。
f:id:tyoshikawa1106:20200211094532p:plain


有効化後はテリトリー種別を作成します。個々のテリトリーを分類して定義する設定とのことです。
f:id:tyoshikawa1106:20200211094827p:plain


こんな感じ。
f:id:tyoshikawa1106:20200211094924p:plain


続いてテリトリーモデルの設定を行います。テリトリーモデルレコードは、テリトリー、ユーザ割り当て、取引先割り当てを結び付けるものとのことです。
f:id:tyoshikawa1106:20200211095053p:plain


こんな感じ。
f:id:tyoshikawa1106:20200211095249p:plain


次はテリトリーを作成します。テリトリーモデルの改装を表示ボタンから作成ページにアクセスできます。
f:id:tyoshikawa1106:20200211095333p:plain

f:id:tyoshikawa1106:20200211095428p:plain


作成結果です。
f:id:tyoshikawa1106:20200211095527p:plain

f:id:tyoshikawa1106:20200211095512p:plain


次は割り当てルールの作成を行います。
f:id:tyoshikawa1106:20200211101147p:plain

f:id:tyoshikawa1106:20200211101335p:plain

これで準備完了です。最後に有効化ボタンからテリトリーを有効化します。
f:id:tyoshikawa1106:20200211101234p:plain

f:id:tyoshikawa1106:20200211101313p:plain


有効化完了後には通知メールも届きました。
f:id:tyoshikawa1106:20200211101449p:plain


テリトリーアクセスレベルに記載されているとおり、このテリトリーの割り当て条件に一致する取引先へのアクセス権限をテリトリー割り当てユーザに付与することができます。
f:id:tyoshikawa1106:20200211101757p:plain


取引先の参照ボタンでテリトリーの対象となった取引先を確認できます。
f:id:tyoshikawa1106:20200211101827p:plain

おまけ

上記設定についてはTrailheadを見ながら試しましたが、割り当てルールの設定に少し誤りがありました。正しい設定のキャプチャは下記のとおりです。(ラベルに誤字があったのと比較の判定で「<」としていましたが「<=」が正でした。)
f:id:tyoshikawa1106:20200211102233p:plain

f:id:tyoshikawa1106:20200211102250p:plain

参考

SFDC:テリトリーモデルのコピーとその他の設定を試してみました

$
0
0

テリトリーモデルのコピーとその他の設定を試してみました。

f:id:tyoshikawa1106:20200211102654p:plain


テリトリーモデルのコピーボタンからサクッとコピーできるようになっています。下記のとおりに関連する設定が丸々コピーできるようになっているみたいです。

テリトリーモデルのコピーについて
このテリトリーモデルをコピーすると、テリトリー、オブジェクトテリトリー割り当てルール、割り当て済みユーザ、手動による割り当て済み取引先など、そこに含まれるすべてのオブジェクトがコピーされます。


テリトリーモデルの有効化ですが、一つのみとなっている感じでした。
f:id:tyoshikawa1106:20200211103258p:plain

f:id:tyoshikawa1106:20200211103312p:plain


試しに現在有効化となっているモデルをアーカイブして、コピーでつくったモデルを有効化したところ、正常に有効化されました。
f:id:tyoshikawa1106:20200211103555p:plain

f:id:tyoshikawa1106:20200211103644p:plain


コピーの機能は設定を変更する際に過去の設定を破棄せずに移行準備を進めるための機能なのだと思います。


その他の設定

テリトリーモデルですがフィード追跡機能を有効化することができるみたいです。
f:id:tyoshikawa1106:20200211103012p:plain


フィード追跡を有効化するとこんな感じに表示されるようになります。
f:id:tyoshikawa1106:20200211104034p:plain

それ以外ではオブジェクトマネージャーでの設定もサポートされています。
f:id:tyoshikawa1106:20200211103048p:plain


例えばテリトリーモデルのレイアウト変更が可能だったりします。
f:id:tyoshikawa1106:20200211103126p:plain


実際に設定を試してはいない部分ですが、その他できることとしてはこんな感じ。
f:id:tyoshikawa1106:20200211104221p:plain

f:id:tyoshikawa1106:20200211104203p:plain

f:id:tyoshikawa1106:20200211104240p:plain


テリトリーモデルのコピーとその他の設定はこんな感じでした。

参考

SFDC:キャンペーンの作成権限とマーケティングユーザオプションについて

$
0
0

Salesforceのキャンペーンオブジェクトはマーケティング施策を管理するためのオブジェクトです。

f:id:tyoshikawa1106:20200212075652p:plain


キャンペーンオブジェクトの作成権限と更新権限を付与するにはマーケティングユーザオブションのチェックをつける必要があります。このチェックが無いユーザはシステム管理者でも作成と更新を行うことができません。

f:id:tyoshikawa1106:20200212075806p:plain:w300


権限が無い場合はこのように新規ボタンや編集リンクが非表示となります。
f:id:tyoshikawa1106:20200212075921p:plain


ちなみにプロセスビルダーのオブジェクト指定はマーケティングユーザの付与関係無しに選択可能となっていました。
f:id:tyoshikawa1106:20200212080125p:plain


フローに関してはマーケティングユーザのチェックが無いと選択不可となります。
f:id:tyoshikawa1106:20200212080328p:plain


マーケティングユーザのチェックがある場合はこのように選択肢に表示されます。
f:id:tyoshikawa1106:20200212080446p:plain


マーケティングユーザのチェックは機能ライセンスとして管理されています。デフォルトで数名分付与されていますが、上限を超えてユーザに付与したい場合は機能ライセンスの追加が必要になります。(※下記は検証用の開発者組織の場合の件数です。)
f:id:tyoshikawa1106:20200212080649p:plain

SFDC:Google Chrome 80へのアップデートと日時型項目の日付の表記ズレについて

$
0
0

2月12日の午前中にSalesforceの利用者から作成日が未来日付になってると問い合わせがあり、そんなことはありえないですよ..と思いながら確認したところ、本当に未来日付の2月13日と表示されていました。ところが自分のアカウントで同じデータを確認したところ、正しい日付が表示されている状況となっていました。


これはちょっとおかしいと検証してみたところ、確認できた範囲で下記の現象が発生していました。

  • すべてが未来日付になっていたわけではなく一部のデータのみ。
  • Classicでは発生せず
  • キャッシュクリアやCookieクリアも効果なし
  • Salesforceへの再ログインやPCの再起動も効果なし
  • 他のPCでは再現せず (代理ログインで検証)


Lightning Experienceでは稀に挙動がおかしくなることがあるのですが、基本的には一時的な現象だったりするので、今回もそうかなと考えていました。


・・ですがこの現象についておそらくGoogle Chrome 80の影響の可能性がありますと情報を頂き、検証してみたところChrome 80にアップデート後に作成日の値がズレる現象が発生しました。


Chrome 80といえばCookie周りで仕様変更があったのが話題になっています。


Cookieに関係する開発は行っていなかったので気にしていなかったのですが、Salesforceの標準機能部分にも影響があるみたいです。
また、現時点で確認できたこととして、ズレて表示された作成日の値は、表示がおかしいだけで、システム側で保持されているデータは正しい日時が保持されていました。

  • 上記でも書きましたがClassicでは問題なし
  • Apexの値を取得した際にも正しい日付がセットされている
  • 日付のソートは本来の日付の値でソートされる


ということでおそらくこれによってApex処理に影響はでていないと思います。。


その他の部分では下記の確認ができました。

  • 発生項目 = 日時型の項目 (標準項目とカスタム項目の両方で発生を確認。日付型の場合は影響なし。)
  • 発生タイミング = 夜間の0時から1時までの時間帯の値がセットされた日時項目で発生。


Google Chome80のCookieまわりの仕様変更がどのようにSalesforceのLightning Experienceの日時型項目の値の表示ズレに影響しているかは不明ですが、日時項目の日付がおかしいと問い合わせを受けた場合はGoolge Chromeのバージョンを確認するのが良さそうです。

補足

下記ヘルプが公開されています。

Viewing all 1438 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>