我正在使用Salesforce和force.com API和元数据API,版本36。 我可以在Lead对象中创建自定义字段,但默认情况下我可以看到它已隐藏,这意味着我无法使用这些自定义字段创建新的Lead,因为它返回错误请求(400状态代码)。 Code是否有任何方法可以设置自定义字段Visible?
public boolean createCustomExtTextField(String name, LoginResult metadataLoginResult, int length) {
boolean success = false;
CustomField cs = new CustomField();
cs.setFullName("Lead."+name+"__c");
cs.setLabel("Custom"+name+"Field");
cs.setType(FieldType.LongTextArea);
cs.setLength(length);
cs.setVisibleLines(50); // max 50
try {
MetadataConnection metadataConnection = createMetadataConnection(metadataLoginResult);
SaveResult[] results = metadataConnection.createMetadata(new Metadata[] { cs });
for (SaveResult r : results) {
if (r.isSuccess()) {
success = true;
} else {
System.out.println("Errors were encountered while creating " + r.getFullName());
for (com.sforce.soap.metadata.Error e : r.getErrors()) {
System.out.println("Error message: " + e.getMessage());
System.out.println("Status code: " + e.getStatusCode());
}
}
}
} catch (ConnectionException e) {
e.printStackTrace();
}
return success;
}
我正在谷歌搜索,并没有找到真正有用的东西。因此,任何提示都受到欢迎。谢谢。
答案 0 :(得分:0)
终于找到了解决方案。我最后一个对我来说是要求所有自定义字段。
CustomField cs = new CustomField();
cs.setFullName("Lead.YourCompanyName" + name + "__c");
cs.setLabel("YourCompanyName" + name);
cs.setRequired(true);
...
com.sforce.soap.enterprise.LoginResult metadataLoginResult = operations.loginToMetadata(username, password, "https://login.salesforce.com/services/Soap/c/36.0");
...
private boolean createFieldInMetadata(LoginResult metadataLoginResult, CustomField cs) {
boolean success = false;
try {
MetadataConnection metadataConnection = createMetadataConnection(metadataLoginResult);
SaveResult[] results = metadataConnection.createMetadata(new Metadata[] { cs });
for (SaveResult r : results) {
if (r.isSuccess()) {
success = true;
} else {
System.out.println("Errors were encountered while creating " + r.getFullName());
for (com.sforce.soap.metadata.Error e : r.getErrors()) {
System.out.println("Error message: " + e.getMessage());
System.out.println("Status code: " + e.getStatusCode());
}
}
}
} catch (Exception e) {
}
return success;
}
因此它将出现在页面布局中。非常重要的是,必填字段不能只有空值集,它必须是某种东西。因此,如果不是您的逻辑中都需要所有自定义字段,并且您希望避免解压缩页面布局并将其拉回(但可能已完成)的整个过程,只需将“N / A”或任何字符添加到代码所需的字符串中但不是你的项目自定义字段。
我设法为“管理员”配置文件显示自定义字段级安全性,但是不显示“字段可访问性”。后者未经测试。