АвтопилотЛабстудия автоматизацииОбсудить задачу
Навигация по базе знаний

База знаний · CRM, 1С и банки

Как связать 1С и n8n через OData

Как подключить 1С к n8n через стандартный интерфейс OData: публикация базы, отдельный пользователь, запросы к документам и справочникам, облачная 1С.

Опубликовано 5 мин чтения

Стандартный интерфейс OData отдаёт данные 1С по HTTP в формате JSON. Дорабатывать конфигурацию для этого не нужно. Ниже как его включить и забирать в n8n документы и справочники.

Что понадобится

  • 1С:Предприятие 8.3. Стандартный интерфейс OData появился в версии 8.3.5.
  • Веб-сервер Apache или IIS с модулем расширения веб-сервера 1С. Либо облачная 1С:Фреш, там публикация уже сделана.
  • Сетевой доступ от сервера n8n к адресу публикации по HTTPS.
  • Полные права в базе 1С для настройки.

Шаг 1. Опубликовать базу на веб-сервере

В Конфигураторе откройте Администрирование → Публикация на веб-сервере. Укажите имя публикации латиницей, веб-сервер и каталог, отметьте публикацию стандартного интерфейса OData и нажмите Опубликовать. Порядок действий для вашей версии платформы есть в документации 1С.

Если сервер 1С стоит в офисе, не открывайте публикацию всему интернету. Безопаснее связать сервер n8n и офис через VPN или разрешить доступ только с IP-адреса сервера n8n.

Шаг 2. Включить OData и создать пользователя

В типовых конфигурациях на БСП откройте Администрирование → Синхронизация данных → Настройки стандартного интерфейса OData. В некоторых программах раздел называется Администрирование и НСИ или Настройки. Настройка доступна пользователю с полными правами.

  1. На вкладке Авторизация создайте отдельного пользователя с логином и паролем. Учётную запись администратора для интеграции не используйте.
  2. На вкладке Состав отметьте только нужные объекты, например документ «Реализация товаров и услуг» и справочник «Контрагенты». Планы обмена не включайте.
  3. Нажмите Записать и закрыть.

Для доступа по OData пользователю нужна роль УдаленныйДоступOData или полные права. Какие данные он увидит, определяют его роли в 1С.

В нетиповой конфигурации состав задаёт программист методом УстановитьСоставСтандартногоИнтерфейсаOData().

Шаг 3. Проверить адрес

Адрес интерфейса строится так:

https://СЕРВЕР/ИМЯ_ПУБЛИКАЦИИ/odata/standard.odata/

По адресу .../odata/standard.odata/$metadata 1С отдаёт описание всех доступных объектов и полей. Имена объектов начинаются с префикса типа: Catalog_ для справочников, Document_ для документов, InformationRegister_ и AccumulationRegister_ для регистров. Дальше идёт имя объекта из конфигурации, например Catalog_Контрагенты.

Шаг 4. Настроить запрос в n8n

Создайте доступ типа Basic Auth с логином и паролем пользователя из шага 2. Узел HTTP Request:

  • Method: GET
  • URL: https://1c.example.ru/buh/odata/standard.odata/Catalog_Контрагенты
  • Authentication: Generic Credential Type → Basic Auth
  • Send Query Parameters:
    • $format = json
    • $select = Ref_Key,Description,ИНН,КПП
    • $filter = DeletionMark eq false
    • $top = 100

Без $format=json 1С отвечает в XML. Записи приходят в массиве value. Разложите его узлом Split Out. Параметры удобнее задавать полями Send Query Parameters: n8n сам закодирует пробелы и кавычки.

Имена реквизитов зависят от конфигурации. Примеры в статье даны для 1С:Бухгалтерии 3.0. Сверяйте имена по $metadata своей базы.

Шаг 5. Читать документы за период

Проведённые реализации за вчера и сегодня с названием контрагента:

Document_РеализацияТоваровУслуг
  ?$format=json
  &$filter=Date ge datetime'2026-10-08T00:00:00' and Posted eq true and DeletionMark eq false
  &$select=Ref_Key,Number,Date,СуммаДокумента,Контрагент/Description
  &$expand=Контрагент
  &$orderby=Date

Даты в фильтре пишутся как datetime'...', ссылки как guid'...'. В n8n дату удобно собрать выражением:

Date ge datetime'{{ $now.minus({ days: 1 }).startOf('day').toFormat("yyyy-MM-dd'T'HH:mm:ss") }}' and Posted eq true

Другие полезные запросы:

  • один объект по ссылке: Catalog_Контрагенты(guid'...');
  • отбор по ссылке на контрагента: $filter=Контрагент_Key eq guid'...';
  • табличная часть документа: Document_РеализацияТоваровУслуг(guid'...')/Товары;
  • постраничная выборка: $top=500 и $skip со смещением. В пагинации n8n это параметр $skip = {{ $pageCount * 500 }} и условие окончания {{ $response.body.value.length === 0 }}.

Если пользователю настроены ограничения доступа на уровне записей, добавьте параметр allowedOnly=true. Без него запрос может завершиться ошибкой.

Шаг 6. Запускать по расписанию

Каждый запрос OData нагружает сервер 1С и СУБД. Не опрашивайте базу каждую минуту. Для отчётов хватает Schedule Trigger раз в час или раз в сутки. Результат сохраняйте в свою базу, например PostgreSQL, и стройте по ней отчёты. Как это сделать, описано в статье про дашборд в DataLens.

OData фильтрует по дате документа. Изменения задним числом в старых документах такой фильтр не увидит. Для точной синхронизации изменений нужен план обмена или HTTP-сервис.

Альтернатива: HTTP-сервисы

OData отдаёт справочники, документы и регистры. Отчёты, пользователей и журнал регистрации через него не получить. Если нужна выборка со своей логикой, например остатки с расчётом или готовая сверка, программист 1С делает HTTP-сервис. Его можно добавить в расширение конфигурации, не меняя типовую. Адрес выглядит так:

https://СЕРВЕР/ИМЯ_ПУБЛИКАЦИИ/hs/КОРНЕВОЙ_URL/МЕТОД

HTTP-сервис отдаёт ровно те данные, которые нужны сценарию. Зато его нужно разрабатывать и обновлять вместе с конфигурацией.

Если у базы нет доступа снаружи и опубликовать её нельзя, остаётся выгрузка в файл или программный робот. Плюсы и минусы разобраны в статье RPA или API.

Облачная 1С

1С:Фреш. По документации сервиса все приложения опубликованы с поддержкой OData. Включите доступ в приложении: Администрирование → Синхронизация данных → Настройки стандартного интерфейса OData, создайте служебного пользователя и выберите состав. Адрес интерфейса равен адресу приложения из браузера плюс /odata/standard.odata/, например https://1cfresh.com/a/sbm/12345/odata/standard.odata/. Авторизация Basic. В 1С:Фреш удаление через OData физическое, без пометки на удаление. Заголовок 1C_OData-DataLoadMode сервис не поддерживает.

1С:Готовое рабочее место и аренда 1С у партнёров. Официального описания доступа по OData для этих сервисов мы не нашли. Возможность веб-публикации уточните у поддержки вашего сервиса.

Частые ошибки

  • 401. Неверный логин или пароль, у пользователя нет роли УдаленныйДоступOData, или включены ограничения на уровне записей без allowedOnly=true.
  • Пустой value. Объект не отмечен на вкладке «Состав» или у пользователя нет прав на него. Описание в $metadata при этом может быть.
  • Ответ в XML. Не указан $format=json.
  • Ошибка в $filter. Дата без datetime'...', ссылка без guid'...' или опечатка в имени реквизита.
  • Сценарий молча перестал получать данные. Настройте уведомления об ошибках n8n, чтобы узнавать о сбоях сразу.

Частые вопросы

Нужен ли программист 1С, чтобы включить OData?

В типовых конфигурациях на БСП обычно нет, состав объектов настраивается в интерфейсе программы. Публикацию на веб-сервере делает администратор сервера 1С. Программист нужен для нетиповой конфигурации или своего HTTP-сервиса.

Можно ли через OData записывать данные в 1С?

Да, интерфейс умеет создавать, изменять и удалять объекты и проводить документы. Начинайте с чтения. Ошибка записи в учётную базу обходится дороже ошибки чтения.

Работает ли OData в 1С:Фреш?

Да. По документации сервиса все приложения в 1С:Фреш опубликованы с поддержкой OData. Нужно включить доступ и выбрать состав объектов в самом приложении.

Готовые модули по теме