我通过Java使用SalesForce API SOAP API成功创建了一个Task。
然而,我的问题是我似乎无法设置它的类型。它们都默认为“呼叫”,但我真的希望它们是“电子邮件”。
有人能指出我可以做到这一点的方向吗?我认为它与RecordTypeMapping有关,但我对如何在我的Java代码中使用它来查找特定类型的任务类型感到困惑。
我觉得我已经离这么近了。我有正确的WSDL,它给了我在Task.java类上的额外方法,但无论我传入什么,它都会死掉。
这似乎不是一个巨大的问题,但我很困惑,加入哪些点来让它工作
任何帮助将不胜感激。感谢
答案 0 :(得分:3)
此字段可通过API获得,与其他任何字段一样。您的问题与RecordTypes没有任何关系(当您通过API插入记录时,您可以将任何您想要的字符串作为选项列表值)。
所以,让我们从核对清单开始,如果这没有帮助,我们会考虑更多选项:)
编辑,对于所有遇到Salesforce集成问题的用户(特别是“我创建了一个新的自定义字段,似乎我可以查询它,但我没有看到它返回结果“)还有几个步骤:
如果您正在使用企业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.");
您可以下载整个测试项目(相当大)here。如果您习惯使用Axis 1.x样式(大多数Salesforce API示例都是使用旧Axis编写的),代码很可能看起来很奇怪,但我向您保证它对我有用。
如果您仍然需要帮助 - 我想我们必须直接联系?
祝你好运。答案 1 :(得分:-1)
包含“调用”(默认为)的API字段名称为ComboBox
,而不是PickList
,并且称为“主题”。
Task.Subject = 'Email';
如果要设置默认值,请在Salesforce应用程序中执行此操作:
Setup->Customize->Activities->Task Fields->Subject