2017-02-25 22 views
1

「レコードタイプ」に基づいてアイテムを作成するときに、「カスタムフォーム」をあらかじめ設定する方法を知りたいと思います。 "beforeLoad" ユーザーにNetsuiteはレコードタイプに基づいてエントリーフォームを動的に設定します

  • nlapiSetFieldValue( 'customform''2')/record.setFieldValeu():インベントリ項目などをシリアル化されたインベントリ項目、ロット番号がインベントリ項目、

    は、私が試してみますイベント--->しかし動作しません

  • チェックレコードの種類と "ページのinit"の "カスタムフォーム"を再設定します。クライアントスクリプト--->システムは最初に優先形式を読み込んでリロードします。しかし、 "カスタムフォーム"を変更すると、 "ページ初期化"を再度呼び出すようトリガーされます。条件付きでデッドループを解除する必要があります。しかし、私は多くのフィールドを最初にプリセットする必要があり、フォームの2倍をリースする必要があるので、パフォーマンスは悪いです。

このように、さまざまなアイテムレコードタイプに基づいてフォームを事前に設定する方法があるかどうかを知りたいと思いますか?

多くの感謝!

答えて

1

これはテストされ、私のSDNアカウントでの作業:

function beforeLoad() { 
    var formByType = { 
     "serializedinventoryitem": "33" 
    }; 

    var recordType = nlapiGetRecordType(); 
    var currentForm = nlapiGetFieldValue("customform"); 
    var desiredForm = formByType[recordType]; 

    if (desiredForm && (currentForm != desiredForm)) { 
     nlapiSetRedirectURL("RECORD", nlapiGetRecordType(), nlapiGetRecordId(), true, {"cf":desiredForm}); 
    } 
} 

だけのレコードタイプであるキーと値は、それぞれのタイプがにマップする必要がある形態であるとformByTypeオブジェクトを記入してください。

特定のタイプをformByTypeのままにしておくと、リダイレクトは試行されず、優先するフォームが使用されます。

このユーザーイベントスクリプトは、リダイレクトする必要のあるさまざまなアイテムタイプごとに複数の展開が必要であることに注意してください。

+0

ありがとうございます。それはうまくいく! "setFieldValue( 'customform'、 'XX')"の代わりに "nlapiSetRedirectURL"を使用してフォームを変更してください。クライアントスクリプトのページInitではなく、ロード前のユーザーイベントで実行します。 –

関連する問題