OData в 1С
Автоматический REST-интерфейс
Платформа 1С:Предприятие 8.3 может автоматически опубликовать REST-интерфейс OData к выбранным объектам конфигурации. Внешняя система читает и изменяет данные HTTP-запросами без написания отдельного HTTP-сервиса на каждый сценарий.
| OData | HTTP-сервис | |
|---|---|---|
| Настройка | Отметить объекты в публикации | Шаблоны URL + BSL |
| Контракт | Имена ресурсов по правилам платформы | Любой JSON/XML |
| Когда удобен | Витрины, BI, универсальный доступ | Узкий API «под интеграцию» |
Теория протокола OData — в статье энциклопедии про OData. Здесь — реализация на стороне 1С.
Публикация
- Опубликовать информационную базу на веб-сервере.
- В мастере публикации включить стандартный интерфейс OData.
- Указать, какие объекты конфигурации доступны через интерфейс.
Корень сервиса:
https://host/base/odata/standard.odata/
Проверка в браузере: откройте этот URL. Если интерфейс жив, но ни один объект не опубликован, придёт минимальный XML/atom-ответ с пустым workspace. После добавления объектов в публикации список ресурсов расширится.
Имена ресурсов
Идентификатор ресурса: ПрефиксИмяОбъектаСуффикс.
| Объект конфигурации | Префикс в URL |
|---|---|
| Справочник | Catalog |
| Документ | Document |
| Регистр сведений | InformationRegister |
| Регистр накопления | AccumulationRegister |
| Константа | Constant |
| План обмена | ExchangePlan |
| План видов характеристик | ChartOfCharacteristicTypes |
ИмяОбъекта — как в конфигураторе (например, Номенклатура). Пример:
GET .../odata/standard.odata/Catalog_Номенклатура?$format=json
Суффиксы:
_ИмяТабличнойЧасти— строки табличной части всех документов типа;_RecordSet/ поля набора записей регистра;- виртуальные таблицы регистра — функции вроде
SliceLast()(срез последних), с параметрами как в языке запросов.
Пример среза последних:
.../InformationRegister_ЦеныТоваров/SliceLast()
Параметры запроса
| Параметр | Назначение |
|---|---|
$format=json | Ответ в JSON (иначе часто atom-xml) |
$metadata | Описание модели интерфейса |
$filter | Условие отбора |
$select | Список полей |
Заголовок Accept: application/json тоже запрашивает JSON у многих клиентов.
$filter — примеры
| Операция | Ключ | Пример |
|---|---|---|
| Равно | eq | $filter=Description eq 'Товар А' |
| Не равно | ne | $filter=Code ne '00001' |
| Больше | gt | $filter=Цена gt 1000 |
| И | and | $filter=Цена gt 10 and Цена lt 100 |
| ИЛИ | or | $filter=... |
| Начинается с | startswith | $filter=startswith(Description, 'ООО') eq true |
Строковые литералы в фильтре — в одинарных кавычках.
$select
Catalog_Сотрудники?$format=json&$select=Description,Code
Для табличной части: ИмяТабличнойЧасти/ИмяПоля.
HTTP-методы и API 1С
| Операция | HTTP | Метод HTTPСоединение |
|---|---|---|
| Чтение | GET | Получить() |
| Создание | POST | ОтправитьДляОбработки() |
| Частичное изменение | PATCH | Изменить() |
| Полная замена | PUT | Записать() |
| Удаление | DELETE | Удалить() |
Клиентский код — 130.md. Тело POST/PATCH обычно JSON с полями сущности.
Обращение к одному элементу
Ссылка на элемент — GUID в скобках:
Catalog_Должности(guid'88d54406-36a1-11e9-8bb2-642737df2048')?$format=json
GUID берут из поля Ref в ответе списка или из базы 1С.
Типичные ошибки
Сначала убедитесь, что открывается корень .../odata/standard.odata/.
| Симптом | Код odata.error | Причина |
|---|---|---|
| «Тип сущности не найден» | 8 | Ошибка в имени объекта (CatalogДолжности вместо Catalog_Должности) |
| «Экземпляр сущности не найден» | 9 | Неверный GUID или объект удалён |
| «Error parsing $filter» | 14 | Опечатка в $filter (например, startwith вместо startswith) |
| Пустой workspace | — | OData включён, объекты не отмечены в публикации |
Тело ошибки JSON:
{
"odata.error": {
"code": "8",
"message": { "lang": "ru", "value": "..." }
}
}
Разбирайте КодСостояния HTTP и поле code внутри ответа.
Безопасность и производительность
- Ограничивайте состав опубликованных объектов — не открывайте всю конфигурацию без необходимости.
- Назначьте отдельного пользователя интеграции с минимальными ролями.
- Тяжёлые выборки без
$filterи$selectнагружают СУБД — проектируйте запросы так же, как запросы 1С. - Переиспользование сеансов интернет-сервисов ускоряет частые вызовы (отдельная тема фазы 3).
Связанные материалы
Проверка себя
- Как проверить, что OData опубликован, но объекты не выбраны?
- Как получить JSON вместо atom-xml?
- Какой URL у среза последних регистра сведений?
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Платформа 1С - архитектура среды исполнения, назначение и место в автоматизации бизнес-процессов. История 1С - развитие платформы, ключевые этапы роста и влияние на цифровизацию бизнеса и госсектора. Экосистема 1С - продукты платформы, инструменты разработки, внедрение и сопровождение корпоративных решений. Архитектура платформы 1С, объекты метаданных, регистры, модули и исполнение прикладного кода. Пошаговое создание учебной конфигурации: справочники, документ, регистры, проведение, подсистемы и роли. Синтаксис и пунктуация 1С - базовые правила записи кода, операторы и структура выражений. Типизация, набор правил определения типа данных значений языка. Управление потоком выполнения в 1С - последовательность операций, ветвления и контроль выполнения сценариев. Функции и процедуры 1С - различия, правила использования и организация переиспользуемой бизнес-логики. Объекты и классы 1С - модель метаданных, экземпляры объектов и работа с прикладными сущностями. Данные — это конкретные записи, созданные пользователями или автоматически системой в рамках определённых объектов. Каждая запись имеет уникальный идентификатор и соответствует описанию в метаданных. Обработка ошибок в 1С - перехват исключений, диагностика сбоев и устойчивые сценарии обработки.Платформа 1С
История 1С
Экосистема 1С
Архитектура и мета-объекты 1С
Конфигурирование — мини-склад
Синтаксис и пунктуация 1С
Переменные и типы данных 1С
Управление потоком выполнения 1С
Функции и процедуры 1С
Объекты и классы 1С
Работа с базами данных 1С
Обработка ошибок 1С