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