Здесь достигнут некоторый прогресс благодаря ответу Suitestar.
Удалось сделать набор, который выполняет поставленную задачу. Однако:
Работает только при указании абсолютного идентификатора элемента в самом скрипте. Переменная rec_ID для вытягивания ID элемента из поиска не работает. Я получаю сообщение об ошибке «Отсутствует аргумент».
Открывает пустое окно, а сохраненная страница поиска по умолчанию использует общий поиск элементов. Я просто хочу, чтобы во всплывающем окне было написано «Одобрено», а поиск оставался прежним.
Как мне вытащить идентификатор поля из поиска?
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
};
});
Спасибо бк. Я предполагаю, что могу выполнить рабочий процесс из набора, используя рабочий процесс N/. Проблема в том, что у меня 96 таких флажков, и мне нужно добавить некоторые условные параметры. Я не возражаю против создания 96 действий в одном рабочем процессе, но мне не нравится создавать 96 рабочих процессов в зависимости от того, какой флажок я хочу установить. Также я предполагаю, что, поскольку идентификатор элемента находится в действии кнопки, рабочий процесс будет запускаться для этого элемента без необходимости ввода внутреннего идентификатора в сценарии запуска рабочего процесса?
Эта кнопка не является кнопкой рабочего процесса. Принимающий набор должен передать идентификатор элемента инициирующему рабочему процессу. IMO к тому времени, когда вы ввели и отладили 96 действий рабочего процесса, вы могли бы написать сценарий 10 раз, и сценарий намного удобнее в обслуживании. -- проверяемый, доступный для поиска, легче модифицировать и тестировать, если одно из ваших условий изменится и т. д.
Я согласен. Но я новичок в написании сценариев. Я создал около 200 рабочих процессов. Я написал с полдюжины сценариев, и они очень простые. Не могли бы вы помочь мне с 1 частью информации. Возможно ли, чтобы Suitelet, вызываемый этой кнопкой, содержал достаточную функциональность, чтобы получить идентификатор элемента по нажатию кнопки, перейти к записи элемента и изменить флажок для элемента, а затем отобразить всплывающее окно с надписью «одобрено»? Мне понадобится Suitelet, чтобы выбрать, какое поле проверять, основываясь на некоторых условиях CASE WHEN в формуле самого сохраненного поиска.
Вы можете написать внутреннюю логику в скрипте Suitelet для установки флажка.
и получить параметр в скрипте 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, Вы уже использовали правильный код в последнем сообщении для идентификатора динамической записи. позвольте мне снова поделиться с вами '<button onclick = "window.open(/app/site/hosting/scriptlet.nl?script=5737&deploy=1&compid=TSTDRV1911674&h=f9329046621d18caa232&rec_Id=' || {internalid} || '
);">одобрить</button>' Используйте это в сохраненном поиске и, пожалуйста, проголосуйте за мой ответ 1, чтобы он был полезен для всех.
@TheIronKing, дайте мне знать, если что-то еще.
Спасибо Suitestar. Я повысил оценку вашего ответа и отметил его как официальный ответ. Однако у меня сейчас другая проблема. Мне нужно различать, какой флажок установить. Но использование операторов If не работает должным образом. Я знаю, что вы уже помогли мне, но если бы вы могли выделить время, чтобы взглянуть на мой последний вопрос, я был бы очень признателен, ссылка здесь - stackoverflow.com/questions/75209311/…
Кнопка откроет новое окно с Suitelet, о котором вы можете прочитать в документации.