Пытаюсь создать объект с помощью протокола OData и метода POST.
HTTP запрос выглядит так:
<АдресБазы>/0/ServiceModel/EntityDataService.svc/PaymentsCollection/
Использую следующий XML в теле запроса:
<?xml version="1.0" encoding="utf-8"?>
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:georss="http://www.georss.org/georss"
xmlns:gml="http://www.opengis.net/gml"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xml:base="https://dev-maksimedia.bpmonline.com/0/ServiceModel/EntityDataService.s…">
0000-000001
2019-06-11T00:00:00
110636.25
Кафе-кондитерская "Зефир"
681c7f54-2a15-4e6e-8888-249ce691dcf6
2019-06-11T00:00:00
2019-06-11T00:00:00
410006e1-ca4e-4502-a9ec-e54d922d2c00
410006e1-ca4e-4502-a9ec-e54d922d2c00
5fb76920-53e6-df11-971b-001d60e938c6
0
0
false
false
34917119-1e98-11e6-a31d-14dae9b19a48
HTTP запрос возвращает код 201 - объект создан. И даже возвращает XML с описанием созданного объекта, где даже id присвоен:
<?xml version="1.0" encoding="UTF-8"?>
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xml:base="<Здесь адрес базы>/0/ServiceModel/EntityDataService.svc/">
https://dev-maksimedia.bpmonline.com/0/ServiceModel/EntityDataService.s…
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
title="Payments"
href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')"/>
type="application/atom+xml;type=entry"
title="CreatedBy"
href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/CreatedBy"/>
type="application/atom+xml;type=entry"
title="ModifiedBy"
href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/ModifiedBy"/>
type="application/atom+xml;type=entry"
title="Currency"
href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/Currency"/>
type="application/atom+xml;type=entry"
title="UsrLookupKontragentOplata"
href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/UsrLookupKontragentOplata"/>
type="application/atom+xml;type=entry"
title="UsrLookupOrderPP"
href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/UsrLookupOrderPP"/>
type="application/atom+xml;type=entry"
title="UsrTypeOperation"
href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/UsrTypeOperation"/>
type="application/atom+xml;type=feed"
title="InvoicePaymentsCollectionByPayment"
href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/InvoicePaymentsCollectionByPayment"/>
type="application/atom+xml;type=feed"
title="PaymentsFileCollectionByPayments"
href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/PaymentsFileCollectionByPayments"/>
type="application/atom+xml;type=feed"
title="PaymentsInFolderCollectionByPayments"
href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/PaymentsInFolderCollectionByPayments"/>
type="application/atom+xml;type=feed"
title="PaymentsInTagCollectionByEntity"
href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/PaymentsInTagCollectionByEntity"/>
2019-06-20T10:21:49Z
Id m:type="Edm.Guid">6952eb12-ca22-4014-8376-cad0981dd21e
0000-000001
2019-06-11T02:00:00
410006e1-ca4e-4502-a9ec-e54d922d2c00
2019-06-11T02:00:00
410006e1-ca4e-4502-a9ec-e54d922d2c00
0
5fb76920-53e6-df11-971b-001d60e938c6
2019-06-11T02:00:00
110636.25
0
0
Кафе-кондитерская "Зефир"
00000000-0000-0000-0000-000000000000
00000000-0000-0000-0000-000000000000
false
false
681c7f54-2a15-4e6e-8888-249ce691dcf6
34917119-1e98-11e6-a31d-14dae9b19a48
НО!!! В BPM'online объект не появляется!
При попытке найти объект по ключевым полям так же ничего не находится.
В чём может быть проблема???
Нравится
Здравствуйте! Возможно у Вас нет прав на данную запись. Что бы наверняка отобразилась необходимо просматривать под пользователем который входит в роль системные администраторы.
Права уже полнее некуда. Попробовал через фидлер делать запрос. Та же история. Сообщает об успешности создания, даже даёт ссылка на переход к новому элементу. Но после перехода по ссылке
<АдресБазы>/0/ServiceModel/EntityDataService.svc/PaymentsCollection(guid'a1e115fc-70f6-414e-a506-e535dba00fba')
выдает:
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" class=" FB_FW_ext Bco">
<code>4</code>
<message xml:lang="">
Resource not found for the segment 'PaymentsCollection'.
</message>
<innererror>
<message>
Resource not found for the segment 'PaymentsCollection'.
</message>
<type>System.Data.Services.DataServiceException</type>
<stacktrace>
at System.Data.Services.Providers.DataServiceExecutionProviderWrapper.GetSingleResultFromRequest(SegmentInfo segmentInfo) at System.Data.Services.DataService`1.CompareETagAndWriteResponse(RequestDescription description, IDataService dataService, IODataResponseMessage responseMessage) at System.Data.Services.DataService`1.HandleRequest()
</stacktrace>
</innererror>
</error>
Проблема по прежнему не решена.
Скорее всего, дело в неверных namespace в XML-запросе. В будущих версиях доработают ответ сервера, а сейчас рекомендуется использовать корректные namespace. Пример верного запроса можно увидеть в статье в академии.
А если на уровне объекта вставка происходит, а реально в базе записи не появилось, дело может быть в какой-то встроенной в БП объекта логике на Saving, либо в базе на триггере instead of insert на вставку в эту таблицу. Либо запись на мгновение вставляется, но потом удаляется логикой БП по сигналу вставки или по таймеру.
Кроме фиддлера, если есть возможность, посмотрите профайлером запросы в базу.