При попытке интеграции различных информационных баз 1С с использованием протокола oData часто возникают сложности при работе с планами обмена. Основная проблема, с которой сталкиваются разработчики, заключается в некорректном выборе HTTP-метода при формировании запроса. Давайте разберем, как правильно организовать получение данных и какие подходы к обмену информацией существуют.
При обращении к ресурсам через браузер по умолчанию отправляется GET-запрос. Однако для работы с механизмом SelectChanges в 1С такой метод является недопустимым, так как операция получения изменений плана обмена подразумевает инициацию формирования пакета данных. Сервер 1С в ответ на GET-запрос закономерно возвращает ошибку о запрещенном HTTP-методе.
Для корректной работы необходимо использовать POST-запрос. Для отладки и формирования таких запросов настоятельно рекомендуем использовать специализированное программное обеспечение, такое как Postman или Poster. Эти инструменты позволяют гибко настраивать заголовки запроса, тело сообщения и выбирать нужный метод передачи данных.
Чтобы успешно получить список объектов, зарегистрированных в узле плана обмена, выполним следующие шаги:
Postman для отправки корректных POST-запросов.oData сервиса.Рабочий пример структуры запроса выглядит следующим образом:
buh2020/odata/standard.odata/SelectChanges?DataExchangePoint=
ExchangePlan_УТ_УправлениеТранспортом(guid'1dcb137a-d9ee-11ec-9418-000c295c4ac7')'
&MessageNo=0&$format=json
Разберем составляющие этого запроса:
SelectChanges — метод, вызывающий механизм выбора изменений.DataExchangePoint — параметр, указывающий на конкретный узел плана обмена (необходимо указать ваш тип плана и GUID узла).MessageNo — номер сообщения, который позволяет системе определить начальную точку отсчета для выгрузки изменений.$format=json — указание формата ответа, что значительно упрощает дальнейшую обработку данных в любой среде разработки.Использование JSON в качестве формата ответа позволяет получить все объекты, зарегистрированные в плане, с полным составом их реквизитов, что делает oData одним из наиболее удобных кроссплатформенных способов обмена без жесткой привязки к локальным папкам или сетевым ресурсам.
Если задача требует более глубокого контроля над процессом (например, автоматического снятия с регистрации после получения данных), стандартный oData может оказаться недостаточно гибким инструментом, так как он ориентирован в первую очередь на чтение данных, а не на управление циклом обмена.
В таких случаях рекомендуем рассмотреть создание собственных веб-сервисов внутри платформы 1С. Этот подход позволяет:
ВыбратьИзУзлаПланаОбмена для получения данных.СнятьРегистрациюОбъектовВУзлеПланаОбмена для очистки очереди изменений после успешной передачи.Хотя реализация собственных веб-сервисов требует написания кода на стороне обеих баз, такой метод является наиболее надежным и быстрым способом интеграции, особенно для конфигураций, где поддержка современных стандартов типа EnterpriseData ограничена или отсутствует.
При проектировании системы обмена всегда учитывайте следующие моменты:
EnterpriseData и Конвертации данных 3.0. Это позволит использовать стандартизированные XDTO-пакеты, которые содержат только данные, что делает обмен легковесным.Postman. Если запрос работает успешно там, вы сможете легко перенести логику в код вашей внешней обработки или интеграционного сервиса.Проанализировав описанные методы, вы сможете выбрать оптимальный вариант реализации, исходя из сложности вашей инфраструктуры и версии используемых конфигураций 1С.