Всем привет!
Пытаюсь обновить номер документа работая через 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-запросы в сторону сервера, есть ли на них ответы оттуда или сообщения об ошибках.