0

UsrShortCompanyName というカスタム フィールドを PreferencesGeneral に追加しました。Key == Company.CompanyKey および Value == PreferencesGeneral.UsrShortCompanyName の辞書を返す静的メソッドが必要です。したがって、次のようなSQLクエリを実行するには、AcumaticaのORMが必要です。

select c.CompanyKey, p.UsrCompanyShortName from Company c inner join PreferencesGeneral p on p.CompanyID = c.CompanyID where c.CompanyType != 'System'

いくつかの質問を聞きたいんです:

  1. PXSelect は現在の会社の範囲でクエリを実行するため、条件 "WHERE CompanyID = <CurrentCompanyId>" が自動的に追加されます。ORM がこの会社の制限を追加するのを防ぐことは可能ですか?

  2. PreferencesGeneral にも Company DAC にも CompanyID フィールドが含まれていないため、次のようなものを書くことができません

PXSelectJoin<PX.Objects.GL.Company, InnerJoin<PreferencesGeneral, On<PX.Objects.GL.Company.companyId, Equal<PreferencesGeneral.companyId>>>>

このような場合はどうすればよいですか?

  1. Acumatica の ORM を使用してプレーン SQL を実行する可能性はありますか? 私が見つけた唯一の同様の関数は PXDatabase.Execute メソッドですが、ストアド プロシージャでのみ使用でき、SP に OUTPUT パラメータがある場合にのみデータを返します。しかし、私の場合は、OUTPUT パラメータを TABLE タイプにすることはできないため、オプションではありません。

私が見つけた唯一の回避策は、新しい SqlConnection のスコープで SQL クエリを実行することですが、この場合、Acumatica の ORM と同じ接続文字列を取得する必要があります。Acumatica が接続文字列を Web.config (ローカルまたは QA サーバーの場合) で検索するか、Azure Configuration (本番用) で検索するかをどのように決定するのだろうか。

手伝ってくれてありがとう。

4

1 に答える 1