8.х ОБМЕН Получение изменений справочника REST OData

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем gridmaniac, 27 май 2017.

  1. TopicStarter Overlay
    gridmaniac
    Offline

    gridmaniac

    Регистрация:
    27 май 2017
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Приветствую, коллеги.
    Появилась необходимость синхронизировать справочник Номенклатура с интернет-магазином.
    Решил пойти по пути публикации REST сервиса с возможностью взаимодействия по протоколу OData.
    В итоге сервис работает, запросы по типу
    http://localhost/Demo/odata/standard.odata/Catalog_Номенклатура?$format=json
    http://localhost/Demo//odata/standard.odata/Catalog_Контрагенты?$filter=Ref_Key eq guid'fa5a6033-3609-11e5-8af5-94de802c77e4'
    работают отлично.

    Справочник Номенклатура содержит более 40 000 наименований с фотографиями. Интеграция с прежним магазином осуществлялась по иным механизмам, но в общем и целом записи отправлялись порциями по 3 000, таким образом на сайте была актуальная информация.

    Узнал про возможность регистрировать изменения объектов с использованием планов обмена.
    Появилась идея периодически обращаться к REST сервису и запрашивать только изменения в справочнике номенклатура, таким образом избавиться от избыточности в отправке данных.

    Работаю с планами обмена впервые.
    Создал новый план обмена ОбменСВебСервисом.
    При создании указал Имя, Синоним и Комментарий.
    В состав добавил справочник Номенклатура и Контрагенты.
    На всех стоит галочка Авторегистрация: Разрешить.
    На вкладке Права добавил права на чтение и Просмотр для Пользователь и АдминистраторККМ.
    Далее закрыл окно и нажал кнопку Применить изменения конфигурации.
    Скриншоты:
    Скриншот 1
    Скриншот 2
    Скриншот 3

    Затем добавил новую запись в справочник Номенклатура.

    Теперь пытаюсь получить эти изменения через REST OData.
    Следуя документации:

    Сразу появился вопрос: что указывать в качестве GUID. Попробовал 00000000-0000-0000-0000-000000000000.
    Соответственно пытаюсь отправить POST запрос:

    URL: http://localhost/Demo/odata/standard.odata/SelectChanges?
    DataExchangePoint: 'http://localhost/Demo/odata/standar...м(guid'00000000-0000-0000-0000-000000000000')'
    MessageNo: 34

    В итоге сервер обрабатывает запрос длительное время и возвращает TIMEOUT. После этого другие запросы также не работают до перезагрузки Агента Сервера 1С

    Если не указывать один параметр, сервер пишет: Не указан обязательный параметр DataExchangePoint.
    Думаю, проблема скорее всего в том, что я не до конца понимаю как работает принцип сообщений обмена. К примеру, за что отвечает параметр GUID в данном случае. При использовании фильтрации через OData я использую GUID в качестве Ref_Key. Здесь же по идее используется весь справочник Номенклатура, и требуется получить только список изменений.

    Возможно я некорректно создал план обмена.
    Буду рад услышать любые советы и критику.