在Salesforce中硬删除自定义字段

本文关键字:自定义 字段 删除 Salesforce | 更新日期: 2023-09-27 18:09:28

我在永久删除自定义字段时遇到问题。

例如:我在Contact实体中创建了一个自定义字段,名称为"Newsletter",Salesforce内部将其存储为"Newsletter"作为自定义字段。

然后使用下面的代码删除联系人的自定义字段。

var cstField = new CustomField
{
  type = FieldType.Checkbox,
  fullName = "Contact.Newsletter__c"
};
// Delete the object
var r = metaService.delete(new Metadata[] { cstField })[0];

上面的代码删除了自定义字段,但将其保留在"DeletedFields"类别下,您可以再次"Erase"或"Undelete"自定义字段。这些自定义字段将在15天后自动删除。

我想从这些类别中删除自定义字段,就像我再次使用相同的名称创建cf一样,SF给出类似"已经存在"的错误。

我尝试了purgeOnDelete选项,同时部署,但没有运气到目前为止。

在Salesforce中硬删除自定义字段

purgeOnDelete。如果为true,则destructiveChanges.xml清单文件中已删除的组件不会存储在回收站中。相反,它们会立即被删除。此字段在API版本22.0及更高版本中可用。此选项仅适用于开发人员版或沙盒组织;它在生产组织中不起作用。扩展Salesforce迁移工具以支持PurgeOnDelete..由于某种原因,Salesforce迁移工具仍然没有通过sf:deploy Ant任务来公开这个优秀的特性。但是,只要具备一些Java技能,您就可以通过扩展当前的任务来创建新的部署Ant任务,从而将属性公开给Ant构建脚本,例如…

预构建的ant-salesforce.jar中包含了deploypurge。你可以从FinancialForce.com开发者Github仓库下载修改后的ant-salesforce.jar(注意,这是API v22.0,尽管你可以使用它来部署任何版本的代码)。

构建自己的扩展ant-salesforce.jar。如果您想重新构建一个新版本,那么您需要下载这个Java类,编译它,解压缩ant-salesforce.jar(将.jar重命名为.zip),将其放入并再次压缩,然后完成所有操作!

参考:https://salesforce.stackexchange.com/questions/12709/hard-delete-objects-using-the-force-com-migration-tool