Устранение неполадок кода поиска полей на уровне строки SuiteScript 1.0 (список / запись) - PullRequest
0 голосов
/ 11 сентября 2018

Я - неопытный технический разработчик, работающий над моим первым SuiteScript с использованием SuiteScript 1.0.Я получаю ошибку SSS_MISSING_REQD_ARGUMENT, но я уверен, что в моем коде есть еще много.Цель сценария - заполнить поле отдела в отдельной позиции записи о расходах из объединенной записи.Конечный пользователь выберет проект в строке расходов, и сценарий должен найти отдел в записи проекта (настраиваемое поле) и добавить значение в собственное поле отдела.Код скопирован ниже.

function ProjectSegment ()
{
    var record = nlapiLoadRecord(nlapiGetRecordType(), nlapiGetRecordId());

    var recordID = nlapiGetRecordId(record);

    //internal ID of project record
    var project = nlapiGetField ('custcol_nra_expense_project');

    //load project record
    var precord = nlapiLoadRecord('job', project);

    //get department on project record (internal ID)
    var pdepartment = precord.GetFieldValue('custentity_nra_dept_project');

    //get project name from project record
    var projectName = precord.GetFieldText('entityid');

    //load existing search
    var search = nlapiLoadSearch('job','customsearch161');

    //add filter to include project name
    search.addFilter(new nlobjSearchFilter('entityid',null,'is',projectName));

    //run search
    var resultSet = search.runSearch();

    //get department line
    var departmentResult = new nlobjSearchColumn('custentity_nra_dept_project');

    //set value
    nlapiSetFieldTexts('job','department',1,departmentResult)

    //record.commitLineItem('department');
    nlapiSubmitRecord(record, true);
}

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Правильный ответ Правит Кумара относительно отсутствующего обязательного аргумента, но есть много других проблем со сценарием, как вы и догадались.

Примечания:

  • getFieldValue иМетоды getFieldText для nlobjRecord не пишутся с заглавной буквы.
  • По соображениям производительности вы можете / должны использовать поиск, чтобы получить нужные вам значения из записи о работе.Загрузка записи только для получения значений поля является расточительной, если только вы не хотите изменить запись.
  • Ваш поисковый фильтр, вероятно, должен основываться на значении (не тексте) entityid в заданиизапись.
  • Ваш требуемый столбец поиска, вероятно, недействителен (я не думаю, что поле записи может быть в записи о работе).
  • Получение результата поиска неверно.

Вместо этого вы хотите что-то вроде этого:

var result = resultSet.getResults(0, 1);
if (result) {
    var department = result.getValue('custentity_nra_dept_project');
    // etc.
}

Все это говорит, однако, из вашего описания, я не думаю, что вам все равно нужен поиск.Если у вас есть pdepartment (опять же, используя precord.getFieldValue), я думаю, все, что вам нужно, это:

record.setFieldValue('department', pdepartment);

Или, если вы устанавливаете отдел линейного уровня, он будет другим.

Что это за сценарий?Я хотел бы дать больше рекомендаций, но это зависит от того, что происходит.

0 голосов
/ 12 сентября 2018

// внутренний идентификатор записи проекта var project = nlapiGetFieldValue ('custcol_nra_expense_project');

...