通过SUitescript / Webservices提取Netsuite元数据

时间:2015-09-17 08:50:45

标签: netsuite

我们可以使用Webservices或适用于记录类型的附件提取Netsuite的元数据吗? 例如,如果我有记录摘要发票--->我需要字段名称和每个字段的数据类型?

2 个答案:

答案 0 :(得分:3)

在SuiteScript中,您可以加载您尝试检查的记录实例,然后在其上调用getAllFields方法:

var record = nlapiLoadRecord('customrecord_summaryinvoice', 'anyInternalIdHere');
var fieldNames = record.getAllFields();

// Do whatever you need to with fieldNames...

不幸的是,我对Web服务并不熟悉,不足以推荐一种方法。

答案 1 :(得分:0)

在SuiteTalk中,您可以进行API调用,该调用将返回所有自定义记录的元数据(scriptId,internalId)。

我正在使用C#:

public Dictionary<string, string> GetCustomization()
{

    Dictionary<string, string> customRecords = new Dictionary<string, string>();

    // gets metadata for all custom records.
    CustomizationType ct = new CustomizationType() { 
        getCustomizationType = GetCustomizationType.customRecordType, 
        getCustomizationTypeSpecified = true 
    };

    GetCustomizationIdResult  cr = _myNetSuiteWebReference.getCustomizationId(ct, false);

    foreach (CustomizationRef re in cr.customizationRefList)
    {
        customRecords.Add(re.scriptId, re.internalId);
    }

    return customRecords;
}

如果您已经使用Web服务加载了记录,则可以使用Reflection来获取该对象的属性。

我将仅使用销售订单记录作为示例:

RecordRef rr = new RecordRef();
rr.internalId = "123456789";
rr.typeSpecified = true;
rr.type = RecordType.salesOrder;

ReadResponse readr = Get(rr);
// cast so a sales order object.
SalesOrder so = (SalesOrder)readr.record;

so.getType().getProperties(); // returns an array of PropertyInfo.
foreach(System.Reflection.PropertyInfo pi in so.getType().getProperties())
{ 
    Console.WriteLine(pi.Name);
}