Netsuite 要从采购订单记录中的合同记录中搜索fileld值
我正在采购记录中的合同记录中搜索值,但无法获取值所在的字段。下面是代码。我将此代码应用于合同记录,此功能在提交前使用。 我认为我用了错误的方法进行搜索Netsuite 要从采购订单记录中的合同记录中搜索fileld值,netsuite,suitescript,Netsuite,Suitescript,我正在采购记录中的合同记录中搜索值,但无法获取值所在的字段。下面是代码。我将此代码应用于合同记录,此功能在提交前使用。 我认为我用了错误的方法进行搜索 function srchfield() { var recordid = nlapiGetRecordId() //retunrs the contract id nlapiLogExecution('DEBUG', 'recordid ', recordid ); var record
function srchfield()
{
var recordid = nlapiGetRecordId() //retunrs the contract id
nlapiLogExecution('DEBUG', 'recordid ', recordid );
var recordtype = nlapiGetRecordType(); //retunrs the contract recordtype = jobs
nlapiLogExecution('DEBUG', 'RecordType', recordtype);
var loadrecord = nlapiLoadRecord(recordtype, recordid); //loads the record
nlapiLogExecution('DEBUG', 'Load Record', loadrecord );
var contractname = nlapiGetFieldValue('entityid'); //returs the value of the field contractname whose fieldid is = entityid
nlapiLogExecution('DEBUG', 'ContractName ', contractname );
var filters = new Array();
new nlobjSearchFilter('entityid', null, 'anyof', contractname ); // entityid is field id in contract Record and contractname is defined above for contract record
// nlapiLogExecution('DEBUG', 'SearchFilter', filters );
var columns = new Array();
new nlobjSearchColumn('custbodycontract'); // custbodycontractis field id in PO Record
var searchresults = nlapiSearchRecord('purchaseorder', null, filters, columns);
for ( var i = 0; searchresults != null && i < searchresults.length; i++ )
{
var searchresult = searchresults[ i ];
var record = searchresult.getId( );
var rectype = searchresult.getRecordType( );
var cntrct_name= searchresult.getValue( 'custbodycontract' );
}
}
函数srchfield()
{
var recordid=nlapiGetRecordId()//重新计算合同id
nlapiLogExecution('DEBUG','recordid',recordid);
var recordtype=nlapiGetRecordType();//重新展开合同记录类型=作业
nlapiLogExecution('DEBUG','RecordType','RecordType');
var loadrecord=nlapiLoadRecord(recordtype,recordid);//加载记录
nlapiLogExecution('DEBUG','Load Record',loadrecord');
var contractname=nlapiGetFieldValue('entityid');//保留fieldid为=entityid的字段contractname的值
nlapiLogExecution('DEBUG','ContractName',ContractName);
var filters=新数组();
新的nlobjSearchFilter('entityid',null,'anyof',contractname);//entityid是合同记录中的字段id,而contractname是为合同记录定义的
//nlapiLogExecution('DEBUG','SearchFilter',filters);
var columns=新数组();
新建nlobjSearchColumn('custbodycontract');//采购订单记录中的CustBodyContracts字段id
var searchresults=nlapiSearchRecord('purchaseorder',null,filters,columns);
for(var i=0;searchresults!=null&&i
提前感谢更新:我已经根据提供的评论完成了我的回答。请看最后一节。我希望有帮助。谢谢***
**如果你能进一步解释的话,我可能会给你提供这个片段。请告知 如果我正确理解了您的代码,那么以下就是您正在做的事情以及您想要做的事情:
- 您的合同记录是本机实体记录-项目/作业。您的职能顾问刚刚将其重命名为合同
- 在提交并部署到合同(项目/作业)记录之前,您有一个用户事件脚本(SuiteScript 1.0)
- 使用合同记录中的信息(在本例中使用合同名称(entityid),您希望搜索POs以在标题处获取“custbodycontract”
- 然后,您使用“entityid”过滤POs上的搜索,但PO在标题上没有该本地字段。它只在费用行和项目行上有该字段,但id为“customer”。
您能解释一下合同记录与采购订单的关系吗?采购订单上有哪些字段(本机/自定义)可以用作合同记录的联接?
那么,请注意这个最佳实践作为免费赠品。 - 优化您的脚本。您不需要在提交前使用nlapiLoadRecord。请参阅以下最佳实践:
-使用beforesubmit,如果您仅获取或设置脚本部署记录上的值,请使用nlapiGet**和nlapiSet**API。
-在beforesubmit上,只有在获取和设置不同记录的子列表上的值时才使用nlapiLoadRecord。但是,如果仅获取行级别(不同记录)的值,则使用第一个nlapiSearchRecord。如果它不能提供您所需的内容,请使用nlapiLoadRecord。
-在aftersubmit上,仅当您在已部署记录和其他记录的行级别上设置和获取值时,才使用nlapiLoadRecord。如果您仅在级别上获取值,请使用beforesubmit的相同做法。
-在提交后,使用nlapiLookUp从标头获取值,如果正在设置,则使用nlapiSubmitField。仅当nlapiLoadRecord无法提供所需内容时,才使用nlapiLoadRecord。
****这可能是你需要的。。。
for(var i=0;arrSearchresults!=null&&i
****更新:我已经根据提供的评论完成了我的答案。请参阅最后一节。我希望这有帮助。谢谢***
**如果你能进一步解释,我可能会提供给你这个片段。请建议 如果我正确理解了您的代码,那么以下就是您正在做的事情以及您想要做的事情:
- 您的合同记录是本机实体记录-项目/作业。您的职能顾问刚刚将其重命名为合同
- 在提交并部署到合同(项目/作业)记录之前,您有一个用户事件脚本(SuiteScript 1.0)
- 使用合同记录中的信息(在本例中使用合同名称(entityid),您希望搜索POs以在标题处获取“custbodycontract”
- 然后,您使用“entityid”过滤POs上的搜索,但PO在标题上没有该本地字段。它只在费用行和项目行上有该字段,但id为“customer”。
您能解释一下合同记录与采购订单的关系吗?采购订单上有哪些字段(本机/自定义)可以用作合同记录的联接?
那么,请注意这个最佳实践作为免费赠品。 - 优化您的脚本。您不需要在提交前使用nlapiLoadRecord。请参阅以下最佳实践:
-使用beforesubmit,如果您仅获取或设置脚本部署记录上的值,请使用nlapiGet**和nlapiSet**API。
-在beforesubmit上,如果您正在获取和设置不同记录的子列表上的值,则仅使用nlapiLoadRecord。但是,如果您仅在行级别(不同记录)获取值,则使用第一个nlapiSearchRecord。如果它不会提供您需要的值,则使用第一个nlapiSearchRecordfunction srchfield() { var stRecordid = nlapiGetRecordId(); /*retunrs the contract id*/ nlapiLogExecution('DEBUG', 'recordid ', stRecordid); var stRecordtype = nlapiGetRecordType(); /*retunrs the contract recordtype = jobs*/ nlapiLogExecution('DEBUG', 'RecordType', stRecordtype); var stContractname = nlapiGetFieldValue('entityid'); /*returs the value of the field contractname whose fieldid is = entityid*/ nlapiLogExecution('DEBUG', 'ContractName ', stContractname); var arrFilters = new Array(); arrFilters.push(new nlobjSearchFilter('type', null, 'anyof', [ 'PurchOrd' ])); /*As best practice, instead of directly searching on POs, add filter for transaction type since you might use this later in other transaction.*/ arrFilters.push(new nlobjSearchFilter('mainline', null, 'is', 'T')); /*This is to exclude line level results*/ arrFilters.push(new nlobjSearchFilter('custbodycontract', null, 'is', stContractname)); var arrColumns = new Array(); arrColumns.push(new nlobjSearchColumn('trandate')); /*I just wanted to include this column on the result. :)*/ arrColumns.push(new nlobjSearchColumn('type')); /*I just wanted to include this column on the result. :)*/ arrColumns.push(new nlobjSearchColumn('tranid')); /*I just wanted to include this column on the result. :)*/ arrColumns.push(new nlobjSearchColumn('custbodycontract')); /*This is what you need.*/ var arrSearchresults = nlapiSearchRecord('transaction', null, arrFilters, arrColumns);
for (var i = 0; arrSearchresults != null && i < arrSearchresults.length; i++) { var objResult = arrSearchresults[i]; var stRecId = objResult.getId(); var stRecType = objResult.getRecordType(); var stCntrctName = objResult.getValue('custbodycontract'); }
function srchfield() { var stRecordid = nlapiGetRecordId(); /*retunrs the contract id*/ nlapiLogExecution('DEBUG', 'recordid ', stRecordid); var stRecordtype = nlapiGetRecordType(); /*retunrs the contract recordtype = jobs*/ nlapiLogExecution('DEBUG', 'RecordType', stRecordtype); var stContractname = nlapiGetFieldValue('entityid'); /*returs the value of the field contractname whose fieldid is = entityid*/ nlapiLogExecution('DEBUG', 'ContractName ', stContractname); var arrFilters = new Array(); arrFilters.push(new nlobjSearchFilter('type', null, 'anyof', [ 'PurchOrd' ])); /*As best practice, instead of directly searching on POs, add filter for transaction type since you might use this later in other transaction.*/ arrFilters.push(new nlobjSearchFilter('mainline', null, 'is', 'T')); /*This is to exclude line level results*/ arrFilters.push(new nlobjSearchFilter('custbodycontract', null, 'is', stContractname)); var arrColumns = new Array(); arrColumns.push(new nlobjSearchColumn('trandate')); /*I just wanted to include this column on the result. :)*/ arrColumns.push(new nlobjSearchColumn('type')); /*I just wanted to include this column on the result. :)*/ arrColumns.push(new nlobjSearchColumn('tranid')); /*I just wanted to include this column on the result. :)*/ arrColumns.push(new nlobjSearchColumn('custbodycontract')); /*This is what you need.*/ var arrSearchresults = nlapiSearchRecord('transaction', null, arrFilters, arrColumns); for (var i = 0; arrSearchresults != null && i < arrSearchresults.length; i++) { var objResult = arrSearchresults[i]; var stRecId = objResult.getId(); var stRecType = objResult.getRecordType(); var stCntrctName = objResult.getValue('custbodycontract'); } }