Один из самых частых вопросов, с которым к нам обращаются — можно ли подключить сайт к 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С | Подходит для: | Примеры данных | Плюсы | Минусы |
1 | REST 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 | Не онлайн формат, файлы нужно проверять на завершённость |
6 | FTP/SFTP обмен (любые форматы) | Нет (файл) | Средняя | Частично | Общий обмен | Любые файлы: XML, JSON, Excel | Универсально, безопасно (SFTP), без доп. серверов | Не онлайн формат, нужна настройка сервера FTP |
Что важно на старте
Для начала нам потребуется минимальный набор: доступ к API или FTP-серверу (если это обмен файлами), пример структуры данных, тестовые логины и технический контакт на стороне 1С. Дальше мы либо подстраиваемся под существующую архитектуру, либо предлагаем удобную модель с нуля.
Подключение сайта к 1С — это не только возможно, но и решается несколькими проверенными способами. Мы помогаем выбрать оптимальный путь: онлайн через REST API, файл-обмен через JSON/XML/Excel, или даже через прямую работу с базой данных. В любом случае, мы выстраиваем процесс так, чтобы он не ломал привычную работу компании, а наоборот — органично дополнял её и делал быстрее, прозрачнее и удобнее.
Если есть конкретные задачи — расскажите, мы подскажем, как их решить в рамках интеграции.