Mengapa Skrip NetSuite saya gagal dengan kesalahan RCRD_DSNT_EXIST

Saya seorang pemula di NetSuite, jadi harap berhati-hati.

Saya memiliki skrip sederhana yang tujuannya adalah menghapus semua kutipan yang dikembalikan dari pencarian tertentu.

Ini dia:

function executeSavedSearch()
{
    var searchresults = nlapiSearchRecord('estimate', 1234, null, null);
    for (var i = 0; searchresults != null && i < searchresults.length; i++) 
    {
        var searchresult = searchresults[i];
        nlapiDeleteRecord(searchresults[i].getRecordType(), searchresults[i].getId());
    }
}

Itu dia. Tetapi setiap kali saya menjalankannya gagal dan log eksekusi menunjukkan RCRD_DSNT_EXIST, dengan rincian "Catatan itu tidak ada."

Saya telah mengonfirmasi bahwa ID pencarian (1234 di atas) beberapa kali benar. Pencarian mengembalikan sejumlah catatan, jadi bukan berarti tidak ada hasil yang bisa dikerjakan skrip.

Bantuan apa pun diterima dengan rasa syukur.


person Bud    schedule 27.01.2020    source sumber


Jawaban (4)


Bisakah Anda membagikan filter dan kolom Pencarian Tersimpan? Ada kemungkinan Jalur Utama/Jalur Pajak/Jalur Pelayaran tidak disetel. Hal ini menyebabkan beberapa baris ditampilkan dalam Pencarian Tersimpan untuk suatu transaksi.

person NetSuite Help    schedule 28.01.2020

Coba ini.

var estimateSearch = nlapiSearchRecord("estimate", null,
        [
            // add or remove filters as per your need.
            ["formulanumeric: {internalid}", "between", "200", "300"],
            "AND",
            ["mainline", "is", "T"] // In order to avoid duplicate records in result, do not remove this filter 
        ],
        [
            new nlobjSearchColumn("internalid") // Result column
        ]
    );
    var quoteId;
    for (var i = 0; estimateSearch != null && i < estimateSearch.length; i++) {
        quoteId = estimateSearch[i].getValue('internalid');
        nlapiLogExecution("Debug", "Quote ID: " + quoteId, " Index: " + i);
        // nlapiDeleteRecord('Estimate', quoteId); // Verify the Execution Logs before you uncomment this line of code.
    }

Saya harap ini akan membantu.

person Sidd    schedule 28.01.2020
comment
Terima kasih Sidd. Silakan lihat tanggapan saya yang lebih panjang di bawah (begitukah seharusnya Anda menjawab seseorang di sini?). - person Bud; 28.01.2020

Terima kasih, Sidd. Dengan beberapa kesalahan pencatatan seperti yang Anda sarankan, saya telah mempersempitnya menjadi panggilan sebenarnya ke nlapiDeleteRecord. Inilah lingkaran saya:

for (var i = 0; searchresults != null && i < searchresults.length; i++) { try { nlapiLogExecution("Debug", "About to delete record id " + searchresults[i].getId());
nlapiDeleteRecord(searchresults[i].getRecordType(), searchresults[i].getId()); } catch (err) { var errMessage = err; if(err instanceof nlobjError) { errMessage = errMessage + ' ' + err.getDetails() + ' ' + 'Failed to Delete ID : ' + id; } nlapiLogExecution('ERROR', 'Error', errMessage); return err } }

ID yang dicatatnya dan ID yang ditampilkan dalam pesan kesalahan adalah sama - jadi ia mencatat "Akan menghapus id catatan 1234" dan kemudian memberikan pesan kesalahan:

Kode: RCRD_DSNT_EXIST Detail: Catatan itu tidak ada. Rekor itu tidak ada. Gagal Menghapus ID : 1234

Namun ketika saya menjalankan pencarian tersimpan, saya menemukan bahwa sebenarnya telah menghapus catatan 1234. Lain kali saya menjalankannya, ia akan mengeluarkan pesan yang sama - tetapi tentang ID 1235. Dan kemudian akan dihapus 1235. Seolah-olah karena suatu alasan ia mencoba menghapusnya dua kali, berhasil untuk pertama kali dan kemudian gagal untuk kedua kalinya karena sudah dihapus.

Dan saya telah memeriksa pencarian berulang kali - TIDAK memiliki banyak baris per kutipan. Jika saya menjalankan perintah di atas dengan baris hapus yang dikomentari, saya mendapatkan apa yang saya harapkan - entri log untuk setiap ID dalam pencarian saya.

Ada saran?

person Bud    schedule 28.01.2020
comment
Silakan bagikan Filter dan Kolom pencarian tersimpan Anda. Sepertinya, masalahnya ada pada pencarian tersimpan. - person Sidd; 29.01.2020

Lain kali coba jalankan skrip Anda di Script Debugger. Anda dapat dengan mudah melacak penyebab kesalahan ini di Script Debugger.

person vVinceth    schedule 29.01.2020