Клиентский скрипт [Форма продукта] — Режим просмотра

Я хотел вывести на экран сообщение, когда поле, которое заполняет пользователь, уже зарегистрировано в другом продукте. Кто-нибудь может мне помочь? Под кодом:

Не могли бы вы добавить свой код? Я не уверен, понимаю ли я проблему, с которой вы столкнулись, но клиентский скрипт не может быть запущен в режиме просмотра записи. Вы не хотите, чтобы ваш скрипт срабатывал, когда вы редактируете продукт? это твоя проблема? Есть два разных режима: CREATE и EDIT. Вы можете запустить свой скрипт только в режиме CREATE, вы можете использовать эту функцию nlapiGetRecordId(); если он возвращает значение, вы редактируете продукт, и вам не нужно запускать оповещение, если нет, вы создаете продукт, и вы должны активировать оповещение.

Emerson Minero 12.02.2019 20:43

Я использовал метод saveRecord. Он работает для создания и копирования продукта. Теперь проблема в том, что при редактировании метод saveRecord также проверяется. Как заблокировать проверку при редактировании?

Adriano Reis 12.02.2019 23:52

Под кодом. Пожалуйста помогите.

Adriano Reis 12.02.2019 23:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

поместите следующий код в событие saveRecord:

if (!currentReocord.id){
  //put here all your logic for your validation
}

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

Это сработало! А вот если при редактировании элемента есть изменение в поле 'upccode'. Что я делаю? Могу ли я использовать событие fieldChanged?

Adriano Reis 13.02.2019 21:29

Добавьте в код этот фрагмент: if (currentRecord.id){ if (ean_existe){ return true; } }

Adriano Reis 13.02.2019 21:32

Это зависит от вас. Кажется, вы должны использовать событие fieldChange, и предложенная мной строка также должна работать. Пожалуйста, отметьте мое решение как принятое, так как оно решило ваш первоначальный вопрос :)

Emerson Minero 13.02.2019 22:01

Извините меня! Я проверил. Теперь мне нужно только настроить это: если в редакции товара есть изменение в поле EAN ('upccode') и значение такое же для другого заказного товара. Как отобразить оповещение? Это в событии saveRecord или в событии fieldChangeg? Ниже скорректированный код. Спасибо за помощь ...

Adriano Reis 14.02.2019 12:13

Вы можете сделать это в обоих, но я бы предпочел использовать fieldChange, чтобы увидеть предупреждение в режиме реального времени. (также в обоих, при создании и редактировании)

Emerson Minero 14.02.2019 15:22

Это сработало в событии saveRecord. Я обновляю код здесь, если эта тема кому-то полезна. Спасибо!

Adriano Reis 14.02.2019 18:46

С помощью моего друга Эмерсона Минеро я публикую код с решением. Я надеюсь, что это может быть полезно для друзей здесь. Спасибо!

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @author Adriano Barbosa
 * @since 2019.2
 */
define(['N/log', 'N/record', 'N/search', 'N/ui/dialog'], function(log, record, search, dialog) {
    function pageInit(context) {
        if ( context.mode === 'copy' || context.mode === 'create' ) {
            var currentRecord = context.currentRecord;
        }
    }

    function saveRecord(context) {
        var ean, item_id, ean_existe, codigo_item_sap;
        var currentRecord = context.currentRecord;

        item_id = currentRecord.getValue({ fieldId: 'itemid' });
        ean = currentRecord.getValue({ fieldId: 'upccode' });
        // Valida o EAN na cópia/criação do item
        if (!ean) {
            dialog.alert({ title: 'Alerta: EAN não informado', message: 'Informe o EAN para prosseguir cadastro.' });
            log.debug({ title: '[Cópia/Criação do Item] ' + 'Alerta: EAN não informado', details: 'Informe o EAN para prosseguir cadastro.' });
            return false; 
        } else {
            search.create({ type: "item",
                filters: [
                    [ "upccode", "is", ean ]
                ],
                columns: [
                    search.createColumn({ name: "internalid", label: "ID interna" }),
                    search.createColumn({ name: "upccode", label: "Código UPC" })
                ]
            }).run().each(function (result) {
                item_id = result.id;
                ean_existe = result.getValue({ name: 'upccode' });
                codigo_item_sap = record.load({ type: 'inventoryitem', id: item_id, isDynamic: true })
                                        .getValue({ fieldId: 'itemid' });
                return false;
            });
        }
        // Valida o EAN na edição do Item
        if (currentRecord.id) {
            ean = currentRecord.getValue({ fieldId: 'upccode' });
            if (!ean) {
                dialog.alert({ title: 'Alerta: EAN não informado', message: 'Informe o EAN para prosseguir cadastro.' });
                log.debug({ title: '[Edição do Item] ' + 'Alerta: EAN não informado', details: 'Informe o EAN para prosseguir cadastro.' }); 
                return false;
            } else {
                search.create({ type: "item",
                    filters: [
                        [ "upccode", "is", ean ]
                    ],
                    columns: [
                        search.createColumn({ name: "internalid", label: "ID interna" }),
                        search.createColumn({ name: "upccode", label: "Código UPC" })
                    ]
                }).run().each(function (result) {
                    item_id = result.id;
                    ean_existe = result.getValue({ name: 'upccode' });
                    codigo_item_sap = record.load({ type: 'inventoryitem', id: item_id, isDynamic: true })
                                            .getValue({ fieldId: 'itemid' });
                    return false;
                });
            }
            // [Edição do Item] - Se encontrado o EAN na base, impede o salvamento.
            if ((item_id != currentRecord.id) && codigo_item_sap) {
                dialog.alert({ title: 'Alerta: EAN ' + ean_existe + ' já cadastrado!', 
                    message: 'O item: ' + '"' + codigo_item_sap + '"' + ' já possui este mesmo EAN' + '. Informe outro EAN para prosseguir cadastro.' 
                });
                log.debug({ title: '[Edição do Item] ' + 'Alerta: EAN ' + ean_existe + ' já cadastrado!', 
                    details: 'Verifique o código do item: ' + '"' + codigo_item_sap + '".' 
                });
                return false;
            } else {
                return true;
            }
        } else if (ean_existe) { // [Cópia/Criação do Item] - Se encontrado o EAN na base, impede o salvamento.
            dialog.alert({ title: 'Alerta: EAN ' + ean_existe + ' já cadastrado!', 
                message: 'O item: ' + '"' + codigo_item_sap + '"' + ' já possui este mesmo EAN' + '. Informe outro EAN para prosseguir cadastro.' 
            });
            log.debug({ title: '[Cópia/Criação do Item] ' + 'Alerta: EAN ' + ean_existe + ' já cadastrado!', 
                details: 'Verifique o código do item: ' + '"' + codigo_item_sap + '".' 
            });
            return false;
        } else {
            log.debug({ title: 'Item cadastrado!', 
                details: '"Código Item SAP:" ' + currentRecord.getValue({ fieldId: 'itemid' }) + ', "EAN:" ' + currentRecord.getValue({ fieldId: 'upccode' }) 
            });
            return true;
        }
    }  
    return { pageInit: pageInit, saveRecord: saveRecord }
});

Другие вопросы по теме