Hermes Agent и 1С: обмен данными без ручного переноса

Перенос данных между 1С и остальными системами компании чаще всего делается руками: выгрузка в Excel, правка, загрузка обратно. Hermes Agent — ИИ-агент, который устанавливается на ваш сервер и работает с 1С через стандартный REST-интерфейс (OData 3.0), — снимает с сотрудника именно эту часть: выгрузку, сверку, подготовку документов и регулярные отчёты. Ниже разобрано, что технически может 1С, как подключить к ней агента и где проходят границы безопасности.

Что такое Hermes Agent и почему его подключают к 1С

Hermes Agent — это self-hosted ИИ-агент с открытым исходным кодом (лицензия MIT) от Nous Research, который работает на вашем сервере или компьютере и выполняет задачи через языковую модель и набор инструментов: читает и создаёт файлы, запускает скрипты, обращается к внешним API, планирует работу по расписанию и хранит память между сессиями.

Для связки с 1С важны три его свойства:

  • Он не облачный сервис, а программа на вашем железе. Учётные данные от 1С, справочник номенклатуры и суммы по контрагентам не уезжают на сторонний SaaS. Агент ходит к базе 1С по тому же локальному или VPN-каналу, что и любой другой ваш интеграционный скрипт.
  • Он работает с API, а не через интерфейс. Агент не «кликает» по формам 1С — он делает HTTP-запросы к опубликованному сервису и получает структурированный JSON, который умеет разбирать и превращать в таблицу, письмо или документ.
  • Повторяющиеся операции описываются один раз. Процедура вроде «каждый рабочий день в 9:00 забери остатки, найди позиции ниже минимума и пришли список» сохраняется как навык или задача по расписанию и дальше выполняется одинаково, без участия человека.
  • Актуальная версия на момент публикации — v0.21.1 (2026.9.7). Документация — на hermes-agent.nousresearch.com/docs.

    Отдельно стоит сказать: хотя в этой статье речь про 1С, тот же подход работает с любой учётной системой, у которой есть API — «МойСклад», «Мой Класс», SAP, самописная ERP. Разница только в том, какой именно интерфейс придётся описать агенту.

    Как 1С отдаёт данные наружу: четыре способа

    Понимание этих четырёх механизмов определяет, что вообще можно автоматизировать. Выбор способа — это выбор между скоростью запуска и устойчивостью к обновлениям.

    Способ Когда брать Что публикуется наружу
    Стандартный интерфейс OData Быстрый старт, типовые справочники и документы Вся модель данных, доступная роли пользователя
    HTTP-сервисы 1С (`/hs/`) Конкретные операции: «принять заказ», «отдать остатки» Один метод с узким контрактом
    Планы обмена (EnterpriseData) Массовые выгрузки по расписанию, обмен между узлами Ничего, обмен внутри контура 1С
    COM-соединение Только Windows, работа внутри одного компьютера —

    Что такое OData в 1С и с какой версии он работает

    OData (Open Data Protocol) в 1С — это автоматически формируемый REST-интерфейс платформы, который позволяет читать и изменять данные информационной базы обычными HTTP-запросами и получать ответ в формате JSON или Atom/XML.

    Платформа «1С:Предприятие 8» поддерживает OData начиная с версии 8.3.5. Это не отдельный модуль и не доработка — интерфейс генерируется платформой автоматически при публикации базы на веб-сервере, поэтому писать код на стороне 1С для базового обмена не требуется.

    Схема подключения выглядит так:

  • База публикуется на веб-сервере — Internet Information Services (IIS) под Windows или Apache HTTP Server. Второй вариант кросс-платформенный и работает в том числе на Linux.
  • В конфигураторе в разделе «Администрирование → Публикация на веб-сервере» задаётся имя публикации латиницей, выбирается веб-сервер и устанавливается флаг «Публиковать стандартный интерфейс OData».
  • Адрес сервиса получает вид протокол://хост/имя базы/odata/standard.odata, где протокол — http или https, хост — IP-адрес или доменное имя веб-сервера 1С, а имя базы — то, что было указано при публикации.
  • Проверить, что всё заработало, можно прямо в браузере:

    http://localhost/buh/odata/standard.odata/Catalog_Номенклатура?$format=json
    

    Эта строка просит 1С отдать элементы справочника «Номенклатура» в формате JSON. Сервис потребует авторизацию — логин и пароль пользователя информационной базы.

    Состав публикуемых объектов: главный подводный камень

    Публикация базы на веб-сервере ещё не значит, что данные доступны. Состав объектов, которые отдаются через OData, задаётся отдельно — методом УстановитьСоставСтандартногоИнтерфейсаOData, которому передаётся массив объектов метаданных. Обратная функция — ПолучитьСоставСтандартногоИнтерфейсаOData — показывает, что включено сейчас. Оба метода работают только на сервере.

    Типовая ситуация: в учебной базе справочники видны, а в «Бухгалтерии предприятия» запрос к Catalog_Контрагенты возвращает 404 и пустой список коллекций. Причина — состав OData в типовой конфигурации не заполнен. Лечится это одноразовой внешней обработкой, которая вызывает УстановитьСоставСтандартногоИнтерфейсаOData с нужным перечнем, после чего интерфейс начинает отдавать данные.

    Практическое следствие: не открывайте OData «на всю конфигурацию». Ограничение состава — это не только безопасность, но и производительность: полная выгрузка крупного справочника через HTTP заметно нагружает рабочую базу.

    Как устроены адреса объектов

    Имена ресурсов собираются из префикса типа объекта и имени объекта конфигурации. Основные префиксы:

    Объект конфигурации Префикс в URL
    Справочник `Catalog`
    Документ `Document`
    Регистр сведений `InformationRegister`
    Регистр накопления `AccumulationRegister`
    Регистр бухгалтерии `AccountingRegister`
    Константа `Constant`
    План обмена `ExchangePlan`
    План счетов `ChartOfAccounts`
    Журнал документов `DocumentJournal`
    Бизнес-процесс `BusinessProcess`
    Задача `Task`

    Дальше подключаются параметры запроса — тот же набор, что и в OData вообще:

  • $format=json — формат ответа (по умолчанию Atom/XML);
  • $select — какие поля вернуть, экономит трафик и время;
  • $filter — условие отбора: $filter=Price le 3.5 or Price gt 200, $filter=DeletionMark eq false;
  • $orderby — сортировка;
  • $top и $skip — постраничная выдача;
  • $inlinecount — общее количество записей;
  • $allowedOnly — вернуть только те объекты, которые не попадают под ограничения доступа к данным;
  • $expand — раскрыть ссылочные поля (поддерживается с 8.3.9 и требует явного включения).
  • Отбор по периоду для документов выглядит так:

    http://localhost/zup/odata/standard.odata/Document_ВедомостьНаВыплатуЗарплатыВБанк?$format=json&$filter=Date ge datetime'2026-04-02T00:00:00' and Date le datetime'2026-04-02T23:59:59'
    

    Виртуальные таблицы: остатки и обороты

    Помимо «сырых» записей, OData умеет отдавать расчётные таблицы — через суффиксы к адресу регистра. Для регистра накопления, например ТоварыНаСкладах, обращение к остаткам идёт через суффикс Balance. В REST-интерфейсе платформы для регистров накопления и регистров бухгалтерии доступны получение остатков, оборотов, а также остатков и оборотов; для регистра сведений — срез первых и срез последних.

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

    Что ещё умеет REST-интерфейс, кроме чтения

    Через тот же интерфейс выполняются операции создания, чтения, изменения и удаления: GET, POST, PATCH, PUT, DELETE. Платформа поддерживает и отдельные методы встроенного языка: проведение и отмену проведения документа, старт бизнес-процесса, выполнение задачи.

    Важная оговорка: при чтении и записи через REST платформа выполняет все обычные проверки прав и вызывает обработчики событий — за исключением проверки заполнения. То есть подписаться на событие и не заметить, что данные поменялись «в обход» формы, не получится. Ошибки возвращаются HTTP-статусами 4XX (неверные действия клиента) и 5XX (ошибка сервера) с дополнительным внутренним кодом.

    Что конкретно автоматизирует ИИ-агент в связке с 1С

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

    1. Сверка и чистка номенклатуры

    Классическая боль: один и тот же товар заведён в 1С двумя-тремя карточками, часть позиций без артикула, часть с артикулами из разных систем. Агент забирает справочник с нужными полями ($select=Ref_Key,Code,Description,Артикул,DeletionMark), группирует записи по похожим наименованиям, находит потенциальные дубли и отдаёт список на подтверждение. Удаление — только после вашего решения, и лучше через пометку удаления, а не «в лоб».

    2. Сопоставление номенклатуры 1С с внешними каталогами

    Если компания продаёт на маркетплейсах или в собственном интернет-магазине, соответствие «карточка в 1С → карточка на Ozon» ведётся обычно в таблице и постоянно разъезжается. Агент выгружает обе стороны, предлагает сопоставление по артикулу и названию, показывает неоднозначные пары отдельно.

    3. Проверка контрагентов

    Получить список контрагентов без ИНН или с незаполненными реквизитами: $filter=ИНН eq '' в связке с запросом остальных полей. Дальше — рутинный обход справочника, который человек делает раз в квартал и всегда откладывает.

    4. Подготовка счетов по заявке

    Агент читает заявку из почты или мессенджера, находит в 1С нужные позиции номенклатуры, подставляет цены и формирует документ. Ключевое правило: первый месяц — только черновик, проведение — после проверки человеком.

    5. Остатки и сигналы по минимуму

    Ежедневный запрос остатков по складу, сравнение с заданным минимумом и уведомление в мессенджер, если позиция уходит в ноль. Агент умеет молчать, когда ничего не произошло, — это снимает главный раздражитель автоматизации — «ещё одну бесполезную рассылку».

    6. Регулярные сводки по продажам

    Реализации за период, суммы по менеджерам, сравнение с прошлым периодом — данные забираются тем же способом и собираются в короткий текстовый отчёт или файл. Про то, как агент работает с таблицами, есть отдельный материал: Hermes Agent и Google Sheets: работа с таблицами и данными.

    Как подключить Hermes Agent к 1С: два рабочих пути

    Технически у агента два способа дотянуться до базы. Оба используют HTTP, оба настраиваются один раз.

    Путь 1. Скрипт на Python + OData

    Самый прозрачный вариант. Публикуете OData, пишете небольшой скрипт, который делает запрос и возвращает структурированный результат, и описываете агенту, что этот скрипт надо вызывать вот в такой ситуации.

    Для Python уже есть готовые клиенты. Например, пакет python-1c-odata (лицензия MIT) — асинхронный клиент стандартного OData-интерфейса 1С 3.0: справочники, документы с проведением и отменой проведения, регистры, журналы, планы счетов, константы, планы обмена. Пакет покрывает версии платформы от 8.3.5 и выше, отдельно отмечая, что типовые OData-клиенты версии 4 обычно ломаются на литералах 1С вида guid'...' и datetime'...' и на виртуальных таблицах регистров.

    Такой клиент избавляет агента от необходимости собирать URL вручную: он получает описанную операцию («остатки по складу на дату», «список контрагентов без ИНН») и вызывает её.

    Путь 2. MCP-коннектор

    MCP (Model Context Protocol) — это открытый протокол, который позволяет ИИ-агенту подключаться к внешним инструментам и источникам данных через унифицированный интерфейс, не требуя написания отдельного инструмента под каждую систему.

    Для 1С MCP-серверы уже существуют. Есть, например, MCP-сервер метаданных конфигурации 1С: расширение добавляет в базу HTTP-сервис, а MCP-обёртка отдаёт агенту структуру объектов и умеет валидировать запросы на языке 1С. Аналогично подключает 1С к своим AI-агентам «Битрикс24»: в разделе MCP-подключений указывается адрес сервера вида https://[АдресВебСервера]/[ИмяБазы1С]/ru/, логин и пароль пользователя 1С, после чего сотрудник задаёт вопрос в чате и получает данные из базы.

    Hermes Agent поддерживает MCP как с локальными stdio-серверами, так и с удалёнными HTTP-серверами — во втором случае в конфигурации указывается url и заголовки авторизации. Кроме того, у каждого MCP-сервера можно явно ограничить, какие инструменты агент вообще увидит: tools.include и tools.exclude принимают как точные имена, так и glob-шаблоны вроде *_dns_*. Для 1С это означает, что агенту можно выдать, например, только чтение справочников и запретить всё, что пишет в базу.

    Разбор этого механизма — в статье MCP-протокол в Hermes: подключение внешних инструментов и сервисов.

    Пошагово: от публикации базы до первой задачи

  • Опубликуйте базу на веб-сервере. IIS или Apache, флаг «Публиковать стандартный интерфейс OData», имя публикации латиницей.
  • Задайте состав OData. Только те справочники, документы и регистры, которые нужны задачам. Не «всё», а перечислите руками.
  • Заведите отдельного сервисного пользователя 1С. Не администратора. Ему нужны право на внешнее соединение и доступ ровно к опубликованным объектам. Пароль — в защищённом хранилище, не в коде скрипта.
  • Закройте периметр. Публикация только по HTTPS, доступ — через VPN или список разрешённых адресов. OData, открытый в интернет без ограничений, — это дыра.
  • Проверьте доступ браузером. Запрос Catalog_Номенклатура?$format=json&$top=1 должен вернуть одну запись. Если 404 — состав OData пуст, если 401 — права пользователя.
  • Напишите первую операцию. Начните с чтения одного справочника. Задача «покажи остатки по складу» — хороший первый шаг: результат видно сразу, риск нулевой.
  • Опишите регламент агенту. Что считается нормой, что — расхождением, что делать при расхождении, кому сообщать.
  • Поставьте по расписанию. Задача на cron: каждый рабочий день в 9:00. Про этот механизм — Cron-задачи в Hermes: автоматизация по расписанию без кода.
  • Через месяц включайте запись. И только по тем операциям, которые стабильно отработали в режиме чтения и черновиков.
  • Безопасность: что обязательно проверить до запуска

  • Состав объектов ограничен. Наружу отдаются только нужные справочники и документы, а не вся конфигурация.
  • Отдельный сервисный пользователь. Учётная запись администратора для интеграции не используется никогда.
  • Только HTTPS и ограничение по сети. VPN или список адресов — обязательный минимум, если база не в изолированном контуре.
  • Логирование обращений. Все запросы к 1С должны оставлять след: кто, когда, что запросил.
  • Ограничение объёмов выборок. Полная выгрузка большого справочника через OData нагружает рабочую базу и тормозит пользователей.
  • Право записи — только после периода чтения. Практическое правило: месяц агент работает в режиме чтения и подготовки черновиков, и лишь потом ему выдают запись в учётную систему.
  • Больше о разграничении доступа — в материале Безопасность AI-агента: как Hermes защищает данные и ограничивает доступ.

    Ограничения и типовые ошибки

  • 1С без опубликованного сервиса — это просто файл. Если OData не публиковался, агент видит только выгрузки и почту. Чудес не будет.
  • Обновления конфигурации ломают привязку к структуре. 1С регулярно выпускает релизы, поля переименовываются, справочники разделяются. Интеграция, завязанная на внутренние имена реквизитов конкретной конфигурации, ломается при очередном обновлении.
  • Типовые OData-клиенты версии 4 не работают с 1С. 1С отдаёт OData 3.0, поэтому универсальные библиотеки спотыкаются на литералах guid'...' и виртуальных таблицах.
  • Права роли режут выборку молча. Доступ к объектам конфигурации ограничивается ролями пользователя 1С, под которым выполняется подключение. Пустой ответ вместо ошибки — часто именно про это.
  • Нет проверки заполнения при записи. Платформа выполняет проверки прав и обработчики событий, но не проверяет заполнение — значит, обязательные реквизиты должен контролировать ваш скрипт.
  • Ожидание мгновенного результата. Первые недели — это режим черновиков и уточнения регламента, а не готовый «ИИ-бухгалтер».
  • FAQ

    Заменит ли Hermes Agent 1С или бухгалтера?

    Нет. 1С остаётся системой учёта и источником истины, агент — надстройкой, которая забирает данные, готовит черновики и считает. Ответственность за проводки и отчётность остаётся за человеком и организацией.

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

    Для публикации базы и настройки состава OData достаточно администратора 1С. Для сценариев с готовым MCP-сервером или клиентской библиотекой вроде python-1c-odata программирование минимально — разовая настройка вызова. Если писать собственный HTTP-сервис в 1С, разработчик нужен.

    Можно ли обойтись без OData?

    Да. Второй путь — HTTP-сервисы 1С (/hs/): разработчик описывает метод под конкретную операцию, и наружу торчит только этот метод, а не модель данных. Контракт получается узким и версионируемым, безопасность выше, но старт дороже. Для массовых выгрузок по расписанию есть третий штатный механизм — планы обмена.

    Дадут ли агенту право записи в базу 1С?

    Технически — да, REST-интерфейс поддерживает создание, изменение и удаление объектов. Практически право записи выдаётся только после того, как агент месяц стабильно отработал в режиме чтения и подготовки черновиков, и, как правило, только по узкому кругу операций с обязательным аудит-следом.

    Что будет, если структура конфигурации изменится после обновления 1С?

    Часть запросов сломается — это нормальный риск любой интеграции, завязанной на реквизиты конкретной конфигурации. Снижается он двумя приёмами: узкий контракт (HTTP-сервис вместо прямого OData) и живое чтение метаданных через запрос $metadata, по которому агент сверяет доступные поля перед запросом.

    Работает ли это с другими учётными системами?

    Да, и это важнее, чем кажется. Любая система с документированным API подключается по той же схеме: агент вызывает интерфейс, получает структурированный ответ и дальше работает с ним. 1С в этой статье — просто самый распространённый в России пример.

    Ссылки и документация

  • Hermes Agent — документация: hermes-agent.nousresearch.com/docs
  • MCP-протокол в Hermes: подключение внешних инструментов и сервисов
  • Hermes Agent и API: как агент работает с внешними сервисами
  • Cron-задачи в Hermes: автоматизация по расписанию без кода
  • Что такое Hermes Agent: возможности и для кого он
  • Hermes Agent для бухгалтера: автоматизация финансовой отчётности
  • 1С: REST интерфейс платформы — v8.1c.ru/platforma/rest-interfeys