Вопрос

Проблема с созданием объекта по протоколу OData

Пытаюсь создать объект с помощью протокола 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 объект не появляется!

При попытке найти объект по ключевым полям так же ничего не находится.

В чём может быть проблема???

Нравится

4 комментария

Здравствуйте! Возможно у Вас нет прав на данную запись. Что бы наверняка отобразилась необходимо просматривать под пользователем который входит в роль системные администраторы.

Права уже полнее некуда. Попробовал через фидлер делать запрос. Та же история. Сообщает об успешности создания, даже даёт ссылка на переход к новому элементу. Но после перехода по ссылке

<АдресБазы>/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 на вставку в эту таблицу. Либо запись на мгновение вставляется, но потом удаляется логикой БП по сигналу вставки или по таймеру.

Кроме фиддлера, если есть возможность, посмотрите профайлером запросы в базу.

В других справочниках создание объектов проходит отлично, а именно в справочник Payments не хочет добавлять. Никаких тригеров и бизнес логики, которая бы чтото удаляля и правила не нашел. В итоге просто создал новый юзерский справочник для ввода оплат.

Показать все комментарии