Используя веб-сервис Salesforce, чтобы создать и установить тип Задачи

Я успешно создаю Задачу с помощью API Salesforce SOAP API через Java.

Однако моя проблема состоит в том, что я, может казаться, не устанавливаю Тип его. Они все значение по умолчанию, чтобы "Звонить", но я действительно хочу, чтобы они были "электронной почтой".

Кто-то может указать на меня в направлении того, где я могу сделать это? Я думаю, что это относится к RecordTypeMapping, но я несколько смущен относительно того, как использовать это в моем коде Java для поиска конкретного для Типа задачи.

Я чувствую, что имею, так согласитесь с этим. У меня есть корректный WSDL, который дает мне дополнительный метод на классе Task.java, но в независимо от того, чем я передаю, он умирает.

Это, кажется, не огромное, спрашивают, все же я озадачен относительно который точки присоединиться, чтобы заставить это работать

Любая справка ценилась бы.спасибо

1
задан Alan Williamson 18 June 2010 в 04:29
поделиться

2 ответа

Это поле доступно через API, как и любое другое. Ваша проблема не имеет ничего общего с RecordTypes (когда вы вставляете запись через API, вы можете поместить любую строку, которую хотите, в качестве значения раскрывающегося списка).

Итак, давайте начнем с контрольного списка , и если это не поможет, мы подумаем о других вариантах:)

  1. Отображается ли поле на странице «Новая задача»?
  2. Что означает Кнопка "Просмотр поля" говорит? (введите в ссылку свой собственный идентификатор организации, я использовал свой «na5»)
  3. Знаете ли вы профиль пользователя, учетные данные которого вы используете для подключения через API (например, «Системный администратор»)? Можете ли вы проверить в «Установить безопасность на уровне поля» , что этот Профиль может видеть это поле (1-й флажок), и он не помечен как доступный только для чтения (2-й флажок)?
  4. Можете ли вы попробовать настроить «Вызов» в качестве значения по умолчанию для этого поля и посмотреть, что произойдет?
  5. Можно ли попытаться вставить новую задачу через загрузчик данных Salesforce.com? Если это сработает, это будет означать, что API сам по себе в порядке (Data Loader также использует API), и проблема находится где-то в вашем приложении.
  6. Если вам действительно нужен доступ к так называемым метаданным, чтобы узнать, каковы возможные значения раскрывающегося списка, вы можете использовать вызовы describe (). Это должно помочь вам начать работу, но, как я уже говорил, насколько я помню, значения раскрывающегося списка не применяются, когда вы используете API.
  7. Глупо, но ... проконсультируйтесь со своим системным администратором, если он не ввел какие-либо рабочие процессы, которые изменяют значение этого поля. И спросите разработчиков Apex, есть ли в объекте Task триггеры «до вставки» ...

РЕДАКТИРОВАТЬ: для всех пользователей, у которых есть проблемы с интеграцией Salesforce (особенно «Я создал новое настраиваемое поле, кажется, я могу запросить его, но я не вижу его в возвращаемых результатах») есть еще пара шагов:

Если вы используете корпоративный WSDL - не забудьте загрузить новую копию. Людям, использующим Java, C # и т. Д., Необходимо регенерировать свои классы из wsdl («потреблять» его снова), чтобы увидеть новые поля. Пользователи PHP не должны волноваться (в прошлый раз я проверил, что все делается во время выполнения в «PHP toolkit» ... конечно, если вы действительно сгенерировали что-то из 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 (большинство примеров API Salesforce написано с использованием старой версии Axis), но я уверяю вас, что у меня это сработало.

Если вам все еще нужна помощь - я думаю, нам придется связаться напрямую?

Удачи.

3
ответ дан 2 September 2019 в 23:41
поделиться

Имя поля API, которое содержит 'Call' (и используется по умолчанию) - это ComboBox, а не PickList, и называется оно Subject.

Task.Subject = 'Email';

Если вы хотите установить значение по умолчанию, сделайте это из приложения Salesforce:

Setup->Customize->Activities->Task Fields->Subject
-1
ответ дан 2 September 2019 в 23:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: