2016-10-25 3 views
0

Я бы хотел использовать SS2.0 и «новый» модуль N/ui/message для отображения предупреждений или ошибок, когда пользователь просматривает запись. На самом деле, я хотел бы понять, как запустить любой код сценария клиента 2.0 в режиме записи.SS2.0 Отображаемое сообщение по записи

мне удалось пример я могу запустить, который работает из консоли:

require(['N/currentRecord', 'N/ui/message'], 
    function(curr, mess) { 
     var rec = curr.get(); 
     var status = rec.getValue('status'); 
     if (status === 'Unapproved Payment') { 
      var myMsg = mess.create({ 
       title: "PAYMENT ERROR", 
       message: status, 
       type: mess.Type.ERROR 
      }).show({ 
       duration: 500000 
      }); 
     }}); 

прекрасно работает в режиме редактирования (pageInit или туда, куда), но не нашли способ загрузки и выполнения на «View» , Возможно ли это в 2.0? Должен ли я использовать 1.0 трюки?

+0

Я думаю, вам нужен SS2 перед загрузкой на просмотр. Новый вызов: 'form.clientScriptModulePath = './clientScriptPath.js'; 'Пример NS перечисляет путь как SuiteScripts/clientScriptPath.js, но я надеюсь, что форма, которую я предложил, работает. В противном случае в комплекте или в упаковке (все в их собственной папке) будет закрыт. – bknights

+0

Я не смог получить какой-либо из этого кода, чтобы выполнить его соответствующим образом с помощью clientScriptModule/FileId. возможно, это была ошибка пользователя. я закончил обертывание вышеприведенного примера в триггере события jquery, внутри тегов

0

FWIW работает в режиме редактирования, но не в режиме просмотра. (См. Мой другой ответ на взлом, который работает с октября 2016 года). Я подозреваю, что это будет исправлено где-то на этом пути, поскольку аналогичный код много лет работал в SS1.0. Если у вас есть бизнес-кейс, напишите файл поддержки Netsuite. Сценарий

пользователя события:

/** 
*@NApiVersion 2.x 
*@NScriptType UserEventScript 
*/ 
define(['N/record', 'N/log'], 
    function(record, log) { 
     function beforeLoad(context) { 
      log.debug({title:'before load with '+ context.type +' on '+ context.form.title}); 
      //if (context.type != 'view') return; 
      log.debug({title:'setting client script'}); 
      context.form.clientScriptModulePath = './testSimpleClient.js'; //relative to the user event script file 
     } 

    return { 
     beforeLoad: beforeLoad 
    }; 
}); 

с testSimpleClient существами:

define(['N/ui/message', 'N/currentRecord'], function(msg, currentRecord){ 
    window.console.log('processing script'); 
    function showMessage(rec) { 
     window.console.log('record status is '+ rec.getValue('status')); 
     //if('Pending Approval' == rec.getValue('status')){ 
      var myMsg = msg.create({ 
       title: "PAYMENT ERROR", 
       message: rec.getValue('status'), //'Please Approve', 
       type: msg.Type.ERROR 
      }).show({ 
       duration: 100000 
      }); 
     //} 
    } 

    setTimeout(function(){ 
     showMessage(currentRecord.get()); 
    }, 1500); 


}); 
0

на основе раздела справки:

A current record instance can be accessed via the following ways: 
- The context object that gets passed into the client script entry point. 

В режиме просмотра вы можете присоединить только сценарий пользовательского события (beforeLoad).

Модуль N/currentRecord работает только на клиентских сценариях, поэтому он не работает.

Вместо этого используйте модуль N/record.

+0

Фактически код с N/currentRecord работает на стороне клиента. См. Рабочий пример – bknights

+0

Да. В основном, используйте * N/currentRecord * для клиента и * N/record * для серверной части. – earj