Как получить идентификатор удаленных записей в Netsuite с помощью Suitescript 2.0?

#netsuite #suitescript2.0 #restlet-2.0

#netsuite #suitescript2.0 #restlet-2.0

Вопрос:

Я мог бы получить удаленные записи из Netsuite, используя приведенный ниже скрипт. Но я не смог получить идентификатор.

 var customSearch = search.create({
     type: "deletedrecord",
     columns: ["context", "deletedby", "deleteddate", "externalid", "name"],
     filters: [
         ["recordtype", "is", "customer"]
     ]
});
var resultSet = customSearch.run().getRange({
    start: 0,
    end: 5
});
  

Как я могу получить уникальный идентификатор удаленных записей из Netsuite с помощью Suitescript 2.0?

Комментарии:

1. В наши дни проще всего создать сохраненный поиск в NetSuite, а затем использовать плагин для браузера, чтобы преобразовать его в код.

2. Похоже, что он недоступен через сохраненные поисковые запросы, странно, потому что он доступен через SOAP-вызовы SuiteTalk.

Ответ №1:

Эта информация недоступна при внутреннем поиске.

Вы можете получить это несколькими разными способами.

Он доступен в SuiteTalk с помощью операции getDeleted

Он доступен через внешний запрос к базе данных с использованием SuiteConnect (ODBC, JDBC или ADO.net )

Если вы можете начать с этого момента, простой способ взлома заключается в следующем:

создайте сценарий события после отправки пользователем, который запускается при создании записи. Если запись не имеет внешнего идентификатора, введите внутренний идентификатор netsuite с пространством имен в это поле. Я обнаружил, что обычно хорошей идеей является префикс ваших внешних идентификаторов с системой происхождения.

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

Вы также можете довольно легко создать свой собственный и создать сценарий события после отправки пользователем, который заполняет пользовательскую запись типом и внутренним идентификатором удаленной записи. Обычно я так и поступаю. Особенно, если вы управляете другими suitescripts или рабочими процессами в своей учетной записи Netsuite на основе данных удаления

Наконец, хотя я не делал этого годами, вполне возможно запустить запрос SuiteTalk из SuiteScript. Вам просто нужно сохранить учетные данные (не в открытом виде) и создать соответствующее SOAP-сообщение.

Ответ №2:

Идентификатор ответа Suite: 69458 предполагает, что будет работать следующее:

 var deletedRecords = search.create({
    type: "deletedrecord",
    filters:[
        ["deleteddate","within","today"]
    ],
    columns:[
        search.createColumn({name: "externalid"}),
        search.createColumn({name: "deleteddate"}),
        search.createColumn({name: "deletedby"}),
        search.createColumn({name: "context"}),
        search.createColumn({name: "name"})
    ]
});

var searchResultCount = deletedRecords.runPaged().count;
log.debug("deletedRecords result count",searchResultCount);

deletedRecords.run().each(function(result){
    // .run().each has a limit of 4,000 results
    return true;
});
  

Однако в браузере записей 2020.2 доступен только «externalid». Иногда внешние и внутренние идентификаторы в моей системе совпадают; не уверен в вашей конкретной настройке для NetSuite.