NetSuite Suitescript 2.0 Как получить доступ к записям записей о пользовательских элементах? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть проблема, которую я пытаюсь решить окольным путем, так как простой способ не сработал.

Задача: Извлечь настраиваемые параметры элемента из позиции заказа на покупку (используя SuiteScript 2.0).

Частичное решение: В настоящее времяЯ извлекаю itemId из PO, используя

po.getCurrentSublistValue({ sublistId: 'item', fieldId: 'item' });

Затем загружаю элемент и извлекаю идентификаторы и метки опций элемента, используя

var optionIds = item.getValue({ fieldId: 'itemoptions' });
var optionLabels = item.getText({ fieldId: 'itemoptions' });

Для опций элемента, которые не являются List / Recordвведите (например, персонализация произвольной формы текста), затем я могу просмотреть параметры элемента и извлечь их текст из элемента заказа, используя следующий код.

for (var j = 0; j < optionIds.length; j++) {
    var option = po.getCurrentSublistText({
        sublistId: 'item',
        fieldId: optionIds[j].toLowerCase()
    });
    if (option !== null) {
        log.debug({title: 'option found', details: optionLabels[j] + ': ' + option});
    }
}

Проблема: Когдаопция элемента имеет тип List / Record, и getCurrentSublistText и getCurrentSublistValue возвращают внутренний идентификатор выбора списка.Например, если у меня есть опция настраиваемого элемента для цвета рубашки, и он использует настраиваемый список «Цвет» с красным внутренним идентификатором 2, то если в моем ПО есть элемент с красным цветом рубашки, метка параметра будет «Рубашка».Color ", но вместо" Red "option будет 2, внутренний идентификатор из списка Color.Я понятия не имею, почему getCurrentSublistText не работает для этого варианта использования, но я принял это, и я ищу обходной путь.

Я думал, что, поскольку опция элемента является записью в пользовательском интерфейсе (мое расширение для полевого обозревателя говорит, что оно имеет recordType:"itemoptioncustomfield"), я мог бы просто загрузить его, используя имеющийся у меня идентификатор опции, и если онаимеет fieldtype:"SELECT", я бы получил внутренний идентификатор для выбора списка / записи (fieldId: selectrecordtype), а затем использовал search.lookupFields, чтобы получить действительное значение опции элемента вместо внутреннего идентификатора.Единственная проблема в том, что я не могу найти способ загрузить (или выполнить поиск) опцию элемента.Тип записи, по-видимому, не существует в SuiteScript (я верю, что в Suite Talk он есть).Это возможная задача?Даже если мой обходной путь не может работать, есть ли другой лучший обходной путь, которого я не вижу?

Заранее спасибо, я в замешательстве.

Редактировать: Просто добавитьВ дальнейших попытках я нашел сегодня функцию Field.getSelectOptions(), которая выглядела действительно многообещающей, поскольку в ней были бы перечислены все опции выбора опции элемента и их значения, я думаю.Я протестировал его на некоторых других более простых полях в порядке, и он работал, однако, когда я попытался использовать getCurrentSublistField в поле опции элемента (так же, как я использовал getCurrentSublistValue и getCurrentSublistText, возвращенное поле было нулевым, поэтомуПохоже, это еще один тупик.

...