Skip to content

OData (1С) ​

Тип OData (1С) читает данные из публикации 1С по протоколу OData — например, из http://сервер/база/odata/standard.odata. В мастере он лежит в отдельной группе API.

Как подключить ​

  1. Откройте Источники → Создать источник и выберите тип OData (1С) — он лежит в группе API.

  2. На шаге Подключение заполните поля:

    ПолеЧто указать
    Адрес сервисаПолный адрес публикации, например https://1c.company.ru/trade/odata/standard.odata
    Тип авторизации«Логин и пароль» либо «Без авторизации»
    Пользователь, ПарольУчётные данные пользователя 1С с правом на чтение — только для авторизации логином
  3. Нажмите Проверить подключение: платформа обратится к публикации и скажет, отвечает ли она. Затем сохраните источник.

Ошибка подключения приходит без разбора

Если адрес недоступен — опечатка в домене, публикация не поднята, нет сети, — проверка отвечает уведомлением «Внутренняя ошибка сервера». Причину оно не называет, поэтому проверяйте адрес сами: он должен открываться в браузере с той же машины, где работает платформа, и заканчиваться путём публикации (/odata/standard.odata). У источников по JDBC такая же ошибка разбирается и называется прямо — здесь этого пока нет.

Форма источника OData: адрес сервиса и авторизация

Полей «Хост», «Порт» и «Имя базы данных» у этого типа нет — адрес задаётся одной строкой.

То же запросом к API ​

Токен берётся входом — авторизация в API; $API — адрес установки с /api на конце.

bash
curl -s -X POST -H "Authorization: Bearer $T" -H "Content-Type: application/json" \
  -d '{
        "name": "1С: Управление торговлей",
        "type": "odata",
        "workspace_id": 5,
        "settings": {
          "endpoint": "https://1c.example.ru/trade/odata/standard.odata",
          "auth_type": "basic",
          "username": "odata_reader",
          "password": "…"
        }
      }' \
  "$API/data-source"

Обязательные поля тела — name, type и settings; workspace_id указывает, в каком пространстве появится источник (без него берётся текущее). Внутри settings обязателен только endpoint — без него запрос отвечает 422 и текстом «Поле обязательно для данного типа источника». Пара username и password нужна лишь при auth_type: basic; у auth_type: none их можно не передавать.

Параметры ​

ПараметрЧто указать
Адрес сервиса (endpoint)Полный адрес сервиса целиком, вместе с путём и портом
Тип авторизации (auth_type)basic — логин и пароль, none — без авторизации
Пользователь, ПарольУчётные данные пользователя 1С с правом на чтение

Адрес задаётся одной строкой, а не парой «хост — порт — база»: публикация 1С доступна по произвольному пути и часто за обратным прокси, разложить такой адрес на части нельзя.

Как читаются данные ​

Состав данных платформа берёт из $metadata публикации: каждый набор сущностей становится объектом, доступным в датасете. Значит в списке объектов окажется ровно то, что 1С отдаёт по этому адресу: если нужной сущности нет, её сначала публикуют на стороне 1С — в составе объектов публикации OData. Данные читаются страницами по 1000 записей, на один HTTP-запрос отводится 60 секунд, а разобранное описание сущностей держится в памяти 10 минут — значения задаются при развёртывании, см. Кеши и лимиты.

Как обновляются данные ​

На источнике OData строится обычный датасет, но режимы обновления у него не все:

Режим датасетаРаботает ли
Прямой запросДа: платформа читает публикацию при каждом открытии виджета. Годится, когда данные нужны свежими, а объёмы небольшие
Извлечение, полная выгрузкаДа: набор сущностей выгружается целиком в витрину платформы по расписанию
Извлечение, инкрементальная выгрузкаНет. Для OData платформа её не поддерживает, а в текущей версии любой запуск идёт полной выгрузкой, даже если стратегия выбрана — см. синхронизацию

У публикации 1С платформа не отслеживает, какие записи изменились, и каждый раз забирает набор целиком. На больших справочниках это стоит учитывать при выборе расписания — синхронизация и ETL.

Дальше источник ведёт себя как остальные: содержимое смотрится в карточке (Просмотр данных и схемы), а строится на нём датасет.

Что дальше ​