#java #netsuite #suitetalk
Вопрос:
Мы столкнулись с проблемой обновления заказа на продажу NetSuite (в частности, мы обновляем пользовательское поле), но отскакиваем от некоторых полей, доступных только для чтения, в которые мы даже явно не записываем в нашем коде.
Мы получаем заказ, обновляем пользовательское поле, а затем вызываем WriteResponse rc = this.nsPort.update(order);
, где order
находится экземпляр SalesOrder
pulled by internalID
и nsPort
является экземпляром NetSuitePortType
. Вызов update()
завершается ошибкой с исключением:
java.lang.Exception: You do not have permissions to set a value for element subtotal
due to one of the following reasons: 1) The field is read-only; 2) An associated feature
is disabled; 3) The field is available either when a record is created or updated, but
not in both cases.
Какое поле доступно только для чтения, здесь не имеет значения, имеет значение только то, что мы (непреднамеренно) отправляем обратно обновление, включающее поля, доступные только для чтения.
Мне кажется, что в идеале мы отправили бы обновление только в то пользовательское поле, которое нас интересует.
Есть ли какой-либо способ извлечь запись a из NetSuite, а затем обновить только определенные поля? Или есть способ сообщить SuiteTalk, чтобы он просто обновлял определенные поля при звонке update()
?
Ответ №1:
Если вы просто хотите обновить определенные поля, отправляйте только те поля, которые вы хотите обновить вместе с internalId
. Например, для обновления только заметки и пользовательского поля в заказе на продажу используйте (в python):
sales_order = soap.sales.SalesOrder(
internalId=12,
memo='I updated the memo, but I did not shoot the deputy',
customFieldList=soap.core.CustomFieldList(customField=[
soap.core.CustomString(scriptId='custbody_memo', value='I also did not shoot the deputy'),
])
)
soap.update(sales_order)
Это приведет к созданию xml-файла , включающего только поле internalId
memo
пользовательской памятки тела. Netsuite обновит только те поля, которые включены в сообщение soap.
Комментарии:
1. Ha! Ты меня опередил. У нас был совет от партнера NetSuite, как это сделать, и он сработал. Я просто зашел, чтобы ответить на свой собственный вопрос, и увидел ваш ответ.