ServiceNow インスタンスで異なる通貨を使用する方法Issue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } システムが各値に対して少なくとも 2 つの通貨で処理する場合、通貨フィールドのフィルタリング、ソート、および表示の結果にユーザーが混乱する可能性があります。システムには、ユーザーのロケール設定によって決定されるセッション通貨と、各通貨値のシステムロケールによって決定される参照通貨があります。インスタンスで複数の通貨が許可されている場合、ユーザーは追加の通貨値を扱う可能性があります。 アグリゲーションとフィルタリングでは参照通貨が使用され、ユーザーに表示されるのはセッション通貨であることに注意してください。換算レートが変化するので、フィルタリングされた参照通貨の値は、セッション通貨の値が示す順序とは異なる場合があります。集計でも同じ種類の問題が発生します。 Symptoms<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } フィルタリングには参照通貨値が使用され、セッション通貨値が表示されるため、通貨フィールドでフィルタリングされたリストは期待どおりの順序にならない場合があります。 参照通貨の値が集計されてからセッション通貨に変換されるため、通貨フィールドの集計では期待される結果が得られない場合があります。 通貨値は通貨コードではなくユーザーのロケールに基づいて書式設定されるため、通貨値が期待どおりに書式設定されない場合があります。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Cause<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } この混乱は、セッション通貨と参照通貨の違い、換算レートの変化、およびレポートなどでさまざまなユーザーが使用する異なるセッション通貨によって発生します。 Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 通貨処理について 通貨フィールドには、値、通貨コード、および参照通貨値が保持されます。通貨コードは 3 文字の ISO 通貨コードで、値が指定される通貨を識別します。参照通貨値は、参照通貨の通貨値を表す数値です。参照通貨値は、通貨値が保存されるときにレート換算によって計算されます。 価格フィールドは、換算と表示のための特別な機能を備えた通貨フィールドの一種です。たとえば、サービスカタログは価格フィールドを使用します。 通貨フィールドは、次のアイテムを表すために使用されます。 何かの価格、たとえば電話の価格契約に費やされた金額などの取引算術演算を実行できる値 (サービスの時給に時間数を掛けた値など) ロケール ロケールには、システムロケールとユーザーロケールの 2 つの設定があります。 システムロケール システムロケールは、 glide.system.locale プロパティを使用して設定されます。値の形式は Language.Country で、言語は ISO 639 言語コード、国は ISO 3166 言語コードです。内部的には、この値は Java で指定されたとおりに使用されます。システムロケール設定は、 Java でサポートされているロケール リストに含まれている必要があります。 通貨フィールドの参照通貨値は、システムロケールによって示される通貨であると見なされるため、新しい zboot でシステムロケールを一度設定する必要があります。 警告:通貨値をインスタンスに入力した後は、システムロケールを変更しないでください。システムロケールを変更した場合、参照通貨の値は調整されません。つまり、レート換算は行われません。この永続性により、集計とフィルタリングが無効になります。 ユーザーロケール ユーザーロケールは、考慮順に次のように決定されます。 glide.system.locale.test を使用したローカルセットのテスト (SN テクニカルサポート用)国と言語の両方が指定されているユーザーレコードプロパティ glide.system.locale を使用して設定されたシステムロケールブラウザーロケール 通貨と単一通貨モード システムは、セッションと参照の 2 種類の通貨を使用します。 セッション通貨は、ユーザーのロケールまたは単一通貨モードによってユーザーに対して定義されます。参照通貨はシステムロケールによって決定されます。参照通貨は、インスタンス全体で使用される標準です。通貨または価格フィールドに値が入力されるたびに、次の 3 つの情報が保存されます。 ユーザーのロケールで入力された値ユーザーのロケールの通貨コード現在の為替レートを使用して参照通貨に変換された値 注意:複数通貨モードでは、通貨フィールドに保存された通貨コードがセッション通貨コードと同じではない場合があります。たとえば、セッション通貨をユーロにし、入力する数値を日本円にすることができます。 セッション通貨 ユーザーが通貨値を表示するときには、入力した形式またはセッション通貨形式で値を表示できます。形式には次のものが含まれます。 通貨記号値はセッション通貨に変換され、ローカライズされた数値形式で表示されます。 ユーザーのロケールによってセッション通貨形式が決まります。 数値形式は、ロケールに基づいて小数点区切り記号などの機能が異なる場合があります。たとえば、米国の書式は 1,234,567.89 ですが、ドイツの書式は 1.234.567,89 です。 セッション通貨は、考慮順に次のように決定されます。 glide.i18n.single_currency と glide.i18n.single_currency.code を使用して設定された単一通貨モードユーザーのロケールのデフォルト通貨 基準通貨 異種通貨値で計算を実行するために、プラットフォームには、 参照 通貨と呼ばれるシステム通貨に変換された通貨値が格納されます。システムのすべての通貨フィールドには、参照通貨値が含まれています。 参照通貨は、考慮順に次のように決定されます。 プロパティ glide.system.locale を使用して設定されたシステムロケールJava のデフォルトロケール、通常は en.US 参照通貨は通常、米ドルです。 フィルタリング機能と集計機能では、参照通貨値を使用して計算を実行します。換算レートが変化するため、不正確な結果が得られる可能性があります。 単一通貨モード 単一通貨モードの目的は、プラットフォームのすべてのユーザーが同じ通貨で通貨値を表示できるようにすることです。このモードを正しく設定するには、次のプロパティを設定する必要があります。 i18n.single_currency :true または falsei18n.single_currency.code – 3文字のISO通貨コードシステムロケール glide.system.locale 単一通貨モードには次の制限があります。 単一通貨モードでは、参照通貨は変更されません。そのため、計算 (集計/フィルタリング) が実行されると、一部のレート換算で予期しない結果が生じる可能性があります。単一通貨モードでは、ユーザービューの通貨は変更されますが、数値の書式設定は変更されません。 そのため、さまざまな国のユーザーが 1 つの通貨で通貨値を見る場合でも、数値の書式設定 (ユーザーのロケールによって決定される) が期待どおりではない可能性があります。通貨値の入力は単一通貨であるように制限されているため、価格フィールドの機能を使用できません。 システムロケールと参照通貨を単一通貨に設定することで、レート換算の影響を回避できます。ただし、通貨形式はユーザーのロケールによって決まります。単一通貨とユーザーロケールが異なる場合、通貨の表示がユーザーの期待どおりではない可能性があります。 価格フィールド 価格フィールドは、換算や表示の制御を有効にする通貨フィールドです。サービスカタログは価格フィールドを使用します。 換算と表示の選択は価格フィールドごとに選択でき、いつでも変更できます。次の 3 つのバリエーションがあります。 計算済み [デフォルト]:通貨フィールドタイプと同じように動作します。換算が実行されるたびに、最新の通貨換算レートが使用されます。価格フィールドが表示されると、ユーザーのセッション通貨で表示されます。固定:価格フィールドが表示されると、値の入力時に使用された通貨コードで表示されます。換算が実行されるたびに、最新の通貨換算レートが使用されます。複数: 価格ごとに異なる通貨を使用して、アイテムに複数の価格値を入力できます。フィールドの値は、ユーザーのセッション通貨で入力された値です。それ以外の場合は、最初に入力された価格がユーザーのセッション通貨に変換されます。換算が実行されるたびに、最新の通貨レートが使用されます。 注意: 最初に入力した値が表示中に使用されます。追加の値は計算時に使用されません。 価格フィールドの使用例については、サービスカタログで使用されるテーブルを参照してください。 プレゼンテーション 通貨値は、リストビューとフォームビューでは表示が異なります。 リストビュー 通貨値は、ユーザーのロケールで表示できるように書式設定されたユーザーのセッション通貨で表示されます。これは通常、通貨記号の後に書式設定された数字が続きますが、ロケールによって異なる場合があります。通貨記号はfx_currencyテーブルに格納されます。 さまざまなフィールドタイプが次のように表示されます。 通貨フィールドタイプ:ユーザーのセッション通貨での値価格フィールドタイプ/計算済み:ユーザーのセッション通貨での値価格フィールドタイプ/固定:ユーザーが入力した通貨での値価格フィールドタイプ/倍数:ユーザーのセッション通貨に関連付けられた値 (この値が存在する場合)。それ以外の場合は、最初に入力された値がユーザーのセッション通貨に変換されます。 表示される値の切り替え 通貨値 (Geneva 以降) の横に地球儀アイコンが表示され、値を次のいずれかに変更できます。 ユーザーが入力した値セッション通貨での値入力した値と、括弧で囲まれた参照通貨の値 このアイコンは、ユーザーのセッション通貨がユーザーが入力した通貨と異なる場合に表示されます。アイコンをクリックすると、一覧が順番に表示されます。 プレビュー レコードのプレビューでは、通貨値は入力したとおりに、ユーザーのロケールで表示できるように書式設定されて表示されます。 集計 通貨列には、基本的な集計操作を適用できます。これには、合計、グループ化、平均、最小、および最大が含まれます。集計は次の 2 つのステップで行われます。 すべてのレコードの参照通貨値を集計この集計を表示用にユーザーのセッション通貨に変換します 注意:通貨フィールドの値 (表示されているもの) と参照通貨値 (アグリゲーションに使用される) の間の換算レートが変更されている可能性があるため、結果がユーザーの期待と異なる場合があります。 注:この制限は、さまざまな価格タイプに適用されます。 価格タイプが [固定] の場合、計算された参照値が古い可能性があります。価格タイプ [複数] の場合、最初に入力された価格の参照値が使用されます。他の通貨の値は使用されません。 集計値は、ユーザーのロケールと通貨記号で書式設定されて表示されます。 (イスタンブール)Istanbul 以降、通貨フィールドは 4 桁の小数部で格納され、集計は 4 桁の小数部で格納されます。アップグレードの場合、この値はプロパティによって制御されます。 フィルタリング 通貨フィールドにフィルターを設定できます。通貨値は通貨コードと数値として入力されます。フィルタリングは、次の 2 つのステップで実行されます。 フィルターの通貨値が参照通貨に換算されます。フィルターの計算された参照値は、レコード内の参照値と比較されます。 一致するレコードがリストビューに表示されます。 注意:フィルターの実行時に使用される換算率は、個々のレコードの参照値を計算するときに使用される換算率と異なる可能性があるため、フィルタリングの結果では期待した結果が得られない場合があります。 注: この制限は、さまざまな価格タイプに適用されます。 価格タイプが [固定] の場合、計算された参照値が古い可能性があります。価格タイプ [複数] の場合、最初に入力された価格の参照値が使用されます。他の通貨の値は使用されません。 フォームビュー フォームビューでは、通貨値は入力された通貨で表示されます。コンボボックスには、システムで利用可能な通貨のリストが表示されます。形式はユーザーのロケールによって決まります。 数値を入力または変更するときは、ユーザーのロケールで指定された形式で値を書式設定します。 新規レコードのフォームでは、通貨のリストを含むコンボボックスで参照通貨が選択され、数値がゼロに設定されています。 価格フィールドの編集 価格フィールドの通貨コードと数値はフォームで変更できます。価格フィールドの横に編集アイコンが表示されます。編集アイコンをクリックすると、価格フィールドのすべての詳細を編集するために使用できるフォームが表示されます。 通貨:システムのコンボボックスで有効になっている通貨のリスト金額:ユーザーのロケールで書式設定された数値タイプ:計算済み、固定、複数を含むコンボボックス 価格タイプが [複数] に変更されると、最新の通貨換算レートを使用して金額フィールドから換算された値が入力された、プラットフォームで有効になっているすべての通貨の子レコードが作成されます。価格タイプはいつでも変更できます。 読み取り専用レコード レコードが読み取り専用の場合、通貨値は入力されたとおりに表示され、ユーザーのロケールで表示できるように書式設定されます。価格フィールドには、セッション通貨の値が表示されます。 単一通貨モード 単一通貨モードでは、通貨はラベルであり、変更することはできません。編集アイコンが表示されないため、前述のフィールドの詳細を編集するためのフォームにアクセスできません。 通貨インスタンステーブルの編集 Helsinki 以降は、通貨インスタンステーブルfx_currency_instanceを編集できるユーザーのために、フィールドの横に編集アイコンが表示されます。これにより、financial_mgmt_user ロールを持つユーザーは通貨フィールドに関連付けられた値を編集できます。 注意:fx_currency_instanceテーブルは編集しないでください。このテーブルはプラットフォームによって管理されるため、変更すると予期しない結果が生じる可能性があります。 レポート作成 レポートの通貨値は、ユーザーのセッション通貨で、ユーザーのロケールで書式設定され、通貨記号が付いています。ユーザーは、レポートの実行方法によって異なります。 共有レポート:レポートを実行するユーザースケジュール済みレポート:通常、レポートをスケジュールしたユーザーとして実行されます。 レポートには 次の 2 つのユーザーに固有の値があります。 ユーザーセッション通貨換算値 注意: レポートを実行しているユーザーと異なるセッション通貨を使用していると、予期しない結果が生じる可能性があります。 通貨変換 通貨値は、保存およびアクセス時に他の通貨に換算される場合があります。 通貨値は、挿入時か更新時かにかかわらず、保存時に参照通貨に変換されます。これは、参照通貨値と通貨値が保存されることを意味します。通貨値は、表示のためにユーザーのセッション通貨に変換されます。フィルターで指定された通貨からフィルターに入力された値は、参照通貨に変換されます。 レートテーブル 換算レートはテーブルfx_rateに保存されます。各レコードには、特定の通貨からユーロへの換算レートが含まれています。レートは、ECB Web サイトの ECB 為替レートロードと呼ばれるスケジュール済みジョブから毎日更新されます。 レート使用率 ある通貨から別の通貨への通貨換算には、2 つのレートが含まれます。 ある通貨からユーロに換算するレートユーロから第 2 通貨に換算するレート 換算が実行されるたびに、プラットフォームは最新の換算レートを使用します。したがって、計算によって予期しない結果が生じる可能性があります。例: 参照通貨値を格納する際に、通貨値ごとに異なるレートを適用できます。したがって、アグリゲーションでは、異なるレートで値を結合し、別のレートで換算して戻すことができます。フィルター値は現在のレートで換算されますが、データベース内でフィルターされる値は異なるレートで換算される可能性があります。今日のレートで 100 ドルのフィルターは、昨日のレートで取得した 99 ドルの値と一致する可能性があります。 注意:表示の目的上、使用される通貨値は、ユーザーが入力したものをセッション通貨に換算したものです。ただし、集計とフィルタリングでは、参照通貨値が使用されます。これにより、異なるレートで換算された通貨値を比較できます。 インポート/エクスポート 一般に、プラットフォームの境界を越える通貨値は、ユーザーのセッション通貨で表され、ユーザーのロケールで書式設定されます。 インポート/変換 通貨値は、他のフィールドと同様に文字列としてインポートされます。通貨フィールドへのデフォルトの変換マッピングでは、 setDisplayValue() を使用します。この関数に想定される形式は次のとおりです。 ユーザーのロケールで書式設定された数値:これは、ユーザーのセッション通貨での値として取得されます (例:1,234.56)。この数字には、3 文字の通貨コードがプリフィックスとして付き、セミコロンで区切られます (例:EUR;1.234,56)。 この動作は、変換マップスクリプトでカスタマイズできます。 エクスポート 通貨値は、XML としてエクスポートする場合を除き、ユーザーのロケールで書式設定されたユーザーのセッション通貨でエクスポートされます。XML で通貨をエクスポートする場合、値は書式設定のない参照通貨値になります。 Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 通貨値を使用したスクリプティング スクリプティング環境では、通貨フィールドは GlideElement としてアクセスできます。 API 次の表に、メソッドとその仕組みを示します。この例の値では、通貨値 21345.67 (ユーロで 1563.72、米ドルで 1152.48) を使用し、ユーザーのロケールがドイツ (de.DE) に設定され、参照通貨が USD に設定されています。 メソッド名 説明 例 getValue() (record.field としてアクセス) ユーザーのセッション通貨で、書式設定されていない数値として通貨値を返します。 1563.72 getReferenceValue() 参照通貨で書式設定されていない数値として通貨値を返します。 1152.48 getSessionValue() ユーザーのセッション通貨で、書式設定されていない数値として通貨値を返します。 1563.72 getCurrencyValue() 書式設定されていない数値として入力された通貨値を返します。注意:これは入力された通貨値であり、セッション通貨または参照通貨でない場合があります。 21345.67 getDisplayValue() ユーザーのロケールで書式設定された通貨値と通貨記号を付けて、ユーザーのセッション通貨で返します。 €1.563,72 getSessionDisplayValue() ユーザーのロケールで書式設定された通貨値と通貨記号を付けて、ユーザーのセッション通貨で返します。 €1.563,72 getReferenceDisplayValue() ユーザーのロケールで書式設定された参照通貨で通貨記号付きの通貨値を返します。 $1.152,48 getCurrencyDisplayValue() 入力された通貨値を返します。ユーザーのロケールで通貨記号を使用して書式設定されます。 ¥21.345,67 getCurrencyString() 3 文字の ISO 通貨コードのプリフィックスが付けられ、セミコロンで区切られた書式設定されていない数値として入力された通貨値を返します。 円;21345.67 getCurrencyCode() 入力された通貨値の 3 文字の ISO 通貨コードを返します。 JPY getSessionCurrencyCode() ユーザーのセッション通貨の 3 文字の ISO 通貨コードを返します。 ユーロ getReferenceCurrencyCode() 参照通貨の 3 文字の ISO 通貨コードを返します。 米ドル setValue() 通貨値を次のように設定します。 ユーザーのセッション通貨で値として取得される書式設定されていない数値。3 文字の通貨コードのプリフィックスが付けられ、セミコロンで区切られた書式設定されていない数値。 4369.21円;4369.21 setDisplayValue() 通貨値を次のように設定します ユーザーのセッション通貨で値として取得される、ユーザーのロケールで書式設定された数値。2.ユーザーのロケールで書式設定された数値で、3 文字の通貨コードのプリフィックスが付けられ、セミコロンで区切られます。 4.369,21円;4.369,21 有効小数部の桁 API によって返される数値には、小数部 2 桁が含まれています。通貨換算レートにはそれ以上の小数部の桁数がある場合がありますが、通貨フィールドには小数部 2 桁しか格納されません。数値を受け入れる API は、小数部の桁を 2 桁に丸めます。 getValue() などの値を返す API は、小数点以下 2 桁まで返します。 データベースから読み取られた値の末尾の 0 は削除されますが、00 などの値が後で設定された場合、1.00 を返す可能性があります。戻り値に一例がありません。 getDisplayValue() などの表示値を返す API には、小数点以下 2 桁までが含まれます。 これにより、7.10 などの値でも 2 桁が返されることがありますが、それ以外の場合はトレーニング 0 が削除される可能性があります。戻り値に一例がありません。 GlideAggregate は小数点以下 2 桁を返します (イスタンブール)Istanbul 以降、通貨値には 4 桁の小数部を含めることができます。 getValue() などの値を返す API は、小数点以下 4 桁まで返します。末尾のゼロは常に削除されます。getDisplayValue() などの表示値を返す API には、小数点以下 2 桁以上、小数点以下 4 桁までが含まれています。GlideAggregate は小数点以下 4 桁を返します。 通貨値の操作 通貨値を表示するには、表示 API を使用します。表示以外の方法で通貨値を操作するには、書式設定されていない数値を返す/受け入れる API を使用します。 注意:getDisplayValue() メソッドを使用し、値の計算を実行する前に文字列を処理して書式設定情報を削除しないでください。 値の取得 getValue() や getCurrencyValue() などの API は、書式設定されていない数値を文字列として返します。浮動小数点値は、JavaScript 関数 parseFloat() を使用して取得できます。結果の値を使用して計算を実行できます。これらの値に関連付けられた通貨は、通貨コードを返す API によって取得できます。getCurrencyCode() メソッドを使用して、フィールドの通貨を決定することもできます。 var rate = parseFloat(current.base_rate); var currencyCode = current.base_rate.getCurrencyCode(); 値の設定 setValue() メソッドを使用して通貨フィールドの値を設定します。通貨がユーザーのセッション通貨である場合は、プレーンな数値 (それを含む文字列の浮動小数点数) を使用し、それ以外の場合は、値に 3 文字の ISO 通貨コードのプリフィックスを付けます。 var totalCost = レート*current.hourly_rate; currency.total_cost= currencyCode + ";" + totalCost; 値の削除 通貨値を含むレコードが削除されると、プラットフォームは関連する通貨レコードを削除します。ただし、これは deleteMultiple() が呼び出されたすべての条件下で発生するわけではありません。 注意:通貨フィールドのあるテーブルには deleteMultiple() を使用しないでください。常に各レコードを反復処理し、各レコードを個別に削除してください。 監査 通貨フィールドを含むテーブルが監査されると、通貨の値も監査されます。監査レコードに入力された値は、セッション通貨での数値です。通貨コード/記号が存在しません。レコードを表示しているユーザーのロケールがレコードを更新したユーザーと異なる場合、数字の意味や通貨コードが示されていないと混乱を招く可能性があります。 Istanbul 以降、監査レコードに入力された値は、ユーザーが USD;1234.56 の形式で入力した通貨値に変更できます。これは Glide プロパティ glide.sys.audit_currency_value によって制御されます。デフォルト値は false です。true に設定すると、監査で新しい形式が使用されます。 テーブル fx_currency このテーブルには、プラットフォームで設定された通貨が含まれています。各レコードには、3 文字の ISO 通貨コード、通貨の記号、および通貨が有効かどうかが記載されています。この情報には、[ システムローカリゼーション メニューからアクセスできます。通貨のリストを含むコンボボックス (通貨フィールドを含むレコードのフォームビューなど) には、アクティブとマークされているこのテーブル内の通貨のリストが含まれます。注意:fx_currency内の既存のレコードは削除しないでください。既存のレコードを削除すると、関連するすべての通貨/価格レコードが無効になります。 fx_currency_instance このテーブルには、[通貨] フィールドタイプの通貨値が保持されます。各レコードは、fx_currencyテーブルへの参照としての通貨、数値、参照値、および参照通貨を保持します。注: 通貨データは非正規化されています。親レコードの通貨列に参照通貨値が含まれています。fx_currency_instanceレコードには、参照通貨値の数値部分を含む親レコードのsys_idが保持されます。 fx_price このテーブルには、[価格] フィールドタイプの通貨値が保持されます。各レコードは、fx_currencyテーブルへの参照としての通貨、数値、参照値、および参照通貨を保持します。価格タイプに基づいて、追加のレコードが存在する可能性があります。 固定、計算済み:単一レコード複数:親フィールドが空のプライマリ通貨値と、親フィールドがプライマリ通貨値を持つレコードのsys_idに設定された他の通貨の通貨値を含む追加のレコードがあります。 注:通貨データは非正規化されています。親レコードの通貨列に参照通貨値が含まれています。fx_priceレコードには、通貨値を含む親レコードのsys_idが保持されます。 fx_rate このテーブルには通貨換算レートが格納されます。各レコードは、fx_currencyテーブルへの参照としての通貨と、その通貨をユーロに換算するための換算レートを保持します。各レコードには、最新のレートを取得するために使用される、作成時間と更新時間のシステムフィールドも保持されます。ある通貨から別の通貨への換算では、2 つのレートレコードが検索される場合があります。 ECB ダウンロード 毎日実行されるスケジュール設定済み ECB 為替レートロードジョブは、欧州中央銀行 (ECB) の Web サイトからレートをダウンロードし、fx_rate テーブルにレコードを追加します。 削除 通貨値が親レコードから削除されると、fx_currency_instance/fx_price のレコードが削除されます。ただし、これは deleteMultiple() が使用されている場合に常に発生するとは限りません。これは、通貨 API の既知の制限です。 deleteMultiple() が許可されている場合、通貨レコードは孤立する可能性があります。これは機能には影響しません。ただし、テーブルは大きくなる可能性があります。 deleteMultiple() は、次のような特定の条件下では使用できません。 ビジネスルールの削除 (前または後)親テーブルは監査対象です親テーブルに反復削除属性セットがあります親テーブルに更新同期セットがあります 注意:通貨フィールドを含むレコードでは deleteMultiple() を使用しないでください。