Netsuite — установите флажок на кнопке «Сохраненный поиск»

Здесь достигнут некоторый прогресс благодаря ответу Suitestar.

Удалось сделать набор, который выполняет поставленную задачу. Однако:

  1. Работает только при указании абсолютного идентификатора элемента в самом скрипте. Переменная rec_ID для вытягивания ID элемента из поиска не работает. Я получаю сообщение об ошибке «Отсутствует аргумент».

  2. Открывает пустое окно, а сохраненная страница поиска по умолчанию использует общий поиск элементов. Я просто хочу, чтобы во всплывающем окне было написано «Одобрено», а поиск оставался прежним.

  3. Как мне вытащить идентификатор поля из поиска?

URL-адрес пакета и код ниже:

<button onclick=window.open(/app/site/hosting/scriptlet.nl?script=602&deploy=1&rec_id=2958);>Подтвердить

/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/

define (['N/record'], function (record) {
    function onRequest(scriptContext) {
        
        var rec_Id=scriptContext.request.parameters.rec_Id; //getting parameter

        var itemRecObj= record.load({ type: record.Type.INVENTORY_ITEM, id: '2958', isDynamic:true });

        itemRecObj.setValue({ fieldId: 'custitem_aamac_custom_approved', value: true });

        itemRecObj.save();
    }

return {
    
    onRequest: onRequest
};
    
    });

Кнопка откроет новое окно с Suitelet, о котором вы можете прочитать в документации.

bknights 20.01.2023 17:58

Спасибо бк. Я предполагаю, что могу выполнить рабочий процесс из набора, используя рабочий процесс N/. Проблема в том, что у меня 96 таких флажков, и мне нужно добавить некоторые условные параметры. Я не возражаю против создания 96 действий в одном рабочем процессе, но мне не нравится создавать 96 рабочих процессов в зависимости от того, какой флажок я хочу установить. Также я предполагаю, что, поскольку идентификатор элемента находится в действии кнопки, рабочий процесс будет запускаться для этого элемента без необходимости ввода внутреннего идентификатора в сценарии запуска рабочего процесса?

TheIronKing 20.01.2023 18:34

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

bknights 20.01.2023 18:40

Я согласен. Но я новичок в написании сценариев. Я создал около 200 рабочих процессов. Я написал с полдюжины сценариев, и они очень простые. Не могли бы вы помочь мне с 1 частью информации. Возможно ли, чтобы Suitelet, вызываемый этой кнопкой, содержал достаточную функциональность, чтобы получить идентификатор элемента по нажатию кнопки, перейти к записи элемента и изменить флажок для элемента, а затем отобразить всплывающее окно с надписью «одобрено»? Мне понадобится Suitelet, чтобы выбрать, какое поле проверять, основываясь на некоторых условиях CASE WHEN в формуле самого сохраненного поиска.

TheIronKing 20.01.2023 18:53
5 дизайнов темных кнопок с использованием HTML и CSS
5 дизайнов темных кнопок с использованием HTML и CSS
Здесь представлены пять дизайнов темных кнопок с кодом с использованием HTML и CSS:
0
4
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете написать внутреннюю логику в скрипте Suitelet для установки флажка.

  • Загрузить запись с внутренним идентификатором элемента
  • Используйте setValue со значением "true" для флажка fieldID.
  • А затем сохраните запись.
  • разверните пакет в режиме выпуска, скопируйте внешний URL-адрес, поместите его в функцию кнопки onclick. как на скриншоте, который вы сделали.
  • передайте параметр, используя &rec_Id что-то вроде этого в последнем URL-адресе

https://tstdrv1911674.extforms.netsuite.com/app/site/hosting/scriptlet.nl?script=6030&deploy=1&compid=TSTDRV1911674&h=e3ac9c7644c25b4dded1&rec_Id=

и получить параметр в скрипте Suitelet, используя

var rec_Id=scriptContext.request.parameters.rec_Id; //получение параметра

var itemRecObj= Record.load({ тип: запись.Тип.INVENTORY_ITEM, идентификатор: rec_Id, isDynamic: правда });

itemRecObj.setValue({ fieldId: 'checkboxfieldId', значение: правда });

itemRecObj.save();

Спасибо Suitestar. Это заставило меня начать. Мне удалось заставить скрипт установить флажок, однако у меня все еще есть некоторые проблемы с извлечением идентификатора записи из поиска, и мне также нужно выяснить, как вставить идентификатор динамического поля. Выложил код выше.

TheIronKing 23.01.2023 11:43

Привет @TheIronKing, Вы уже использовали правильный код в последнем сообщении для идентификатора динамической записи. позвольте мне снова поделиться с вами '<button onclick = "window.open(/app/site/hosting/scriptlet.nl?script=5‌​737&deploy=1&compid=‌​TSTDRV1911674&h=f932‌​9046621d18caa232&rec‌​_Id=' || {internalid} || ');">одобрить</button>' Используйте это в сохраненном поиске и, пожалуйста, проголосуйте за мой ответ 1, чтобы он был полезен для всех.

SuiteStar 23.01.2023 15:13

@TheIronKing, дайте мне знать, если что-то еще.

SuiteStar 23.01.2023 15:17

Спасибо Suitestar. Я повысил оценку вашего ответа и отметил его как официальный ответ. Однако у меня сейчас другая проблема. Мне нужно различать, какой флажок установить. Но использование операторов If не работает должным образом. Я знаю, что вы уже помогли мне, но если бы вы могли выделить время, чтобы взглянуть на мой последний вопрос, я был бы очень признателен, ссылка здесь - stackoverflow.com/questions/75209311/…

TheIronKing 23.01.2023 15:27

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