#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.