1С

Обмен 1С с сайтом: HTTP-сервис или OData, авторизация и частые ошибки

30 октября 2026 · 4 мин чтения

Кратко

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

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

Два способа: OData и HTTP-сервис

OData (стандартный интерфейс)HTTP-сервис
Что этоВстроенный REST-подобный доступ к объектам конфигурацииСвои методы с вашей логикой
Когда выбиратьПростые чтение и запись справочников и документовНужна своя обработка: расчёты, проверки, сборка ответа под сайт
НастройкаВключить состав стандартного интерфейса OData и опубликовать базуСоздать объект «HTTP-сервис», написать обработчики, опубликовать
МинусыОтдаёт структуру 1С как есть, тяжёлые выборки, неудобные именаНужно писать и сопровождать код

Практическое правило: для каталога и остатков чаще удобнее свой HTTP-сервис с компактным ответом, а OData годится для быстрых прототипов и административных задач.

OData: пример чтения из Python

После включения OData и публикации базы объекты доступны по адресу вида http://сервер/база/odata/standard.odata/Catalog_Номенклатура.

import requests

BASE = "https://example.com/base/odata/standard.odata"


def items(top: int = 10) -> list[dict]:
    r = requests.get(
        f"{BASE}/Catalog_Номенклатура",
        params={"$format": "json", "$top": top},
        auth=("integration", "пароль-из-хранилища"),
        timeout=20,
    )
    r.raise_for_status()
    return r.json()["value"]

Логин и пароль берите из переменных окружения или хранилища секретов, а не из кода.

HTTP-сервис: пример метода

В конфигураторе создаётся объект «HTTP-сервис» с корневым URL и шаблоном. Обработчик метода возвращает ответ с JSON:

Функция ТоварыGET(Запрос)

	Данные = Новый Массив;
	// ... заполнение данных из справочника ...

	Запись = Новый ЗаписьJSON;
	Запись.УстановитьСтроку();
	ЗаписатьJSON(Запись, Данные);

	Ответ = Новый HTTPСервисОтвет(200);
	Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
	Ответ.УстановитьТелоИзСтроки(Запись.Закрыть(), КодировкаТекста.UTF8);
	Возврат Ответ;

КонецФункции

Адрес метода формируется как http://сервер/база/hs/корневойURL/шаблон. Проверяйте синтаксис на своей версии платформы.

Правила безопасности

  • Не открывайте базу в интернет напрямую. Ставьте перед 1С обратный прокси (например, nginx) с HTTPS и ограничением по IP-адресам сайта.
  • Отдельный пользователь для интеграции с минимальной ролью: только те объекты и права, которые нужны обмену.
  • HTTPS обязательно. Логин и пароль в Basic-авторизации по HTTP уходят открытым текстом.
  • Пароли и токены не хранят в коде. Переменные окружения или хранилище секретов.
  • Ограничьте объём выдачи: пагинация и лимиты, чтобы один запрос не загрузил сервер 1С.

Правила надёжности обмена

  1. Идемпотентность. Каждому заказу присваивайте уникальный идентификатор. Если запрос ушёл повторно, 1С должна понять, что заказ уже есть, а не создать дубль.
  2. Очередь и повторы. Не пишите в 1С прямо из обработчика на сайте. Сохраняйте заказ у себя и передавайте в 1С отдельным процессом с повторными попытками.
  3. Статус обмена. Храните у каждого заказа признак «передан в 1С» и время. Это позволит найти потерянные и увидеть сбои.
  4. Не блокируйте пользователя. Если 1С недоступна, сайт должен принять заказ и передать позже.
  5. Версии и совместимость. Меняя формат ответа, сохраняйте старые поля или версионируйте методы (/v1/, /v2/).
  6. Логи. Пишите в журнал каждый вызов и ошибку, иначе разбор сбоев превращается в угадывание.

Типичные ошибки

  • Кодировка. Отправляйте и принимайте JSON в UTF-8 и явно указывайте её в заголовке.
  • Тяжёлые выборки. Запрос «все товары» с реквизитами и остатками вешает сеанс. Делайте страницы и отдельный метод остатков.
  • Сеансы и лицензии. Каждое обращение использует сеанс базы: проверьте лицензирование и настройте тайм-ауты.
  • Часовые пояса и даты. Передавайте даты в едином формате и часовом поясе.
  • Изменили конфигурацию. После обновления проверьте, что методы опубликованы, права на месте и формат не изменился.

Что дальше

Если нужно связать 1С с сайтом, интернет-магазином, Telegram и другими сервисами, подробности в разделе «1С и учётные системы» и в услуге «Интеграции и API». Родственные темы: отправка сообщений из 1С в Telegram.

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

Что лучше для сайта: OData или HTTP-сервис?

Для быстрого прототипа и административных задач подойдёт OData. Для рабочего обмена с каталогом, остатками и заказами чаще удобнее HTTP-сервис с компактным ответом.

Можно ли подключить сайт к 1С без прямого доступа из интернета?

Да, и это правильнее. Держите 1С во внутренней сети и вызывайте её через прокси с ограничением по IP или через отдельный сервис-посредник, который сам обращается к 1С.

Как избежать дублей заказов?

Передавайте уникальный идентификатор заказа и проверяйте его на стороне 1С перед созданием документа.

Что делать, если 1С временно недоступна?

Принимайте заказ на сайте, храните его в очереди и повторяйте передачу, пока не получите подтверждение.

1Синтеграция с сайтомHTTP-сервисODataAPI

Версия для ИИ и чтения без оформления: Markdown.

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

Telegram · 30 октября 2026

Уведомления в Telegram Mini App: как слать пуши через бота

У Mini App нет собственных пушей: уведомления приходят как сообщения бота, а писать пользователю можно только после его запуска бота или запроса разрешения requestWriteAccess. Чтобы открыть нужный экран, используйте кнопку web_app или прямую ссылку с параметром startapp. Пользователей, заблокировавших бота, нужно отмечать и не беспокоить.

Telegram · 30 октября 2026

Telegram-бот на n8n: inline-кнопки, меню и кнопка для открытия Mini App

В n8n бот строится из Telegram Trigger, ветвления по типу события и узла отправки. Нажатия inline-кнопок приходят как callback_query и требуют ответа. Кнопку, открывающую Mini App, проще отправить через HTTP Request, а у бота может быть только один webhook.

Бизнес · 30 октября 2026

Сколько стоит Telegram-бот и Mini App: из чего складывается цена

Цена бота зависит от сценариев, интеграций и числа ролей, цена Mini App ещё и от интерфейса, API и данных. Простой бот стоит заметно меньше каталога с подписками. Экономия достигается запуском минимальной версии и ясным описанием задачи.

Расскажите о задаче

Опишите, что нужно сделать, даже в паре строк. Отвечу с вопросами или оценкой.

Обсудить проект →