Итак, я работаю с операциями Salesforce на основе Metadata API CRUD и могу успешно создать пользовательский объект с помощью метода createMetadataAsync()
. Но когда я пытаюсь добавить поля в пользовательский объект перед его созданием, он просто создает объект, а не поля, хотя я получаю успешный результат для создания обоих. Я прочитал в Интернете, что мне нужно пройти через пользовательский интерфейс в SF и разрешить просмотр этих полей, но когда я перехожу в свою среду SF, я вижу созданный мной объект, но не настраиваемое поле. Вот мой код, любая помощь будет отличной:
public async Task<createMetadataResponse> CreateObjectInSalesforce(string name, string label, string pluralLabel)
{
if (!this.isInitialized)
{
Initialize();
}
var nameField = new CustomField()
{
type = FieldType.Text,
typeSpecified = true,
label = label + " Name"
};
var customFields = new List<CustomField>()
{
new CustomField()
{
type = FieldType.Text,
description = "this is the custom field 12 for test object 1",
label = "CustomFieldTest",
fullName = "CustomFieldTest12__c",
length = 255
},
new CustomField()
{
type = FieldType.Text,
description = "this is the custom field 24 for test object 1",
label = "CustomFieldTest",
fullName = "CustomFieldTest24__c",
length = 255
}
}.ToArray();
var customObject = new CustomObject()
{
fullName = name + "__c",
label = label,
pluralLabel = pluralLabel,
nameField = nameField,
deploymentStatus = DeploymentStatus.Deployed,
deploymentStatusSpecified = true,
description = "Created by Metadata API",
enableActivities = true,
fields = customFields,
sharingModel = SharingModel.ReadWrite,
sharingModelSpecified = true
};
return await CreateMetadata(new Metadata[] { customObject });
}
public async Task<createMetadataResponse> CreateMetadata(Metadata[] objects)
{
this.metadataClient = new MetadataPortTypeClient(new MetadataPortTypeClient.EndpointConfiguration(), this.metadataUrl);
var result = await this.metadataClient.createMetadataAsync(this.metadataCredentials, null, null, objects);
return result;
}