У меня небольшой вопрос.
Обычно в netsuite, если мы создаем элемент родительской матрицы, и вместе с этим, если я создаю шесть элементов дочерней матрицы, и если мы обновляем параметры матрицы любого элемента дочерней матрицы, изменение также отражается в элементе родительской матрицы.
То же самое я пытался сделать с помощью сценариев, но я столкнулся с проблемами, вот мой код, пожалуйста, помогите мне
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
define(['N/record'],
function(record) {
/**
* Definition of the Suitelet script trigger point.
*
* @param {Object} context
* @param {ServerRequest} context.request - Encapsulation of the incoming request
* @param {ServerResponse} context.response - Encapsulation of the Suitelet response
* @Since 2015.2
*/
function onRequest(context) {
try{
var clrArray =["red","green","yellow"];
var LsArray=["Small","Medium","Large"];
var k=0;
var Parent = record.create({
type: record.Type.INVENTORY_ITEM,
// id: 28405,
});
Parent.setValue({
fieldId: 'matrixtype',
value:'PARENT' ,
});
Parent.setValue({
fieldId: 'itemid',
value:'siyaram2' ,
});
Parent.setValue({
fieldId: 'subsidiary',
value:1,
});
Parent.setValue({
fieldId: 'taxschedule',
value:1,
});
Parent.setValue({
fieldId: 'custitem44',
value: 1
});
/*Parent.setValue({
fieldId: 'custitem83',
value:1,
});*/
var parentid = Parent.save({
ignoreMandatoryFields: true
});
log.debug('parent id is',parentid);
}
catch(error)
{
log.error(error);
}
try{
//for(i=0;i<clrArray.length;i++)
// for(j=0;j<LsArray.length;j++)
// {
var Child = record.create({
type: record.Type.INVENTORY_ITEM,
});
Child.setValue({
fieldId: 'itemid',
value:k++ ,
});
Child.setValue({
fieldId: 'matrixtype',
value:'CHILD' ,
});
Child.setValue({
fieldId: 'parent',
value:parentid ,
});
Child.setValue({
fieldId: 'taxschedule',
value:1 ,
});
/*Child.setValue({
fieldId: 'matrixoptioncustitem44',
value:1 ,
});*/
Child.setValue({
fieldId: 'matrixoptioncustitem44',
value: 3
});
var childId = Child.save({
ignoreMandatoryFields: true
});
log.debug('child is',childId)
// }
var childreload=record.load({
type: record.Type.INVENTORY_ITEM,
id: childId
});
var beforeset=childreload.getValue({fieldId:'matrixoptioncustitem44'});
var setvalue =childreload.setValue({fieldId:'matrixoptioncustitem44',value:2});
log.debug('value is',beforeset);
log.debug('setvalue is',setvalue);
var saved = Child.save({
ignoreMandatoryFields: true
});
log.debug('saved is',saved);
}
catch(error)
{
log.error({title:'child error',details:error});
}
}
return {
onRequest: onRequest
};
});
Я создал элементы матрицы родителя и chil и пытался обновить элемент дочерней матрицы, изменяя значения элементов матрицы дочерней записи, но я получал ошибку, подобную этой:
{"type":"error.SuiteScriptError","name":"THIS_RECORD_HAS_ALREADY_BEEN_CREATED_TO_PREVENT_CREATING_A_DUPLICATE_THIS_REQUEST_HAS_BEEN_CANCELLED","message":"This record has already been created. To prevent creating a duplicate, this request has been cancelled.","stack":["anonymous(N/serverRecordService)","onRequest(/SuiteScripts/MBL FEASIBILITY.js:117)"],"cause":{"type":"internal error","code":"THIS_RECORD_HAS_ALREADY_BEEN_CREATED_TO_PREVENT_CREATING_A_DUPLICATE_THIS_REQUEST_HAS_BEEN_CANCELLED","details":"This record has already been created. To prevent creating a duplicate, this request has been cancelled.","userEvent":null,"stackTrace":["anonymous(N/serverRecordService)","onRequest(/SuiteScripts/MBL FEASIBILITY.js:117)"],"notifyOff":false},"id":"","notifyOff":false}