RCRD_DSNT_EXIST при создании сценария пользовательского события с функцией aftersubmit - PullRequest
1 голос
/ 23 апреля 2019

Я пытаюсь написать сценарий пользовательского события, который загружает текущую запись и заполняет значение позиции через поиск после отправки записи. Но он выдает ошибку RCRD_DSNT_EXIST, даже если запись существует.

function afterSubmit_SO(type){
    try
    {        
        //var record_type = nlapiGetRecordType();
        var recordID = nlapiGetRecordId();    
        var context = nlapiGetContext();
        var recordOBJ = nlapiLoadRecord('salesorder',recordID);
        var source = context.getExecutionContext();
       if(source == 'userinterface') 
        {
            var line_count = recordOBJ.getLineItemCount('item');
            nlapiLogExecution('DEBUG', 'line count ', line_count);
            for(var i = 1; i <= line_count; i++)
            {
                var itemID = recordOBJ.getLineItemValue('item','item',i); 
                nlapiLogExecution('DEBUG', 'item ID', itemID);             
                var filter = new Array();
                filter[0] = new nlobjSearchFilter('internalid', null, 'is', itemID);                    
                var columns = new Array();
                columns[0] = new nlobjSearchColumn('custitem_web_market_availability');               
                var a_search_results = nlapiSearchRecord('item',null,filter,columns);               
                if(a_search_results)
                {   
                    for(var x = 0; x < a_search_results.length; x++) 
                    {                    
                        var item_web_availability = a_search_results[x].getText('custitem_web_market_availability');                                                                                            
                        nlapiLogExecution('DEBUG', 'value', item_web_availability);
                    }
                }       recordOBJ.setLineItemValue('item','custcol_web_item_availability',i,item_web_availability);                
            }    
            var submitID = nlapiSubmitRecord(recordOBJ, true, true);
        } 
    }  
    catch(exception)
    {
    nlapiLogExecution('DEBUG','Exception Caught ','' + exception);
    }

    return true;     
}```

1 Ответ

1 голос
/ 24 апреля 2019

Возможно, ваш скрипт выполняется в операции удаления. Я не видел никакой проверки для этого в коде, который вы предоставили. Если это операция удаления, то сценарий событий после отправки пользователя не сможет загрузить удаленную запись, поэтому вы получаете сообщение об ошибке.

Параметр type вашей функции afterSubmit должен содержать тип операции. Вы можете что-то вроде if (type == 'delete') { return true;} в верхней части вашего сценария.

...