Сайт использует сookies для хранения данных. Продолжая использовать сайт, вы даёте согласие на работу с этими файлами.

ОК
🌐
Клиент-сервер
Опубликовано:
14.08.2026
Обновлено:
14.08.2026

1С API и Python: 3 метода интеграции с примерами кода

Артём Целин

Каждый день тысячи компаний вручную переносят данные между 1С и сайтом, CRM или маркетплейсом. Python решает эту проблему за несколько десятков строк кода - если знать, к какому API обращаться и какой метод выбрать под задачу.

В этой статье - три рабочих метода подключения Python к 1С:Предприятие 8.3, конкретные примеры запросов и алгоритм выбора под вашу задачу.

Зачем бизнесу Python + 1С

1С - центральная учётная система у большинства российских компаний: там хранятся остатки товаров, заказы, контрагенты, финансы. Python умеет делать то, что 1С делает плохо или вообще не умеет: вызывать внешние API, обрабатывать большие массивы данных, строить ML-модели, работать с асинхронными очередями.

Типичные задачи, которые решает связка Python + 1С:

  • Синхронизация остатков товаров между 1С и интернет-магазином
  • Загрузка заказов с Wildberries или Ozon в 1С-документы
  • Автоматическая отправка счётов из 1С в CRM или на email
  • Сбор аналитических данных из 1С в BI-систему (Power BI, Metabase)
  • Генерация отчётов и их публикация в Telegram-боте

Когда интеграция окупается

Если менеджер тратит больше двух часов в день на копирование данных между системами - интеграция окупится за несколько недель. Ещё один триггер: любая задача, где данные должны быть актуальны с лагом меньше 15 минут (цены, остатки, статусы заказов).

Три метода подключения к 1С из Python

Платформа 1С:Предприятие 8.3 даёт три официальных способа интеграции и один обходной: OData, кастомные HTTP-сервисы, COM-соединение и прямой SQL.

OData - стандартный REST-интерфейс 1С

OData (Open Data Protocol) встроен в платформу начиная с версии 8.3. Это полноценный REST API: работает поверх HTTP, возвращает данные в JSON или XML, поддерживает CRUD-операции. Доступен без написания кода на стороне 1С - нужна только публикация базы на веб-сервере.

Плюсы OData: работает на Linux и Windows, не требует разработчика 1С для базового использования, поддерживает фильтрацию ($filter), выборку полей ($select), раскрытие связей ($expand), пагинацию ($top, $skip). Работает с облачным 1cfresh.com.

Минусы OData: отсутствует бизнес-логика - доступен только CRUD над объектами метаданных. Производительность при сложных запросах ниже, чем у кастомных HTTP-сервисов 1С.

Кастомные HTTP-сервисы 1С

В конфигурации 1С разработчик создаёт HTTP-сервис: описывает URL-шаблоны, методы (GET/POST/PUT) и пишет обработчики на встроенном языке 1С. Python вызывает этот endpoint как обычный REST API.

Плюсы HTTP-сервиса: полная свобода в бизнес-логике - агрегации, бизнес-правила, сложные выборки, кастомный формат ответа.

Минусы HTTP-сервиса: для написания и поддержки сервиса нужен разработчик 1С.

COM-соединение 1С с Python (только Windows)

Через V83.COMConnector Python напрямую вызывает объекты и методы конфигурации 1С. Это мощный метод - доступно буквально всё, что умеет 1С. Но работает исключительно на Windows с установленным клиентом 1С.

Плюсы COM-соединения: прямой доступ к любым объектам конфигурации, максимальная гибкость.

Минусы COM-соединения: жёсткая привязка к Windows, хрупкость при обновлениях платформы, сложность отладки.

Прямой SQL (только для чтения, осторожно)

К базе 1С можно подключиться через pyodbc и читать данные SQL-запросами. Структура таблиц 1С не документирована официально и меняется с обновлениями платформы - этот метод подходит только для разовых аналитических выгрузок, не для продакшн-интеграции.

Сравнение методов интеграции 1С с Python

Критерий OData HTTP-сервис 1С COM-соединение
Нужен 1С-разработчик Нет Да Нет (нужен COM-клиент)
ОС Любая Любая Только Windows
Бизнес-логика на стороне 1С Нет Да Да
Формат данных JSON / XML JSON / XML / любой Объекты COM
Сложность настройки Низкая Средняя Высокая
Продакшн-надёжность Высокая Высокая Низкая
Работает с 1cfresh.com Да Нет* Нет
Пагинация / фильтрация Встроена Ручная Ручная

⚠️ Данные о поддержке HTTP-сервисов в 1cfresh уточняйте на 1cfresh.com/articles/data_odata.

Когда что выбрать

  • OData - стартовая точка для 90% задач: читать справочники, создавать документы, синхронизировать данные. Не нужен 1С-разработчик.
  • HTTP-сервис - когда нужно выполнить бизнес-операцию (провести документ, пересчитать остатки) или агрегировать данные на стороне 1С.
  • COM - только для legacy Windows-систем или сценариев с локальными скриптами на том же сервере.

Как подключить Python к 1С через OData: шаг за шагом

Шаг 1. Публикация базы 1С на веб-сервере для OData

В Конфигураторе 1С: АдминистрированиеПубликация на веб-сервере. Задайте имя публикации (например, mybase), укажите каталог веб-сервера (IIS или Apache), активируйте галочку «Публиковать стандартный интерфейс OData».

После публикации документ метаданных доступен по адресу:

GET http://your-server/mybase/odata/standard.odata/$metadata

Для 1cfresh.com публикация уже выполнена - используйте адрес вида:

https://msk1.1cfresh.com/a/ea/XXXXXX/odata/standard.odata/

Откройте $metadata первым делом: этот endpoint возвращает XML-описание всех объектов базы (справочники, документы, регистры, их поля и типы) и заменяет любую документацию по конфигурации.

Шаг 2. GET-запрос к 1С через OData из Python - читаем контрагентов

Следующий Python-код выполняет GET-запрос к справочнику «Контрагенты» базы 1С через OData и выводит первые 10 активных записей, выбирая только поля Code, Description и Ref_Key:

import requests
from requests.auth import HTTPBasicAuth

BASE_URL = "http://your-server/mybase/odata/standard.odata"
AUTH = HTTPBasicAuth("username", "password")

url = f"{BASE_URL}/Catalog_Контрагенты"
params = {
    "$format": "json",
    "$select": "Description,Code,Ref_Key",
    "$top": 10,
    "$filter": "DeletionMark eq false",
}

response = requests.get(url, params=params, auth=AUTH)
response.raise_for_status()

contractors = response.json()["value"]
for c in contractors:
    print(c["Code"], c["Description"])

Параметр $expand=* раскрывает все связанные объекты - используйте его аккуратно, ответ может быть очень большим.

Шаг 3. POST-запрос к 1С через OData - создание контрагента из Python

Следующий код создаёт нового контрагента в справочнике 1С через POST-запрос к OData и возвращает Ref_Key (GUID) созданного объекта:

import json

import requests
from requests.auth import HTTPBasicAuth

BASE_URL = "http://your-server/mybase/odata/standard.odata"
AUTH = HTTPBasicAuth("username", "password")

new_contractor = {"Description": "ООО Ромашка", "Code": "00000123", "ИНН": "7701234567"}

response = requests.post(
    f"{BASE_URL}/Catalog_Контрагенты",
    params={"$format": "json"},
    headers={"Content-Type": "application/json"},
    data=json.dumps(new_contractor),
    auth=AUTH,
)
response.raise_for_status()
print("Создан:", response.json()["Ref_Key"])

Шаг 4. PATCH и DELETE в 1С через OData - обновление и удаление объекта

Следующий код демонстрирует частичное обновление (PATCH) и пометку на удаление (DELETE) объекта 1С по его GUID (Ref_Key):

import json

import requests
from requests.auth import HTTPBasicAuth

BASE_URL = "http://your-server/mybase/odata/standard.odata"
AUTH = HTTPBasicAuth("username", "password")

ref_key = "550e8400-e29b-41d4-a716-446655440000"  # GUID объекта из Ref_Key

# PATCH - частичное обновление поля Description
requests.patch(
    f"{BASE_URL}/Catalog_Контрагенты(guid'{ref_key}')",
    params={"$format": "json"},
    headers={"Content-Type": "application/json"},
    data=json.dumps({"Description": "ООО Ромашка обновлённая"}),
    auth=AUTH,
)

# DELETE - пометить объект на удаление
requests.delete(f"{BASE_URL}/Catalog_Контрагенты(guid'{ref_key}')", auth=AUTH)

Ref_Key - уникальный GUID объекта в 1С, аналог первичного ключа в СУБД. Возвращается автоматически в каждом JSON-ответе OData и используется в URL для PATCH и DELETE операций.

Архитектура продакшн-интеграции Python и 1С

Микросервис на FastAPI

Для серьёзных проектов оберните логику обращения к 1С в отдельный Python-микросервис. FastAPI + Pydantic даёт автоматическую документацию (Swagger), валидацию входных данных и удобное тестирование. Docker упрощает деплой:

# docker-compose.yml (фрагмент)
services:
  1c-bridge:
    build: ./1c_bridge
    command: uvicorn main:app --host 0.0.0.0 --port 8000
    environment:
      - ONS_BASE_URL=http://1c-server/mybase/odata/standard.odata
      - ONS_USER=api_user
      - ONS_PASS=secure_password
    ports:
      - "8000:8000"

Этот микросервис принимает вебхуки от Bitrix24 или маркетплейса и транслирует их в 1С-операции.

Безопасность API 1С: HTTPS и авторизация

API 1С нельзя открывать в интернет без HTTPS - трафик с Basic Auth в открытом HTTP виден любому перехватчику. Минимальная конфигурация для продакшна:

  1. Reverse-proxy (nginx) с SSL-сертификатом (Let's Encrypt)
  2. Фильтрация по IP - разрешить только серверу с Python-кодом
  3. Отдельный пользователь 1С для API с ограниченными правами
  4. Логирование всех запросов

Типичные ошибки при работе с 1С OData из Python

Ошибка 401 Unauthorized

Причина: неверный логин/пароль в Basic Auth или в настройках публикации не включена «Аутентификация пользователей 1С».

Решение: откройте Конфигуратор → Администрирование → Публикация на веб-сервере и проверьте настройки аутентификации.

Ошибка 404 Not Found

Причина: база не опубликована, опечатка в имени базы или в названии объекта метаданных (имена регистрозависимы!).

Решение: откройте $metadata endpoint - он вернёт точные имена всех доступных объектов базы.

Пустой массив value: [] в ответе

Причина: объект метаданных не включён в список публикации OData или у пользователя API нет прав на чтение этого объекта.

Решение: добавьте объект в список публикации и проверьте роли пользователя в 1С.

Кодировка в именах объектов 1С

Имена справочников на русском в URL нужно передавать как есть - библиотека requests автоматически выполнит URL-кодирование.

На практике 80% проблем с 1С API решается в первые полчаса - чаще всего это неверный URL или забытая публикация. Держите вкладку с $metadata открытой.

Альтернативное мнение

Часть 1С-разработчиков настаивает: правильная интеграция должна строиться через встроенные механизмы обмена 1С (планы обмена, EnterpriseData) - они транзакционно безопасны и учитывают особенности платформы. Этот подход оправдан для сложных двусторонних синхронизаций с высокими требованиями к консистентности данных. Для большинства же задач - выгрузка каталога, создание заказов, получение остатков - OData через Python проще, быстрее и не требует экспертизы в платформе 1С.

Нетривиальный факт

Протокол OData - стандарт OASIS (как и Open Document Format), принятый в том числе Microsoft для Azure DevOps, SAP и Power BI. Это значит: Python-код, написанный для работы с 1С через OData, с минимальными правками заработает и с SAP, и с SharePoint - интерфейс один и тот же.

FAQ

Нужен ли разработчик 1С, чтобы подключить Python?

Для OData - нет. Достаточно опубликовать базу через Конфигуратор. Для кастомных HTTP-сервисов нужен специалист 1С, зато получите полную свободу в логике.

Работает ли 1С API на Linux?

OData - да, работает на любой ОС, потому что это обычный HTTP. COM-соединение привязано к Windows и не работает на Linux/Mac.

Какую библиотеку Python использовать для 1С API?

requests для синхронных вызовов - покрывает 95% задач. aiohttp или httpx - для асинхронных. FastAPI - если нужен промежуточный микросервис.

Как авторизоваться в 1С API из Python?

Стандартно - HTTP Basic Auth: HTTPBasicAuth('user', 'password') в requests. Обязательно через HTTPS в продакшне, иначе логин/пароль передаются открытым текстом.

Можно ли работать с облачным 1С (1cfresh.com)?

Да. С 2022 года 1cfresh.com поддерживает OData для чтения и записи. Документация - 1cfresh.com/articles/data_odata.

Как получить GUID (Ref_Key) объекта для PATCH/DELETE?

Ref_Key содержится в каждом JSON-ответе OData автоматически. В URL используется формат guid'550e8400-...'.

Что такое $metadata в 1С OData и зачем он нужен?

$metadata - служебный endpoint, возвращающий XML-описание всех объектов базы: типы, поля, связи. Открывайте его первым делом - он заменяет любую документацию по конфигурации.

Источники

  1. 1С - «REST интерфейс | Интеграция - платформа 1С:Предприятие» - v8.1c.ru/platforma/rest-interfeys/
  2. 1cfresh.com - «Протокол OData» - 1cfresh.com/articles/data_odata
  3. Modus BI - «Интеграция 1С и КХД через HTTP- и WS-сервисы» - modusbi.ru
  4. Surf - «Интеграция Python и 1С» - surf.ru
  5. 42clouds - «Настройка и возможности интерфейса OData» - 42clouds.com
Это авторская статья, основанная на личном опыте и субъективном взгляде автора. Заметили ошибку или битую ссылку? Сообщите нам: info@codesrc.ru - мы оперативно исправим. Спасибо, что помогаете делать блог лучше.
Следите за нами в соцсетях:

Читайте также