Перезагрузка подсписка в SuiteScript 2.0 - PullRequest
0 голосов
/ 17 мая 2019

Я надеюсь, что кто-то может помочь. Я недавно написал проект SuiteScript 2.0. Основной пакет отображает информацию о транзакции / клиенте в подсписке, который имеет SublistType типа LIST. Прямо сейчас мы отображаем 750 записей в списке за один раз, но потенциально могут быть сотни или даже тысячи дополнительных записей, поэтому пользователи хотят иметь кнопки «Далее» и «Назад», которые позволят им переходить на следующую страницу Результаты.

Проблема в том, что я не могу обновить этот список на всю жизнь. Поля в подсписке - это все текстовые поля, кроме одного флажка. Внутри сценария клиента, я пробовал вещи, похожие на код ниже. (Я удалил все, кроме одного из вызовов setCurrentSublistValue, чтобы сократить код):

var currentRec = currentRecord.get();

currentRec.selectLine({
    sublistId: 'custpage_studstatement',
    line: 0
});

currentRec.setCurrentSublistValue({
    sublistId: 'custpage_studstatement',
    fieldId: 'custpage_show',
    value: false
});

currentRec.commitLine({sublistId: 'custpage_studstatement'});

Он будет прокручивать все элементы списка, но ТОЛЬКО флажок обновляется. Ни одно из текстовых полей не изменяется, и никакие исключения не выбрасываются.

Если я изменю подсписок на тип EDITOR, я могу обновить все поля в строке без проблем. Это в основном ведет себя так, как я хочу. Кроме того, если я изменю FieldDisplayType в любом из текстовых полей, я могу затем обновить эти отдельные поля, но ни один из этих параметров не является приемлемым. Мы не хотим, чтобы пользователи могли редактировать эти поля / строки подобным образом. Подсписок LIST - это тот, который нам нужен, но я начинаю думать, что вы не можете обновить подсписки LIST из клиентского скрипта, даже если в документах указано, что это возможно. (хотя это не окончательно. Документы немного отрывочны)

Так что я думаю, что я в основном просто ищу ответ высокого уровня, потому что я не уверен, что я даже подхожу к этому правильно. Если у вас есть настраиваемый подсписок, представляющий собой просто СПИСОК, как бы вы добавили возможность пролистывать к следующему набору результатов? Следует ли обновлять этот список в клиентском скрипте? Если так, то как? Или это должно быть в люксе? И если да, то как? (Я также пробовал разные вещи в пакете, но я опущу это, чтобы это больше не получалось) Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Невозможно обновить подсписок в пакете с помощью Client Script и с подсписком типа LIST.

Вы можете создать кнопки Next и Previous, и, щелкнув по этой кнопке, вы снова можете нажать URL-адрес пакета из ClientScript и передать параметр pagenumber и отобразить набор данных подсписка в прямом и обратном направлении в зависимости от значения. pagenumber.

Например: - если вы отображаете 750 страниц одновременно, то при первом нажатии Next ваш параметр pagenumber будет равен 2, и вы увидите следующие 750 записей на странице.

0 голосов
/ 17 мая 2019

Я делаю несколько предположений здесь: Ваш суллет создает пользовательскую страницу - у него есть подсписок. Подсписок является формой подсписка. и внутри это поля, sublist.addfields.

Что вы можете сделать, это использовать sublist.setSublistValue, и он может заполнить весь подсписок.

Теперь, это зависит от того, как вы получаете значения вашего подсписка - у вас могут быть дополнительные поля в теле - bodys определит фильтр, который фильтрует этот поиск. Это значительно уменьшит результаты, показанные на странице, чтобы достичь желаемого результата.

Вы действительно можете иметь следующую и предыдущую страницу, для которой у вас есть поисковый объект, и кнопка «Следующая страница / предыдущая страница» повлияет на вашу функцию results.getRange () - вместо, например, getRange ({start: 0 end: 1000}) быть getRange ({начало: 1000 конец: 2000}) больше и дальше. (Это не единственный способ, но как я себе это представляю)

В любом случае, как вы получите свой набор данных - search.create будет в вашем пакете, getRange будет в вашем пакете. Как вы установите SublistValue будет в вашем пакете. Как вы создадите свои кнопки, будет описано в пакете.

Но функция, которую запускает кнопка, будет в вашем клиентском скрипте, загруженном через form.clientScriptModulePath = './xxx.js'; Что-то вроде того. Этот клиентский сценарий может запускать сценарии с помощью url.resolveScript и инициировать добавление параметров в пакет. Передача некоторого параметра, чтобы указать, какую «страницу» загрузить (первый набор результатов .. второй набор… и т. Д.)

Надеюсь, это укажет вам правильное направление!

...