Как отобразить клиентские оповещения в контексте постов Suitelet? - PullRequest
0 голосов
/ 15 февраля 2019

Как я могу отображать ошибки при вводе данных в эту форму пакета, чтобы я мог отображать такие сообщения, как одно из приведенных ниже, о дублирующих записях идентификаторов?Должно ли это быть сделано в клиентском скрипте, и нужно ли, чтобы в пакете была кнопка, связанная с клиентским скриптом, который выполняет создание записи, а затем перенаправляет в другой пакет, который отображает информацию о форме?Похоже, что должен быть более простой способ отображения ошибок на стороне клиента без необходимости перенаправления дважды.

Пример Suitelet:

define([ 'N/ui/serverWidget', 'N/record', 'N/cache'],
    function( serverWidget,  record, cache) {
        function onRequest(context) {
            var func = 'Suitelet';
            var request = context.request;
            if(request.method == 'GET'){
                try{
                    var form = serverWidget.createForm({
                        title: 'Add sample data'
                    });

                    var idField = form.addField({
                        id: 'custpage_sample_id',
                        type: serverWidget.FieldType.TEXT,
                        label: 'ID'
                    });

                    idField.isMandatory = true;

                    form.addSubmitButton({
                        label: 'Submit'
                    });

                    context.response.writePage(form);
                }
                catch(e){
                    log.error(func, JSON.stringify(e));
                }
            }
            else {
                try{
                    var id = request.parameters.custpage_id;

                    log.debug(func, id);

                    if(Id){
                        var existing = getExistingId(Id);
                        if(!existing){
                            var custID = createIdRecord(id);
                        } else {
                            throw 'ID already exists '+ id;
                        }
                    }

                    var form = serverWidget.createForm({
                        title: 'Form Submitted'
                    });

                    var displayField = form.addField({
                        id: 'custpage_my_display',
                        type: serverWidget.FieldType.LONGTEXT,
                        label: 'Display Data'
                    });
                    displayField.defaultValue = "ID: " + id;

                    context.response.writePage(form);
                }
                catch(e){
                    log.error(func, JSON.stringify(e));
                }
            }
        }

        return {
          onRequest: onRequest
        };
    });

1 Ответ

0 голосов
/ 15 февраля 2019

Вам не нужна другая кнопка, кроме кнопки «отправить».Но вам нужно связать свой пакет с клиентским скриптом:

form.clientScriptFileId = client_script_file_id;

Ваш клиентский скрипт не нужно развертывать, он просто нужен в картотеке.Когда пользователь нажимает кнопку «Отправить», на клиентском скрипте, связанном с пакетом, запускается событие saveRecord.

function saveRecord(context) {
//put your duplicate id logic validation here
  if(you want to proceed){
     return true;
  }else {
     alert('duplicate id'); // or display an hidden field with any error message
     return false;
  }
}
...