Обновление параметров элемента матрицы с помощью suitescript - PullRequest
0 голосов
/ 14 сентября 2018

У меня небольшой вопрос. Обычно в 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}

1 Ответ

0 голосов
/ 17 декабря 2018

Согласно сообщению об ошибке (и указанному выше коду), вы пытаетесь создать элементы подматрицы с одинаковой комбинацией матриц, т.е. все дочерние элементы, которые имеют matrixoptioncustitem44 значение 2 . например. Как и футболка, это ваш родительский матричный элемент, и все его субматричные элементы имеют одинаковый размер M . Это недопустимо, так как субматрица должна иметь разные размеры (согласно приведенному выше примеру).

...