1

Java を介して SalesForce API SOAP API を使用してタスクを正常に作成しています。

ただし、私の問題は、そのタイプを設定できないように見えることです。それらはすべてデフォルトで「電話」ですが、私は本当に「電子メール」にしたいと思っています。

誰かがこれを行うことができる方向に私を向けることができますか? RecordTypeMapping に関係していると思いますが、Java コードでこれを使用して Task タイプの特定のものを検索する方法については、多少混乱しています

私はこれにとても近づいたと感じています。Task.java クラスに追加のメソッドを提供する正しい WSDL がありますが、何を渡しても終了します。

これは大した質問ではないようですが、それを機能させるためにどのドットを結合するかについて当惑しています

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

3

このフィールドは、他のフィールドと同様に API を介して利用できます。あなたの問題は、RecordTypes とは何の関係もありません (API を介してレコードを挿入する場合、ピックリスト値として任意の文字列を配置できます)。

それでは、チェックリストから始めましょう。これが役に立たない場合は、さらにオプションを検討します:)

  1. フィールドは「新しいタスク」ページに表示されていますか?
  2. [フィールドのアクセシビリティを表示] ボタンには何と表示されますか? (リンクに自分の組織 ID を入力してください。私は "na5" を使用しました)
  3. API 経由で接続するために使用する資格情報 (「システム管理者」など) のユーザーのプロファイルを知っていますか? 「フィールド レベル セキュリティの設定」で、このプロファイルがこのフィールドを表示でき (1 番目のチェックボックス)、読み取り専用としてマークされていない (2 番目のチェックボックス)ことを確認できますか?
  4. このフィールドのデフォルト値として「Call」を設定してみて、何が起こるか見てもらえますか?
  5. Salesforce.com Data Loader を使用して新しいタスクを挿入できますか? それが機能する場合、それ自体の API は問題なく (Data Loader も API を使用します)、問題はアプリのどこかにあることを意味します。
  6. ピックリストの可能な値を知るために、いわゆるメタデータにアクセスする必要がある場合は、describe() 呼び出しを使用できます。これで始められるはずですが、前に言ったように、私が覚えている限りでは、API を使用する場合、ピックリストの値は実際には適用されません。
  7. ばかげていますが... システム管理者がこのフィールドの値を変更するワークフローを追加していない場合は、システム管理者に相談してください。また、Task オブジェクトに「挿入前」のトリガーがあるかどうか、Apex 開発者に尋ねてください...

EDIT: Salesforce統合に問題があるすべてのユーザー(特に「新しいカスタムフィールドを作成しました。クエリはできるようですが、返された結果に表示されません」)には、さらにいくつかの手順があります:

Enterprise WSDL を使用している場合は、新しいコピーをダウンロードすることを忘れないでください。Java、C# など。新しいフィールドを表示するには、wsdl からクラスを再生成する (もう一度「消費する」) 必要があります。PHP ユーザーは心配する必要はありません (前回、「PHP ツールキット」ですべてが実行時に行われることを確認しました... もちろん、実際に WSDL から何かを生成した場合は、もう一度やり直してください)。しかし、PHP の場合、どうにかして WSDL をアプリにキャッシュできるようです。サーバーを再起動して、新しい wsdl が使用されていることを確認しますか?


予想よりも時間がかかりました (Apache Axis 2 は、私が Axis 1.x で使用したコードとはまったく異なるコードを生成します) + 他にも気を散らすものに遭遇しましたが、確認しました。

要するに、これは API を介して利用できる通常のフィールドであり、私にとっては機能します。

エンタープライズ WSDL に次のような行が含まれていることを確認してください。

<complexType name="Task">
    <complexContent>
        <extension base="ens:sObject">
            <sequence>
                <element name="Account" nillable="true" minOccurs="0" type="ens:Account"/>
                (...)
                <element name="Type" nillable="true" minOccurs="0" type="xsd:string"/>
                (...)
            </sequence>
        </extension>
    </complexContent>
</complexType>

存在する場合は、そこから Java クラスを再生成してください。そうでない場合は、新しい WSDL をダウンロードしてください。

Apache Axis2 と enterprise.wsdl を使用して、次のようなサンプル コードを作成できました。

Task task = Task.Factory.newInstance();
task.setType("Alan's Email");   // Not a valid picklist value, just to prove that these don't matter when we use API.
task.setWhatId("0067000000AH3ME"); // An Opportunity Id ("Burlington Textiles" in my test org) to which this task will be related.
task.setStatus("Not Started");
task.setPriority("Normal");
task.setDescription("A new Task has been created with methods from Enterprise WSDL.");

テスト プロジェクト全体 (かなり大きい)をここからダウンロードできます。Axis 1.x スタイル (Salesforce API の例のほとんどは古い Axis を使用して記述されています) に慣れていると、コードが奇妙に見える可能性が高くなりますが、私にとってはうまくいったことを保証します。

それでも助けが必要な場合は、直接連絡する必要があると思いますか?

幸運を。

于 2010-06-18T08:25:20.893 に答える
-1

'Call' を含む (デフォルトである) API フィールド名はComboBoxではなく でありPickList、サブジェクトと呼ばれます。

Task.Subject = 'Email';

デフォルトを設定する場合は、Salesforce アプリ内から行います。

Setup->Customize->Activities->Task Fields->Subject
于 2010-06-28T06:20:25.513 に答える