/
/
Можно ли сайт подключить к 1С?

Можно ли сайт подключить к 1С?

25 июня 2025

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

Вариантов интеграции сайта с 1С существует несколько, и выбор зависит от задач, уровня автоматизации и технических возможностей на стороне клиента. Мы умеем как забирать информацию из 1С (например, остатки товаров, заказы, цены), так и передавать данные обратно (оформленные заказы, новые пользователи, обновления корзины и прочее).

Простой способ — REST API

Один из самых надёжных и современных способов — это подключение через REST API. В этом случае сайт обращается к 1С по HTTP-протоколу, а 1С отвечает в формате JSON или XML. Такой обмен можно организовать в режиме реального времени: например, пользователь оформляет заказ на сайте, и он сразу же появляется в базе 1С. Или наоборот — остатки товаров на сайте моментально обновляются, когда они меняются в 1С. Для этого на стороне 1С настраивается HTTP-сервис, а на стороне сайта — простой PHP-скрипт. Всё это можно гибко масштабировать: добавлять новые методы, обрабатывать сложные структуры и даже реализовывать полноценные бизнес-процессы.

Альтернатива — обмен через файлы

Если нет возможности или необходимости работать онлайн, можно настроить обмен через файлы. Это могут быть XML-файлы в формате CommerceML (такой подход активно используется в связке с Битриксом), JSON-файлы (более удобные и понятные по структуре) или даже Excel-документы. Например, сайт может выгружать заказы в XLSX, которые затем автоматически подхватываются 1С, либо наоборот — 1С генерирует каталог товаров в JSON, а сайт регулярно его считывает. Подобный обмен часто реализуется через FTP или SFTP: с одной стороны это не онлайн, но зато такой способ прост в реализации, особенно в компаниях, где уже настроены регулярные выгрузки или где есть строгие политики безопасности.

Есть и более специфические решения

Некоторые компании используют прямое подключение к базе данных 1С, если она на MS SQL или PostgreSQL. Это позволяет, например, быстро считывать остатки или номенклатуру напрямую, без участия веб-сервисов. Но этот путь не всегда безопасен и подходит только для опытных специалистов. Мы рассматриваем его как вспомогательный или временный вариант. То же самое касается обмена Excel-файлами — они хороши для ручной проверки и первичного запуска интеграции, но редко применимы для полноценно автоматизированных процессов.

Примеры вариантов интеграции сайта и 1С

1. REST API через HTTP-сервис 1С

Описание:

Сайт (PHP) напрямую обращается к 1С через URL. В 1С настраивается HTTP-сервис, который возвращает JSON/XML

Преимущества:

  • Реальный онлайн-обмен
  • Гибкая структура (можно делать всё: заказы, остатки, корзины)

Недостатки:

  • Нужен веб-сервер на стороне 1С

Пример PHP:

$url = 'http://1c-server/hs/orders';
$auth = base64_encode("user:pass");
$options = ["http" => ["header" => "Authorization: Basic $auth"]];

$response = file_get_contents($url, false, stream_context_create($options));
$data = json_decode($response, true);

print_r($data);

Пример 1С:

Процедура ОбработатьЗапрос(Запрос, Ответ)
Ответ.УстановитьЗаголовок("Content-Type", «application/json");
Попытка
ДанныеТела = Запрос.ПрочитатьКакСтроку();
Метод = СтрЗаменить(Запрос.Метод, Символы.ПС, «");
Если Метод = "GET" Тогда

// Пример: получение заказов

Заказы = Новый Массив;ЗапросSQL = "ВЫБРАТЬ ПЕРВЫЕ 10 Номер, Дата, СуммаДокумента ИЗ
Документ.ЗаказПокупателя";
Результат = ВыполнитьЗапрос(ЗапросSQL);
Для Каждого Строка Из Результат.Выбрать() Цикл
Структура = Новый Структура;
Структура.Вставить("номер", Строка.Номер);
Структура.Вставить("дата", Строка.Дата);
Структура.Вставить("сумма", Строка.СуммаДокумента);
Заказы.Добавить(Структура);
КонецЦикла;

Ответ.УстановитьТело(ЗаписатьJSON(Заказы));
ИначеЕсли Метод = "POST" Тогда

// Пример: создание нового заказа

Данные = ПрочитатьJSON(ДанныеТела);
НовыйЗаказ = Документы.ЗаказПокупателя.СоздатьДокумент();
НовыйЗаказ.Дата = ТекущаяДата();
НовыйЗаказ.Контрагент =
Справочники.Контрагенты.НайтиПоНаименованию(Данные.клиент);
НовыйЗаказ.Комментарий = Данные.комментарий;
Для Каждого Позиция Из Данные.позиции Цикл
Строка = НовыйЗаказ.Товары.Добавить();
Строка.Номенклатура =
Справочники.Номенклатура.НайтиПоНаименованию(Позиция.наименование);
Строка.Количество = Позиция.количество;
Строка.Цена = Позиция.цена;
КонецЦикла;

НовыйЗаказ.Записать();
Ответ.УстановитьТело(ЗаписатьJSON(Новый Структура("успех", Истина, "номер",
НовыйЗаказ.Номер)));
Иначе
Ответ.КодСостояния = 405;
Ответ.УстановитьТело("{""error"":""Метод не поддерживается""}");
КонецЕсли;
Исключение
Ответ.КодСостояния = 500;Ответ.УстановитьТело("{""error"":""Ошибка сервера: " + ОписаниеОшибки() +
"""}");
КонецПопытки;
КонецПроцедуры

2. Обмен через XML (CommerceML)

Описание:

1С выгружает/загружает файлы в формате CommerceML (каталог, остатки, заказы).

Преимущества:

  • Стандарт 1С
  • На этом построен обмен в системах Битрикс и подобных 1с
  • Часто используется

Недостатки:

  • Не онлайн
  • Структура жесткая, требует адаптации

Пример PHP (загрузка заказа из XML):

$xml = simplexml_load_file('orders.xml');
foreach ($xml->Документ as $doc)
{
echo "Номер заказа: {$doc->Номер}, Дата: {$doc->Дата}";
}

3. Прямое подключение к БД 1С (SQL)

Описание:

Прямое чтение данных из SQL-базы 1С (MSSQL/PostgreSQL). Только для опытных.

Преимущества:

  • Мгновенный доступ

Недостатки:

  • Только чтение
  • Высокие риски по безопасности

Пример PHP:

$conn = sqlsrv_connect("1c-server", ["Database" => "ERP",
"UID" => "user", "PWD" => "pass"]);
$stmt = sqlsrv_query($conn, "SELECT TOP 10 Description FROM
Catalog_Products");
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
{
echo $row['Description'] . "<br>";
}

4. Обмен через JSON-файлы

Описание:

1С выгружает и читает JSON-файлы через внешнюю обработку. PHP просто читает их.

Преимущества:

  • Легче читать и обрабатывать, чем XML

Недостатки:

  • Не стандарт для 1С (нужно писать выгрузку)
  • Не онлайн

Пример PHP:

$json = file_get_contents('catalog.json');
$data = json_decode($json, true);
foreach ($data as $product)
{
echo $product['name'] . " — " . $product['price'] ."<br>";
}

5. Обмен через Excel-файлы (XLSX)

Описание:

1С выгружает Excel-файлы, которые PHP обрабатывает.

Преимущества:

  • Проще в реализации
  • Можно открыть и проверить вручную файл

Недостатки:

  • Не онлайн
  • Нужно следить за структурой файла

Пример PHP с PhpSpreadsheet:

use PhpOfficePhpSpreadsheetIOFactory;
$spreadsheet = IOFactory::load("products.xlsx");
$sheet = $spreadsheet->getActiveSheet();
foreach ($sheet->getRowIterator() as $row)
{
$cellIterator = $row->getCellIterator();
foreach ($cellIterator as $cell) {
echo $cell->getValue() . " ";
}
echo "<br>";
}

6. FTP/SFTP обмен

Описание:

Обмен любыми файлами через SFTP/FTP. Универсальное решение.

Преимущества:

  • Безопасный способ передачи (SFTP)
  • Можно передавать любые типы файлов

Недостатки:

  • Не онлайн
  • Не гибкий
  • Не подходит для не продвинутых пользователей в работе с серверными частями

Пример PHP:

$conn_id = ftp_connect("ftp.your1c.ru");
ftp_login($conn_id, "user", "pass");
ftp_get($conn_id, "localfile.xlsx", "remotefile.xlsx",
FTP_BINARY);
ftp_close($conn_id);

Итоги

  • Для интеграций данных через файлы на серверExcel/JSON-файлы через FTP или напрямуютребует знаний в работе с серверами.
  • Для онлайн и полной автоматизацииREST API (написание серверной части) на стороне 1С.
  • CommerceML подойдёт, если хотите загружать файлы офлайн вручную
  • Прямой SQL-доступ — только для чтения, не совсем безопасно

Таблица сравнения вариантов подключения сайта к 1С

Способ интеграцииПрямой обмен? Скорость Поддержка 1С Подходит для:Примеры данныхПлюсы Минусы
1REST API через HTTP-сервис 1СДаБыстраяОтличнаяОнлайн заказы,  остатки, корзиныТовары, цены,  заказы, статусыРеальный онлайн-обмен, API стандартНужен веб-сервер на 1С
2Обмен через XML (CommerceML)Нет (файл)СредняяСтандартныйКаталог, заказы, ценыcatalog.xml, offers.xml, orders.xmlСтандарт 1С, двусторонняя работаНе онлайн формат, не всегда гибкий
3Прямое подключение к БД 1С (SQL)УсловноБыстраяНеофициальноТовары, остатки (только чтение)Таблицы из SQLМгновенный доступ Не всегда безопасно
4Обмен через JSON-файлыНет (файл)СредняяЧастичноКаталог, остатки, корзиныcatalog.json,  orders.jsonПонятный формат, легче читать, чем XMLНе стандарт 1С
5Обмен через Excel-файлыНет (файл)СредняяЧастичноЗаказы,  каталоги,  отчётыcatalog.xlsx,  order_123.xlsxПростой обмен, можно проверить вручную, не требует APIНе онлайн формат, файлы нужно проверять на завершённость
6FTP/SFTP обмен (любые форматы)Нет (файл)СредняяЧастичноОбщий обменЛюбые файлы: XML,  JSON, ExcelУниверсально, безопасно (SFTP), без доп. серверовНе онлайн формат, нужна настройка сервера FTP

Что важно на старте

Для начала нам потребуется минимальный набор: доступ к API или FTP-серверу (если это обмен файлами), пример структуры данных, тестовые логины и технический контакт на стороне 1С. Дальше мы либо подстраиваемся под существующую архитектуру, либо предлагаем удобную модель с нуля.

Подключение сайта к 1С — это не только возможно, но и решается несколькими проверенными способами. Мы помогаем выбрать оптимальный путь: онлайн через REST API, файл-обмен через JSON/XML/Excel, или даже через прямую работу с базой данных. В любом случае, мы выстраиваем процесс так, чтобы он не ломал привычную работу компании, а наоборот — органично дополнял её и делал быстрее, прозрачнее и удобнее.

Если есть конкретные задачи — расскажите, мы подскажем, как их решить в рамках интеграции.