Всем привет!
Пытаюсь обновить номер документа работая через oData.
var context = new BPMonline(new Uri(AUTHSERVICE_URI));
context.Credentials = new NetworkCredential("userName", "userPassword");
var response = context.DocumentCollection.ExecuteAsync().Result;
var doc = response.Item2.First();
doc.Number = "newValue";
context.UpdateObject(doc);
var resp = context.SaveChangesAsync(SaveChangesOptions.BatchWithIndependentOperations).Result;
Выполнение кода ошибок не дает. Однако, обновление не происходит.
Что не так?
Нравится
Михаил, в примере в академии код не совсем такой, как Ваш, там используется не SaveChangesAsync, а просто SaveChanges. Вам нужно именно асинхронно?
public static void UpdateCreatioEntityByOdatetWcfExample() { // Создание контекста приложения Creatio. var context = new Creatio(serverUri); // Определение метода, который добавляет аутентификационные cookie при создании нового запроса. context.SendingRequest += new EventHandler<SendingRequestEventArgs>(OnSendingRequestCookie); // Из колллекции контактов выбирается тот, по которому будет изменяться информация. var updateContact = context.ContactCollection.Where(c => c.Name.Contains("Test")).First(); // Изменение свойств выбранного контакта. updateContact.Notes = "New updated description for this contact."; updateContact.Phone = "123456789"; // Сохранение изменений в модели данных сервиса. context.UpdateObject(updateContact); // Сохранение изменений данных в Creatio одним запросом. var responces = context.SaveChanges(SaveChangesOptions.Batch); }
Плюс смущает не такая аутентификация у Вас, как в этом примере:
static void OnSendingRequestCookie(object sender, SendingRequestEventArgs e) { // Вызов метода класса LoginClass, реализующего аутентификацию переданного в параметрах метода пользователя. LoginClass.TryLogin("CreatioUserName", "CreatioUserPassword"); var req = e.Request as HttpWebRequest; // Добавление полученных аутентификационных cookie в запрос на получение данных. req.CookieContainer = LoginClass.AuthCookie; e.Request = req; }
Это сделано, поскольку логин и пароль передаются в отдельный сервис, который затем выдаёт куки, которые в дальнейшем используем при следующих запросах.
Чтобы выяснить, дело в этих отличиях или чём-то другом, попробуйте, работают ли стандартные примеры.
Также проверьте в Fiddler, идут ли при выполнении этих строк в программе нужные HTTP-запросы в сторону сервера, есть ли на них ответы оттуда или сообщения об ошибках.