2016-02-24 8 views
0

Я пытаюсь использовать метод post для простой программы-сценариста, я очень новичок в этом.Невозможно разобраться, как использовать метод post, для описания номеров, написанного в Netsuite

В Netsuite я написал описательный список следующим образом.

function restPost() 
{ 
    var i = nlapiLoadRecord('department', 115); 

    var memo = nlapisetfieldvalue('custrecord225', ' ');// this is a customfield, which i want to populate the memo field, using rest client in firefox 

    var recordId = nlapiSubmitRecord(i); 

} 

я создал запись сценария и загрузить этот SuiteScript и даже скопировал внешний URL, чтобы вставить его в restclient.

В Restclient (Firefox плагин), наклеенные внешний URL-адрес, я дал метод как пост, учитывая разрешение заголовка, тип содержимого: приложения/JSON, а в теле я положить в

В этого ошибка я получаю

message": "missing) after argument list

Я даже пытался его сочинительство других SuiteScript программирует ошибки я получаю следующим образом:

Unexpected token in object literal (null$lib#3) Empty JSON string Invalid data format. You should return TEXT.

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

+0

Ваш метод 'restPost' не имеет каких-либо параметров. Проверьте, не хватает ли вы их. Обычно вам нужна ссылка на объект запроса и содержащиеся в нем данные. – TonyH

+0

Я изменил свой код и поставил параметр (datain) 'function restPost (datain) { var i = nlapiLoadRecord ('department', 115); \t var memo = nlapisetfieldvalue ('custrecord225', ''); var recordId = nlapiSubmitRecord (i); } Ошибка, которую я получаю сейчас: SyntaxError: Ожидаемый конец потока на char 21 – Vin

ответ

0

Я считаю, что вам нужно return что-то от вашей функции. Пустой объект должен делать нормально, или что-то вроде {success : true}.

1

Я думаю, что вы пытаетесь создать RESTlet для метода POST. Ниже приведен пример кода для метода POST -

function createRecord(datain) 
{ 
var err = new Object(); 

// Validate if mandatory record type is set in the request 
if (!datain.recordtype) 
{ 
    err.status = "failed"; 
    err.message= "missing recordtype"; 
    return err; 
} 

var record = nlapiCreateRecord(datain.recordtype); 

for (var fieldname in datain) 
{ 
if (datain.hasOwnProperty(fieldname)) 
{ 
    if (fieldname != 'recordtype' && fieldname != 'id') 
    { 
     var value = datain[fieldname]; 
     if (value && typeof value != 'object') // ignore other type of parameters 
     { 
      record.setFieldValue(fieldname, value); 
     } 
    } 
} 
} 
var recordId = nlapiSubmitRecord(record); 
nlapiLogExecution('DEBUG','id='+recordId); 

var nlobj = nlapiLoadRecord(datain.recordtype,recordId); 
return nlobj; 
} 

Таким образом, после развертывания этого Restlet вы можете вызвать этот метод POST, передавая образец следующий JSON полезной нагрузки -

{"recordtype":"customer","entityid":"John Doe","companyname":"ABCTools Inc","subsidiary":"1","email":"[email protected]"} 

Для авторизации Вы должны пройти заголовки запросов, как следующим образом: -

var headers = { 
      "Authorization": "NLAuth nlauth_account=" + cred.account + ", nlauth_email=" + cred.email + 
          ", nlauth_signature= " + cred.password + ", nlauth_role=" + cred.role, 
      "Content-Type": "application/json"}; 
0

Добро пожаловать на NetSuite Suitescripting @Vin :)

Я настоятельно рекомендую пройти SuiteScript API Overview & SuiteScript API - Alphabetized Index в Справочном центре NS, который является единственным и наиболее очевидным местом для изучения основ Suitescripting.

nlapiLoadRecord(type, id, initializeValues)

Loads an existing record from the system and returns an nlobjRecord object containing all the field data for that record. You can then extract the desired information from the loaded record using the methods available on the returned record object. This API is a core API. It is available in both client and server contexts.

 function restPost(dataIn) { 
      var record = nlapiLoadRecord('department', 115); // returns nlobjRecord 
      record.setFieldValue('custrecord225', dataIn.memo); // set the value in custom field 
      var recordId = nlapiSubmitRecord(record); 
      return recordId; 
     } 
1

Я понимаю ваше требование и ответ, отправленный Parsun & NetSuite-Эксперт хорошо. Вы можете следовать этому коду. Это общий код, который может принимать любую основную запись без дочерних записей. Для примера заказчик без контакта или адресной книги.

Я хотел бы предложить небольшое изменение кода, и я дал его в своем решении.

Изменения Ниже

var isExistRec = isExistingRecord(objDataIn); 
      var record = (isExistRec) ? nlapiLoadRecord(objDataIn.recordtype, objDataIn.internalid, { 
       recordmode: 'dynamic' 
      }) : nlapiCreateRecord(objDataIn.recordtype); 

//Check for Record is Existing in Netsuite or Not using a custom function

function isExistingRecord(objDataIn) { 
     if (objDataIn.internalid != null && objDataIn.internalid != '' && objDataIn.internalid.trim().length > 0) 
      return true; 
     else 
      return false; 
    }  

So whenever you pass JSON data to the REStlet, keep in mind you have to pass the internalid, recordtype as mandatory values.

Благодаря
Фредерик

 Смежные вопросы

  • Нет связанных вопросов^_^