2016-05-16 8 views
0

顧客レコードに住所を設定しようとしています。私はアドレスが顧客サブリストのサブレコードであることを理解しました。私はサブレコードにフィールドを設定できると思っていますが、変更を保存することができません。 SuiteScript 2.0を使用して顧客の住所情報を設定するにはどうすればよいですか?SuiteScript 2.0を使用して顧客に住所を設定する方法

現在のコード:

customer.selectNewLine({ 
    sublistId: 'addressbook' 
}); 

var addressSubrecord = customer.getCurrentSublistSubrecord({ 
    sublistId: 'addressbook', 
    fieldId: 'addressbookaddress' 
}); 

subrecordAddressDetail.setValue({ 
    fieldId: 'addr1', 
    value: 'Test Street' 
}); 

subrecordAddressDetail.setValue({ 
    fieldId: 'country', 
    value: 'US' 
}); 

customer.commitLine({ 
    sublistId: 'addressbook' 
}); 

私も.commitListcustomer.save()を追加しようとしましたが、私はそうしようとすると、エラーRecord has changedを取得します。

答えて

1

あなたは適切なレコードとしてアドレスを扱う必要があると思います。したがって、値を取得してから別々にコミットします。これらの線に沿って何か:

customer.selectNewLine({ 
    sublistId: 'addressbook' 
}); 

var addressSubrecord = customer.getCurrentSublistSubrecord({ 
    sublistId: 'addressbook', 
    fieldId: 'addressbookaddress' 
}); 

addressSubrecord.setValue({ 
    fieldId: 'addr1', 
    value: 'Test Street' 
}); 

addressSubrecord.setValue({ 
    fieldId: 'country', 
    value: 'US' 
}); 

addressSubrecord.save() 

customer.commitLine({ //probably not necessary since address is already updated 
    sublistId: 'addressbook' 
}); 
+0

こんにちは@TonyH - あなたの助けに感謝を。サブコードはSuiteScript2.0に '.save()'メソッドを持たないようです。 saveを呼び出すと、メソッドが定義されていないというエラーが返されます。私は自分の問題を把握することができました。問題の概要を記した回答を投稿しました。 –

1

は、私が行方不明になった部分は、あなたを有効にするサブリストのサブレコードへの変更のための親レコードを保存する必要があるということでした。私はそのレコードを変更して以前に保存していたので、上記の親レコードを保存することができませんでした。これはRecord has already changed errorを引き起こしました。 addressbookサブリストの行を選択する

  1. は、一般的により顧客レコードに追加することができるアドレス。

  2. 現在選択されている行のアドレスサブレコードを取得します。
  3. サブレコードを更新しています。
  4. サブリストaddressbookで選択した行をコミットしています。
  5. 親レコードを保存しています。たとえば、

これは、特定の顧客のための最初のアドレスを更新するか、すでに存在していない場合は、それを作成します。

function updateAddress(customer, address) { 
    var currentAddressCount = customer.getLineCount({ 
     'sublistId': 'addressbook' 
    }); 

    if (currentAddressCount === 0){ 
     customer.selectNewLine({ 
     sublistId: 'addressbook' 
     }); 
    } else { 
     customer.selectLine({ 
     sublistId: 'addressbook', 
     line: 0 
     });  
    } 

    var addressSubrecord = customer.getCurrentSublistSubrecord({ 
     sublistId: 'addressbook', 
     fieldId: 'addressbookaddress' 
    }); 

    // Set all required values here. 
    addressSubrecord.setValue({ 
     fieldId: 'addr1', 
     value: address.line_one 
    }) 

    customer.commitLine({ 
     sublistId: 'addressbook' 
    }); 
    customer.save() 
    } 
+0

このような厄介な問題:これらのサブリストAPIは動的モードでしか利用できないため、変更する場合はまずCountryフィールドを必ず設定する必要があります。ダイナミックモードで他の国を設定した後で国のフィールドを変更すると、すべての変更が失われます。あなたのフィールドが設定されるべき順序を知っていることを確認するためにUIでドライランを行うのがベストです。 – Eidolon108

関連する問題