2013-12-13 2 views
2

У меня есть пользовательский объект в Salesforce, который мне нужно настроить для связи с деталями Master Detail. Аккаунты, являющиеся Мастером и CompHist, являются Детали. Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно установить отношение к работе с настраиваемыми полями внутри объектов. Пример:Настроить отношение для двух существующих объектов Salesforce

1.) У учетных записей есть настраиваемое поле CustomerId.

2.) CompHist также имеет настраиваемое поле CustomerId.

3.) Мне нужно иметь это связанное вместе поле CustomerId для генерации отчетов.

Около 2000 записей вставляются в CompHist около 8 числа каждого месяца. Это делается из приложения .NET, которое начинается в запланированное время, собирает информацию из наших баз данных и затем загружает эти данные в salesforce через SOAP API.

Возможно, я не понимаю, как работают отношения Salesforce, поскольку я довольно новый (пару месяцев) для развития Salesforce.

Спасибо, Рэнди

ответ

3

Существует способ, чтобы заставить это работать без триггеров, которые свяжут записи или предварительно запросив SF, чтобы узнать идентификатор аккаунта в .NET, прежде чем вы будете толкать CompHistories.

Настройка

На Счет: установить "External ID" флажок на вашем CUSTOMERID поле. Я бы рекомендовал установить «Уникальный».

На CompHist: вам нужно будет решить, приемлемо ли перемещать их или когда установлено отношение к Учетной записи - оно останется таким же навсегда. Когда вы приняли это решение, отметьте/отмените «reparentable master-detail» в определении вашего поиска/m-d для учетной записи.

И если у вас есть идентификатор на этих деталях, что-то вроде «номера позиции» - подумайте над тем, чтобы сделать Ext. Я бы. для них тоже. Мог бы сохранить ваш бекон некоторое время в будущем, когда конечный пользователь задаст вопрос, или вам придется сделать какой-то «флеш» и вытолкнуть все строки из .NET (поможет вам разобраться, что нужно вставить, что нужно обновить).

На данный момент полезно подумать, как вы собираетесь заполнять недостающие данные (все значения нулей в поле Ext. Id).


Фактическое установление отношений

Если у вас есть внешние идентификаторы установить это довольно легко сказать, Salesforce, чтобы выяснить, увязывание для вас. Операция называется upsert (смесь между update и insert) и может использоваться в двух вариантах.

«Базовый» upsert предназначен для создания/обновления решения; означает «дорогой Salesforce, пожалуйста, сохраните эту CompHist запись с MyId = 1234. Я не знаю, что Ид в вашей базе данных и, честно говоря, я не забочусь, иди понять это будет я?»

  • Если такой записи не было - 1 будет создано.
  • Если бы было ровно 1 матч - он будет обновлен.
  • Если было обнаружено более 1 - SF не будет знать, какой из них обновить и сбросить с вас ошибку (поэтому маркировка как «уникальная» - хорошая идея. Вероятность того, что вы обнаружите ошибки раньше).

«Усовершенствованный» upsert предназначен для поддержания внешних ключей, создания поисковых запросов. «Дорогой SF, пожалуйста, подключите этот CompHist до учетной записи, помеченной как« ABZ123 »в моей БД. Я упоминал, что меня не интересуют ваши идентификаторы, и я не могу побеспокоиться о том, чтобы запросить вашу базу данных перед тем, как я загружу мои вещи? "

  • Опять же - точное совпадение - работает должным образом.
  • 0 или 2 Учетные записи с таким же именем. id value = ошибка.

Код плз

Я бы рекомендовал вам играть с Loader данных или подобным инструментом первый вчитаться. о том, что именно происходит, как отображать поля и как не путать (эти два варианта upsert можно использовать одновременно). Как только вам удастся внести изменения так, как вы хотите, вы можете немного изменить свою интеграцию.

SOAP API upsert: http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_upsert.htm (C# пример в нижней части)

REST API: http://www.salesforce.com/us/developer/docs/api_rest/Content/dome_upsert.htm

Если вы предпочитаете пример Salesforce Apex: Can I insert deserialized JSON SObjects from another Salesforce org into my org?

+0

Так, с верхней части моей головы после Мне нужно: 1.) Обрезать объект CompHist. 2.) Создайте отношения 3.) В моем приложении .NET мне нужно запросить SF для идентификатора Salesforce учетной записи. Затем, когда вы вставляете данные для этой учетной записи, я вынуждаю Salesforce использовать этот идентификатор при вставке данных в CompHist? –

+0

Это будет в основном связывать пользовательские идентификаторы, которые у меня есть, но salesforce все равно будет использовать идентификатор, созданный для учетной записи? –

+0

Зачем вам удалять любые данные из CompHist? У вас есть «CustomerId» на нем, а также поиск/мастер-деталь для учетной записи, не так ли? Или поля еще нет? Вы можете запросить SF для полей Account перед вставкой ... но весь мой ответ состоял в том, чтобы показать вам, как вам не нужно это делать вообще, как вы можете сказать Salesforce решить эту проблему для вас. – eyescream

Смежные вопросы