問題タブ [soql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
salesforce - LimitException: クエリ行が多すぎます: count() 集計関数からの 50001
特定の sObject テーブルのレコード数を表示したい Visualforce ページがあります。
Visualforce ページには、次のようなかなり単純なものがあります。
次に、コントローラーで:
SOQL の limit 句を使用すると、毎回最大 50,000 しか返されないので問題ないと思いました。ただし、実際には、本番組織ではまだこの例外が発生します。
09:29:12:179 SOQL_EXECUTE_BEGIN [108]|Aggregations:0|Select count() from Account where SomeCustomField__c = 'Client' limit 50000
09:29:12:331 EXCEPTION_THROWN [108]|System.LimitException: クエリ行が多すぎます: 50001
キャッチできない例外が発生しない、このクエリを実行する安全な方法はありますか?
奇妙なことに、本番環境で匿名の頂点として次を試してみると、問題なく動作し、50,000 が返されます。
おそらく問題は、問題を引き起こしているすべての操作にわたるクエリ行の累積数であり、クエリを実行する前にコードで制限を確認する必要がありますか?
Force.com ディスカッション ボードにも同様の投稿があります - COUNT(*) 関数のクエリ行が多すぎます。VF ページを読み取り専用に設定して、クエリ行の制限を増やすことができません。
subquery - サブクエリ フィールドを更新する方法は? セールスフォース、SOQL、頂点
これは、すべての連絡先に HD 品質の注文があることを示すクエリです。
次に、これらのコードを使用して、各連絡先の HD 注文数を更新します。
さて、問題はどうすれば連絡先を更新できるかです。「注文の更新」として; 連絡先を更新しません。
salesforce - レポートループで渡すSalesforce/Apexパラメータ
解決策が見つからないような問題のヘッドスクラッチャーが1つあります。
VisualForceページをクライアント用のPDFとして作成しています。これは基本的に、きちんとフォーマットされたレポートであり、入力テキストボックスなどがなく、一部のデータ(添付ファイル)にアクセスできません。
添付ファイルは通常、商談の一部ですが、これはかなりカスタマイズされた設定であるため、データを格納する商談テーブルにぶら下がっている2つのカスタムオブジェクトがあります。画像の添付ファイルを除いて、すべての通常のデータを取得しました。
基本的に、OpportunitiesにはカスタムオブジェクトSFDC_520_Quote__cがあり、クライアントはこれを「部屋」と呼びます。各部屋には、製品などへのリンクを持つSFDC_520_QuoteLine__cオブジェクトの選択がアタッチされています。これは私が行うことができます。
ただし、この「部屋」レベルで添付された画像には、SFDC_520_Quote__c.idフィールドのParentIDが与えられます。これにより、SFDC_520_Quote__cと添付ファイルの間に定義された関係がないため、SOQLステートメントをまとめてデータを読み取ることが困難になります。
フィールドを追加できることはわかっていますが、他の誰かが離れているところから拾い上げているので、利用可能な時間内に既存のデータをどのように更新するのかわかりません。
visualforceページで理想的に行う必要があるのは、繰り返しループ中にコントローラークラスにパラメーターを渡し、それに作用できる別のゲッターを呼び出すことですが、コントローラー側で変数を設定するのに問題があります。
例(大幅に切り捨てられた):
私のコントローラー:
上記は問題なく動作しますが、最初のインナーの後でアタッチメントを取得する必要があります。添付ファイルはroom.idに基づいているため、理想的には、visualforceからゲッターにパラメーターを渡すことができないことを除いて、「getAttachments」などのゲッターにroom.idを渡す必要があります。
したがって、次のようになります。
そして、コントローラーに追加します。
それ、または元のgetAllRooms()メソッドを変更して上記を一度に実行する方法では、関係フィールドがなく、正しくコンパイルされるWHEREを使用して副選択を実行する方法がわかりません。
クエリ文字列パラメータの使用についてすべて説明している例をたくさん見てきましたが、フォームはなく、更新もありません。VFページを呼び出すだけです。
助けてください。
escaping - SOQLエスケープ文字
Force.comエクスプローラーでエスケープ文字を機能させようとしています。
これは、Salesforceでのデータの外観とまったく同じです。
カストディアンデータを待機中-「8」を保留中
このようなクエリステートメントを使用して、このデータをフィルタリングする必要があります。
ここで、policy__r.Policy_Status__c='カストディアンデータを待機中-'8''を保留中
これが私が試したことですが、仕事に就けません、
'カストディアンデータを待機中-保留中\'8\''
'カストディアンデータを待機中-保留中''8'''
'カストディアンデータを待機中-保留中\'\8 \'\'
「カストディアンデータを待機中-保留中の「8」」
「カストディアンデータを待機中-保留中の\'8\'」
ここで何が機能していないのかわかりません。誰かアイデアがありますか?
salesforce - 取引先責任者とリードをメールで取得するための SOQL クエリ
特定のメールですべての連絡先と見込み客を取得するために、単一の soql クエリを作成しようとしています。これで、連絡先と潜在顧客を検索する 2 つの異なるクエリを作成できるようになりました。しかし、これは単一のクエリを使用して(複数のオブジェクトを検索するために)可能ですか?
単一のクエリを探している理由は、JavaScript で Salesforce REST API を使用しており、連絡先とリードの検索に 2 つの別々のリクエストを使用したくないからです。
salesforce - 保存エラー: フィールド式の最初の項は具体的な SObject である必要があります: MAP
Salesforce の制限を克服しようとしています。リード オブジェクトは、リードと共に商談、連絡先、取引先に変換される関連リストを持つことができません。参照関係タイプの 4 つのオブジェクトを設定し、それぞれにダミー レコードを作成しました。
カスタム設定を使用してこれらの各ダミー レコードの ID を保存し、リードが変換されたときにカスタム オブジェクトもそれぞれの標準オブジェクトのマスター/詳細関係を持つオブジェクトに変換できるようにします。
Lead のトリガー (更新後) は、カスタム設定のマップを作成しようとします: Map cs = AcctId__c.getAll();
AcctId__c は、カスタム設定 API 名です。コンパイル時に上記のメッセージが表示されます。ここで、このコードを Salesforce のドキュメントから直接コピーしました。私は何を忘れていますか?
salesforce - SOQL を使用してファイルを非公開ライブラリから公開ライブラリに移動する
SOQL 言語を使用して、プライベート ライブラリからパブリック ライブラリにファイルを移動する方法はありますか?
ContentDocument オブジェクトを編集し、ParentId を変更しようとしました (ParentId は読み取り専用のように見えるため、明らかに機能しません)。
私も PublishStatus を変更しようとしましたが、それがどのライブラリに属するかを判断する方法がないため、それも無意味に思えます。Salesforceのドキュメントを調べてみましたが、ContentDocument/ContentVersion をライブラリ オブジェクトに接続する方法が見つかりません (ただし、前述のように、コンテンツをライブラリにリンクする方法を提供する PublishStatus を除く)。
どんな助けでも大歓迎です!
salesforce - SOQL クエリが Visualforce ページに存在する行を返さない
オブジェクトに存在する Visualforce ページの行を SOQL クエリが返さない Visualforce ページの SOQL クエリを介してオブジェクトから存在するレコードを取得する際に問題が発生しています
それらが存在することをどうやって知ることができますか? フォースエクスプローラーとワークベンチを使用しましたが、以下はレコードを返します
さて、visualforce ページは上記のレコードを返さず、以下のコード (コードからの数行) を返します。
助言がありますか?「gvlLCCODE」にオブジェクトに存在する値があることを示すデバッグがあります。また、たとえば、users テーブルから現在のユーザーを返すように SOQL を変更すると、レコードが返され、IF ステートメントが入力されます。
私が見逃したセキュリティの問題だと思います。しかし、私はこれらもチェックしました。
ありがとうございました
apex-code - SFDC のレポートでのガバナー制限
すべてのプロジェクトのコストの概要を 1 つの表に表示するというビジネス要件があります。
これらのコストを集計するには、すべてのクライアント タスク、地域、職務、給与、コスト テーブル、成果物、労力、および時間レコードをクエリする必要があります (クライアント タスクは同じテーブルにあり、タスクと地域は同じテーブルにあります)。テーブルと成果物、工数、および時間は、月ごとの合計として保存されます)。
すべてを for ループする前に、これらすべてを照会する必要があるため、非常に多くのスクリプト行にすばやくヒットします。計算上は O(m * n * o * p) のようなもので、私たちのプロジェクトの中には、4 つの変数すべてが非常に急速に上昇するものがあります。これを行う方法についての私の見積もりでは、9,000 万行のコードから 6,000 億行のコードまで幅がありました。
Batch Apex を使用すると、これをタスク領域ごとに 200 のバッチに分割できますが、計算プロファイルは (600 B / 200 ) = 30 億行のコード (Salesforce の制限をはるかに超える) に減少します。
これらの大規模な計算を実行するためにインフォマティカを使用して遊んでいますが、次のようないくつかの問題があります。(1) エンドユーザーは 5 分以上待つことができず、データを転送するだけです (すべてのレコードの 90%プロジェクトが一度に更新される) は、インフォマティカまたは Web API で 15 分かかります (2) これらの大規模な計算がいくつかの場所で発生する必要があることに気付きました (成果物予測値の変更、初期予測の作成など)。
ここでの要件 (5 分ほどで応答する大量のデータ) を満たすガバナー制限回避策はありますか? force.com は、ここで使用するのに適したプラットフォームですか?
これは、同様の計算のために私が行ってきた方法です。
salesforce - ContentVersion から VersionData を要求する SOQL がドラマを引き起こす
次のクエリの実行
ID LIBRARY_ID を持つライブラリ内のファイルの大きなリストが表示されます
追加したらすぐ
レコードを 1 つだけ取得します。8 つのレコードのうち 1 つだけがリンクです。
VersionData には追加の権限が必要ですか?