2016-05-29 8 views
1

これはSuiteScript 1で動作しますが、何らかの理由でSuiteScript 2で動作しない場合があります。何が欠けていますか?SuiteScript 2を使用して受注の明細を変更するには

クライアント側(フィールドが変更された行/変更された行)またはサーバー側(送信時)では、受注の行を変更することはできません。カスタムフィールドを設定します。

これらのいずれも動作しません。関数が見つからないか、何も起こりません。テキストや値を設定するために、さまざまな機能や組み合わせを試しました。私は動作していないよう:

1.

Rec.setSublistText({ 
    sublistId : 'item', 
    fieldId : 'custcol_example', 
    line : i, 
    value : "A" 
}); 

2.

Rec.selectLine({ 
    sublistId : 'item', 
    line : i 
}); 
Rec.setCurrentSublistText({ 
    sublistId : 'item', 
    fieldId : 'custcol_example', 
    value : "A", 
    ignoreFieldChange: true 
}); 
Rec.commitLine(); 

これは、より完全な要求としてのSuiteScript 1

function clientFieldChanged(type, name, linenum) { 
    var Count = nlapiGetLineItemCount("item"); 
    for (var i = 1; i <= Count; i++) { 
     nlapiSelectLineItem("item", i); 
     nlapiSetCurrentLineItemValue("item", "custcol_example", "A", false, false); 
     nlapiCommitLineItem("item"); 
    } 
} 

で完璧に動作しますSS2の例。動作しません。

function fieldChanged(scriptContext) { 
     var Rec = scriptContext.currentRecord; 
     var Count = Rec.getLineCount("item"); 
     for (var i = 0; i < Count; i++) { 
      Rec.selectLine({ 
       sublistId : 'item', 
       line : i 
      }); 
      Rec.setCurrentSublistText({ 
       sublistId : 'item', 
       fieldId : 'custcol_example', 
       line : i, 
       value : "A" 
      }); 
      Rec.commitLine(); 
     } 
} 

答えて

0

あなたのコードは、どちらの場合でも動作するはずです。あなたは、JSコンソールを使用して、これらのスクリプトを行ごとに繰り返し試しましたか?

たとえば、Chromeでトランザクションレコードの編集を開始し、Ctrl-Shift-Iを押してデベロッパーコンソールを開きます。コードをコピーして1行ずつ貼り付けて、各操作の効果をインタラクティブに表示することができます。うまくいけば、事態が悪化したときにそれを見つけることができます。

+0

私にはさまざまなエラーがあります。最も一般的なのは次のようなエラーです: –

+0

TypeError:オブジェクトDeferredDynamicRecordの関数selectLineが見つかりません。 –

+0

何とか普通のレコードがないようです。 GUIでこのエラーが発生しています。 – TonyH

1

これ以上のコードを表示することはできますか?これはどのような種類のスクリプトですか?

インデックス変数が正しいことを確認してください。 1.0のサブリスト行インデックスは1から始まり、2.0では0から始まります。

selectLineおよび*Current* APIを使用するには、レコードをダイナミックモードでロードする必要があります。クライアントスクリプトでは、currentRecordは常に動的モードでなければなりませんが、他のスクリプトタイプでは動的モードでレコードを明示的に読み込む必要があります。 関数selectLineを見つけることができません動的モードではなく標準モードでレコードを処理しているときにエラーが発生します。

以下は、コンソールまたはデバッガで実行される2.0の例です。ダイナミックモードで受注をロードし、すべての明細行をクローズとしてマークします。 0

require(["N/record"], function (rec) { 
    var salesOrder = rec.load({ 
    "type": rec.Type.SALES_ORDER, 
    "id": 7610, 
    "isDynamic": true 
    }); 

    closeOrderDynamic(salesOrder); 

    // Utility function that closes the provided Sales Order record 
    // order must be in Dynamic mode 
    function closeOrderDynamic(order) { 
    var itemIndex = 0; 
    var itemCount = order.getLineCount({ 
     "sublistId": "item" 
    }); 

    while (itemIndex < itemCount) { 
     order.selectLine({ 
     "sublistId": "item", 
     "line": itemIndex 
     }); 
     order.setCurrentSublistValue({ 
     "sublistId": "item", 
     "fieldId": "isclosed", 
     "value": true 
     }); 
     // Must commit the line after we've changed it to save modifications 
     order.commitLine({ 
     "sublistId": "item" 
     }); 
     itemIndex++; 
    } 
    } 
}); 
+0

より完全なSS2の例を追加しました。 –

+0

あなたの 'commitLine'への呼び出しは完全ではありません。私の例を見てください。 'sublistId'オプションがありません:' commitLine({sublistId: 'item'}); ' – erictgrubaugh

+0

それでも失敗します。 –

0

itemIndex開始はあなたのSS1コードに基づいて、あなたはsetCurrentSublistValuesetSublistValueを使用する方法注意:

Rec.selectLine({ 
    sublistId : 'item', 
    line : i 
}); 
Rec.setCurrentSublistValue({ 
    sublistId : 'item', 
    fieldId : 'custcol_example', 
    value : "A", 
    ignoreFieldChange: true 
}); 
Rec.commitLine(); 
+0

これはエラーです:TypeError:オブジェクトDeferredDynamicRecordの関数selectLineが見つかりません。私はNSが私のための解決策を見つけたと思う。私はそれを投稿します。 –

0

接触にアドレスレコードをつかむしようとしたとき、私は同様のエラーが発生しました。サブリストのサブレコードからデータを取得する場合は、record.loadを使用してレコードをロードし、それを動的モードにする必要があります。

MineはAfterSubmit関数ですが、問題が解決しないことがあります。助けてくれることを願っています。以下は、record.load関数へのリンクです(まだ持っていない場合)。'A'、ではない値:あなたはsetSublistTextを使用しているので

https://netsuite.custhelp.com/app/answers/detail/a_id/45155/kw/record.load

0

()あなたは 'テキスト' を使用する必要がありますあなたのコード1

Rec.setSublistText({ 
    sublistId : 'item', 
    fieldId : 'custcol_example', 
    line : i, 
    value : "A" 
}); 

に若干のバグがあります。それは次のようになります:

Rec.setSublistText({ 
    sublistId : 'item', 
    fieldId : 'custcol_example', 
    line : i, 
    text: "A" 
}); 

これが役に立ちます。

+0

それはかなり意味があります。 –

関連する問題