【问题标题】:How can my application submit salesforce case with custom fields?我的应用程序如何提交带有自定义字段的 Salesforce 案例?
【发布时间】:2010-05-24 20:45:26
【问题描述】:

我有一个应用程序可以将多个客户的错误提交到多个目的地。我希望此应用程序将 salesforce 作为目标。我有企业 WSDL 的网络参考,我可以为销售人员创建案例。在我想将用户定义的自定义字段作为案例的一部分之前,这很有效。对于我的 salseforce 实例,自定义字段使用 __c 前缀进行强类型化。但是我不能使用我的客户实例更新我的 web 服务。

如何提交包含未在 WSDL 中定义的自定义字段的 Salesforce 案例?

我不应该使用企业 WSDL 吗?

【问题讨论】:

标签: salesforce


【解决方案1】:

您需要使用Partner WSDL

它的类型很松散,因此可以与所有“组织”一起使用,无论他们有什么定制。

这里有一些Partner WSDL Examples in Java

【讨论】:

  • Partner WSDL 更加通用,并且在您更改元数据(即添加/删除字段)时不会更改,而 Enterprise WSDL 是显式的,并且必须在元数据更改时进行更新。
【解决方案2】:

我使用合作伙伴 WSDL 的代码示例

//Base class
public class SalesforceBase
{
    private readonly List<SalesforceCustomField> _customFields = new List<SalesforceCustomField>();
    private readonly XmlDocument _document = new XmlDocument();
    private readonly List<XmlElement> _elements = new List<XmlElement>();
    private readonly string _type;

    protected SalesforceBase(string type)
    {
        _type = type;
    }

    public string Type
    {
        get
        {
            return _type;
        }
    }

    public IEnumerable<SalesforceCustomField> CustomFields
    {
        get
        {
            return _customFields;
        }
    }

    public XmlElement[] Any
    {
        get
        {
            return _elements.ToArray();
        }
    }

    public void AddCustomField(SalesforceCustomField customField)
    {
        UpdateElements(customField.FieldName, customField.Value);
        _customFields.Add(customField);
    }

    protected void UpdateElements(string name, string value)
    {
        var element = _elements.Find(ele => ele.Name == name);
        if (element != null)
        {
            element.InnerText = value;
        }
        else
        {
            element = _document.CreateElement(name);
            element.InnerText = value;
            _elements.Add(element);
        }
    }
}
//Implement Base
public class SalesforceContact : SalesforceBase
{
    public SalesforceContact() : base("Contact") { }

    private string _firstName;
    public string FirstName
    {
        get { return _firstName; }
        set
        {
            if (value != null)
            {
                UpdateElements("FirstName", value);
                _firstName = value;
            }
        }
    }
}
//Send It
SForceService.create( new sObject(){Any = contact.Any, type = contact.Type});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2012-11-03
    • 2019-10-09
    • 2022-11-18
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多