SalesForce - получить все поля объекта с помощью .Net SDK или Api

У нас есть система, из которой мы хотим отправить записи (например, контакт, учетную запись, возможность и т. Д.) В SalesForce.

Для этого мы использовали ForceToolKit для .Net. Мы можем успешно вставлять \ обновлять записи с помощью функций ForceToolKit.

Пример:

dynamic contact = new ExpandoObject();
contact.FirstName = "FirstName";
contact.LastName = "Last";
contact.Email = "[email protected]";
contact.MobilePhone = "1234567890";
var successResponse = await forceClient.CreateAsync("Contact", contactList);

Проблема, с которой мы сталкиваемся, указана ниже.

В нашей исходной системе у нас есть несколько настраиваемых полей, которые не являются стандартными полями в SalesForce и могут отличаться для разных пользователей.

Итак, сначала мы должны сопоставить настраиваемые поля между нашей исходной системой и SalesForce.

Мы хотим получить все поля объекта SalesForce, чтобы сопоставить поля.

Мы не можем найти никаких функций в ForceToolkitForNet. Как описано здесь, у нас есть попробовал функцию QueryById, используя возвращаемый тип dynamic, но выдает исключение.

var contactFields = await forceClient.QueryByIdAsync<dynamic>("Contact", successResponse.Id);

Исключение: "SELECT FROM Contact where Id = '{contactId}' Incorrect syntax near FROM".

Какие есть способы получить поля любого объекта SalesForce. Может ли кто-нибудь помочь нам получить поля объекта с помощью SalesForceToolkit или SalesForceApi?


person Mehul Vaghela    schedule 01.02.2018    source источник


Ответы (1)


SOQL не имеет концепции SELECT * FROM Account, вам нужно заранее изучить поля. Здесь у вас есть несколько вариантов.

Вы можете использовать «описать» звонки. Недавно я ответил на аналогичный вопрос, но он касался REST API: https://stackoverflow.com/a/48436870/313628, Я думаю, ваше решение основано на SOAP.

Если бы вы делали это вручную ...

Поскольку вы используете инструментарий - есть вероятность, что эти методы уже где-то там. Немного поэкспериментируйте. Между примерами C # по ссылкам, которые я вам дал, и библиотекой вы должны что-то понять.

Я имею в виду, что я наивен, но просто поиск в репозитории для "описания" выглядит многообещающим: https://github.com/developerforce/Force.com-Toolkit-for-NET/search?utf8=%E2%9C%93&q=describe&type=, возможно, этот пример

Также есть способ не изучать эту информацию во время выполнения, а использовать файл WSDL, сгенерированный из Salesforce, со всеми полями и сгенерировать из него код C #. Обратной стороной является то, что вам нужно будет восстанавливать его каждый раз, когда вы хотите поддерживать новый объект / поле в своем приложении. Прочтите о «Enterprise WSDL», чтобы начать работу.

И последнее, но не менее важное: есть более или менее удобные инструменты, которые сбрасывают метаданные Salesforce. Я поклонник https://www.datasert.com/products/realforce/ да только посмотри вокруг. Черт, даже экспорт некоторых записей с помощью DataLoader даст вам все имена полей, если это все, что вам нужно.

person eyescream    schedule 01.02.2018
comment
Да, он работает хорошо, и мы можем получить всю необходимую информацию только из Toolkit. Фантастика!!. Большое спасибо, @eyescream. - person Mehul Vaghela; 01.02.2018