1С (OData)
OPORA подключается к 1С через стандартный REST/OData интерфейс. Работает с любой конфигурацией (УТ, ERP, Бухгалтерия, Розница, ЗУП, custom) — если в конфигурации включён OData service, OPORA умеет читать и записывать.
1. Включите OData в 1С
Section titled “1. Включите OData в 1С”На стороне вашего 1С-администратора:
- Открыть конфигуратор → «Администрирование» → «Публикация на веб-сервере»
- Галочки:
- «Публиковать стандартный интерфейс OData» ✓
- «Публиковать тонкий клиент» (опционально)
- Применить → сервер публикации (обычно Apache / IIS) перезапустится
- Убедитесь что
https://your-1c-server.ru/InfoBaseName/odata/standard.odata/отдаёт XML metadata (браузером)
2. Заведите пользователя для OPORA
Section titled “2. Заведите пользователя для OPORA”Рекомендуем отдельного пользователя 1С (не админ’а):
- Конфигуратор → «Администрирование» → «Пользователи» → «Добавить»
- Имя:
opora-integration - Пароль:
openssl rand -base64 24 - Роли: только нужные (например «Оператор продаж» если OPORA только создаёт документы реализации; полный админ-доступ не нужен)
- Сохранить
3. Сохраните в OPORA
Section titled “3. Сохраните в OPORA”Settings → Secrets:
onec-url: полный URL OData endpoint’а (https://your-1c-server.ru/ InfoBaseName/odata/standard.odata)onec-username:opora-integrationonec-password: пароль
4. Доступные ноды
Section titled “4. Доступные ноды”| Нода | Что делает |
|---|---|
onec.odata.list | GET коллекции сущностей с $filter / $select / $top / $skip / $orderby |
onec.odata.get | GET одной сущности по guid’у |
onec.odata.create | POST — создание |
onec.odata.update | PATCH — обновление по guid’у |
5. Пример: создать документ реализации
Section titled “5. Пример: создать документ реализации”yookassa.webhook.trigger (event: payment.succeeded) ↓data_table.rows.get table = "orders" filter = {payment_id: {{trigger.object.id}}} ↓onec.odata.create entity = "Document_РеализацияТоваровУслуг" data = { "Номер": "{{get.row.order_number}}", "Дата": "{{get.row.created_at}}", "Контрагент_Key": "{{get.row.customer_guid}}", "Организация_Key": "00000000-0000-0000-0000-000000000042", "СуммаДокумента": {{trigger.object.amount.value}} }Имена сущностей и полей зависят от вашей конфигурации 1С — смотрите
metadata (/$metadata endpoint) чтобы узнать точные имена.
Кириллица в именах — нормально, OPORA URL-encode’ит сам.
Имена полей в конфигурациях
Section titled “Имена полей в конфигурациях”УТ 11.5:
Document_РеализацияТоваровУслугCatalog_КонтрагентыCatalog_Номенклатура
ERP 2.x:
Document_ЗаказКлиентаDocument_РеализацияТоваровУслугCatalog_Партнеры
Бухгалтерия 3.0:
Document_РеализацияТоваровУслугDocument_СчетНаОплатуПокупателю
Полный список генерируется автоматически 1С’ом и виден в $metadata.
Filter syntax
Section titled “Filter syntax”OData-фильтры через $filter:
onec.odata.list entity = "Catalog_Контрагенты" filter = "НаименованиеПолное eq 'ООО Ромашка'" select = "Ref_Key,Наименование,ИНН" top = 10Операторы: eq, ne, gt, lt, ge, le, and, or,
startswith(Наименование, 'Ромашка'), contains(...).
Troubleshooting
Section titled “Troubleshooting”401 при вызове
Section titled “401 при вызове”- Пользователь / пароль не верен
- Или: в 1С пользователь залочен
Блокировать вход→ разблокировать в «Администрирование → Пользователи» - Или: OData не опубликован (вернитесь к § 1)
500 Internal Server Error
Section titled “500 Internal Server Error”- Чаще всего — имя сущности неверное (опечатка в кириллице).
Проверьте
$metadata - Для
create/update: проверьте обязательные поля конфигурации. Документ не может быть создан без, например,ОрганизацияиКонтрагент
Таймауты на больших выборках
Section titled “Таймауты на больших выборках”1С-сервер медленный, OPORA по умолчанию даёт 30 секунд. Для массовых
импортов используйте top + skip пагинацию и control.foreach
с малым concurrency.
«Не указан измерение регистра»
Section titled “«Не указан измерение регистра»”Проводимые документы часто требуют дополнительных реквизитов (например, склад). 1С вернёт это в теле ошибки — читайте внимательно.
Связанное
Section titled “Связанное”- МойСклад — альтернатива 1С для SaaS-учёта (гайд в следующей
итерации; пока
moysklad.customerorder.createнода работает аналогично — см. providers matrix) - Order-to-1C pipeline — cookbook-рецепт в подготовке; пока see «Refund coordinator» как reference, 1С-часть паттерна та же