Правильная интеграция интернет-магазина или B2B-кабинета с 1С строится через платформенные механизмы — типовой обмен CommerceML, интерфейс OData, собственные HTTP-сервисы в расширении конфигурации или фоновый опрос очереди — при этом сама витрина сайта всегда читает данные из собственной базы (например, PostgreSQL или MySQL). Тогда каталог и поиск открываются за 40–120 миллисекунд, сайт продолжает принимать заказы даже при перезагрузке сервера 1С, а учётная база остаётся на типовой поддержке и обновляется без поломок.
Ниже на опыте наших B2B- и e-commerce-проектов разбираем, почему нельзя подключаться к базе 1С напрямую средствами СУБД, какой из четырёх способов обмена выбрать под вашу конфигурацию, какие ограничения есть у базовых и облачных версий 1С и что уточнить у бухгалтера или системного администратора до старта работ.
Почему нельзя читать и писать в базу 1С напрямую через SQL
Когда владелец бизнеса или веб-разработчик без опыта в 1С сталкивается с тем, что выгрузка прайса на 20 000 позиций идёт слишком долго, часто звучит предложение: «Ведь клиент-серверная 1С хранит данные в обычной базе PostgreSQL или MS SQL Server. Давайте подключим сайт напрямую к таблицам СУБД и будем писать заказы и цены SQL-запросами в обход медленной 1С».
Технически таблицы справочников (_Reference*), документов (_Document*) и регистров сведений (_InfoRg*) действительно лежат в СУБД, но работать с ними напрямую в обход платформы «1С:Предприятие» нельзя по двум причинам:
- Прямой запрет в лицензионном соглашении 1С. Пользовательское соглашение запрещает обращаться к данным информационной базы средствами СУБД в обход штатных объектов платформы, кроме случаев, прямо описанных в документации разработчика. Запись напрямую однозначно нарушает условия лицензии.
- Разрушение целостности учёта и регистров. Платформа 1С не просто складывает строки в таблицы. Она хранит ссылки как бинарные GUID, держит данные в сеансовом кэше сервера 1С, рассчитывает и обновляет таблицы итогов регистров (по которым строятся все ведомости остатков и взаиморасчётов), ведёт версии объектов и регистрирует изменения в узлах планов обмена (для распределённых баз РИБ и синхронизации «Управление торговлей ↔ Бухгалтерия»).
Если внешний скрипт выполнит прямой INSERT или UPDATE в таблицу PostgreSQL, сервер 1С об этом не узнает: кэш разойдётся с диском, итоги регистров перестанут сходиться с движениями документов, а изменённый документ не уйдёт в бухгалтерскую базу. Вдобавок при очередном обновлении конфигурации имена внутренних таблиц и полей СУБД могут сдвинуться, и обмен встанет посреди рабочего дня. Любой обслуживающий франчайзи при виде прямой записи в SQL откажется брать базу на сопровождение.
Поэтому правило неизменно: любая запись в 1С (создание заказа, контрагента, загрузка цен поставщика, проведение оплаты) выполняется только через объектную модель платформы 1С, которая сама проверяет заполнение реквизитов, делает движения по регистрам и пересчитывает итоги.
Четыре способа связать сайт и 1С: сравнение
Выбор канала связи зависит от того, какая CMS стоит на сайте, как часто меняются остатки и есть ли у сервера 1С внешний статический IP-адрес.
| Способ обмена | Скорость синхронизации | Нужен ли программист 1С | Нужен ли веб-сервер (IIS/Apache) на стороне 1С | Для каких задач подходит лучше всего |
|---|---|---|---|---|
| 1. CommerceML 2 (XML) | По расписанию: раз в 10–60 минут (полная или только изменения) | Нет для типовых полей; да, если в 1С нестандартные реквизиты | Нет (инициатор — сама 1С, она стучится на URL сайта) | Типовой розничный интернет-магазин на WooCommerce или 1С-Битрикс (товары, базовые цены, остатки, заказы) |
2. Стандартный OData (/odata/standard.data) | Почти в реальном времени (REST JSON, 0,3–1,5 с на запрос) | Минимально (включить публикацию интерфейса и выдать права пользователю) | Да (или облако 1С:Фреш, где OData опубликован по умолчанию) | Небольшие B2B-порталы, сверка статусов заказов и счетов, быстрый старт без доработки конфигурации |
3. Собственный HTTP-сервис в расширении (.cfe) | В реальном времени (0,1–0,8 с на точечный запрос, пакетная обработка) | Да (пишется расширение без снятия конфигурации с поддержки) | Да (публикация HTTP-сервиса на Apache или IIS) | Магазины со сложным расчётом цен, B2B-кабинеты дилеров, прайс-сервисы поставщиков, резервирование по складам |
| 4. Обратный опрос (Long Polling из 1С к сайту) | Квази-реальное время (задержка 1–5 с или цикл раз в 1–5 минут) | Да (расширение или внешняя обработка в 1С) | Нет (1С сама открывает исходящее HTTPS-соединение к серверу сайта) | Когда база 1С стоит в офисе за роутером без внешнего IP и заказчик не хочет открывать порты наружу |
1. Типовой обмен по стандарту CommerceML 2
Во все торговые конфигурации («1С:Управление торговлей 11», «1С:УНФ», «1С:Комплексная автоматизация 2», «1С:ERP») встроен штатный узел обмена с сайтом по протоколу CommerceML 2. По расписанию 1С формирует XML-файлы каталога (import.xml), коммерческих предложений с ценами и остатками (offers.xml) и отправляет их по HTTPS на скрипт приёма сайта, а в ответ забирает XML с новыми заказами покупателей.
Плюс очевиден: на стороне типовой 1С ничего программировать не нужно, достаточно настроить отборы по складам и соглашениям и включить выгрузку только изменённых объектов. Но у CommerceML есть три ограничения, о которых нужно знать заранее:
- Пакетный характер. Это не мгновенный запрос в момент нажатия кнопки «Купить», а периодический сеанс связи. Если интервал обмена — 30 минут, остаток на сайте может отставать на полчаса.
- Тяжёлый парсинг при первой полной выгрузке. На каталоге в 15–30 тысяч товаров с множеством характеристик разбор многомегабайтного XML на слабом виртуальном хостинге легко упирается в лимит памяти PHP или таймаут
max_execution_time. - Нестандартная логика цен. Если цена товара для конкретного оптового покупателя считается в 1С по индивидуальной формуле от курса валюты, объёма партии и истории отгрузок, уложить её в стандартный
offers.xmlбез доработки не выйдет.
2. Стандартный интерфейс OData
Начиная с платформы 8.3.5, любую конфигурацию 1С можно за 15 минут опубликовать на веб-сервере (Apache или IIS) с автоматическим REST-интерфейсом по адресу https://ваш-сервер/база/odata/standard.data/. После этого сайт может читать и создавать справочники, документы и записи регистров обычными HTTP-запросами с JSON-телом без единой строчки кода на встроенном языке 1С.
Главное достоинство OData — он по умолчанию включён во всех базах облачного сервиса «1С:Фреш», куда разработчиков с собственными расширениями HTTP-сервисов не пускают. Недостаток — избыточность: типовой OData возвращает все реквизиты объекта разом, а чтобы собрать сложную карточку товара с остатками по пяти складам и тремя видами цен, сайту приходится делать серию последовательных запросов.
3. Собственные HTTP-сервисы в расширении конфигурации (.cfe)
Для нагруженных интернет-магазинов, личных кабинетов оптовых клиентов и прайс-сервисов мы используем собственные HTTP-сервисы, оформленные как расширение конфигурации (.cfe). Расширение подключается к типовой «Управлению торговлей» или «УНФ», не снимая основную конфигурацию с замка поддержки: бухгалтер или администратор продолжает ставить штатные обновления от 1С в один клик.
Внутри расширения создаётся ровно тот набор компактных методов, который нужен сайту, например:
GET /hs/site-api/stock?sku=…— мгновенная проверка свободного остатка по конкретному артикулу перед оплатой;POST /hs/site-api/order— приём заказа с сайта, поиск или создание контрагента по ИНН/телефону, создание документа «Заказ клиента», резервирование товара на складе и возврат номера заказа и ссылки на печатный счёт в PDF;POST /hs/site-api/supplier-price— пакетная загрузка прайс-листа поставщика с созданием и проведением документа установки цен.
В отличие от ручной работы менеджера в «толстом» или управляемом клиенте, где открытие и перепроведение большой формы тянет за собой интерфейсные события и может занимать десятки секунд, вызов серверной процедуры через HTTP-сервис отрабатывает за 0,2–1 секунду.
4. Обратный опрос (Long Polling), когда у 1С нет внешнего IP и веб-сервера
На практике в малом и среднем бизнесе сервер 1С часто стоит в офисе за обычным провайдерским роутером без белого IP-адреса, веб-сервер IIS или Apache на нём не поднят, а системный администратор справедливо отказывается пробрасывать порты с базой учёта наружу в интернет.
В таких проектах мы разворачиваем направление вызовов. Примером может служить наш осенний проект 2026 года — веб-сервис автоматизации прайс-листов и наценок поверх доработанной конфигурации 1С: вместо того чтобы сайт стучался в офис клиента, расширение внутри 1С само обращается по HTTPS к API нашего веб-сервиса на VPS.
Работает это так:
- Фоновое задание в 1С отправляет запрос
POST /api/1c/hello?wait=25к серверу сайта. Если заданий сейчас нет, сервер держит соединение открытым до 25 секунд (длинный опрос) и отвечает мгновенно, как только менеджер или покупатель совершил действие на сайте. - Получив пакет заданий (записать новую наценку или e-mail контрагента, загрузить прайс поставщика, сформировать прайс покупателя), расширение 1С выполняет их штатной объектной моделью: создаёт и проводит документы теми же процедурами, что и ручной ввод, сохраняя стопроцентное совпадение движений по регистрам и итогов.
- Если в офисе пропал интернет или компьютер с 1С выключили на ночь, ни один заказ на сайте не теряется: задания ждут в очереди на сервере сайта и обрабатываются сразу после включения 1С.
Архитектура быстрого обмена: почему между сайтом и 1С нужна своя база
Самая частая архитектурная ошибка при разработке интернет-магазина или личного кабинета — делать синхронные запросы к 1С при каждом открытии страницы каталога, фильтрации товаров или вводе поискового запроса. Даже если 1С отвечает за полсекунды, десять одновременных посетителей на сайте создадут очередь сеансов, положат веб-сервер публикации 1С и превратят работу кладовщиков в офисе в слайд-шоу.
Надёжная архитектура всегда трёхзвенная:
Покупатель в браузере ←(40–120 мс)→ Сервер сайта + своя БД (PostgreSQL) ←(асинхронная очередь)→ 1С:Предприятие
Витрина сайта, умный поиск, фильтры по характеристикам, расчёт доставки и личный кабинет работают исключительно со своей базой данных на VPS сайта. Чтение из локальной PostgreSQL занимает 40–120 миллисекунд независимо от того, включена ли сейчас 1С. А синхронизация с 1С идёт в фоне через очередь задач (Redis / таблица очереди в БД): изменения цен и остатков приходят дельтами, а оформленные на сайте заказы уходят в 1С за секунды после клика по кнопке «Оформить заказ», не заставляя покупателя смотреть на крутящийся индикатор загрузки.
Пример JSON-пакета заказа и идемпотентности при обмене
При передаче заказов через HTTP-сервис или очередь важно защититься от дублей: если связь оборвалась в момент ответа, сайт может отправить тот же заказ повторно. Для этого каждому заказу на сайте присваивается уникальный внешний ключ (external_id или UUID), по которому расширение 1С проверяет, не был ли этот заказ уже создан минуту назад:
{
"external_id": "ord-2026-10482",
"created_at": "2026-10-31T14:25:10+03:00",
"customer": {
"type": "legal",
"inn": "7701234567",
"kpp": "770101001",
"name": "ООО «СтройКомплект»",
"phone": "+79991234567",
"email": "zakupki@example.ru"
},
"delivery": {
"provider": "cdek_pvz",
"city_code": 44,
"pvz_code": "MSK102",
"price": 490.00
},
"items": [
{
"guid_1c": "8a1c3f20-4b12-11ef-9a10-00155d010203",
"characteristic_guid": "9b2d4e11-4b12-11ef-9a10-00155d010203",
"sku": "KNZ-POOL-10L",
"qty": 4,
"unit": "шт",
"price": 2450.00,
"vat_rate": "20%"
}
]
}
На стороне 1С обработчик сначала ищет документ «Заказ клиента» по реквизиту external_id. Если документ уже есть — просто возвращает его номер и статус без повторного создания. Если документа нет — ищет контрагента по ИНН (для юрлиц и ИП) или по нормализованному номеру телефона (для физлиц), подставляет договор и соглашение, заполняет табличную часть по guid_1c и проводит заказ.
Пять подводных камней обмена: характеристики, единицы измерения и возвраты
Даже при правильно выбранном протоколе проекты часто спотыкаются о расхождения между тем, как товар учитывается на складе в 1С, и тем, как его привык покупать человек на сайте:
- Характеристики номенклатуры против отдельных карточек. В 1С краска объёмом 1 л, 5 л и 20 л может быть заведена либо как одна номенклатура с тремя характеристиками, либо как три отдельные карточки справочника «Номенклатура». До начала вёрстки нужно решить, как склеивать их на сайте в одну карточку с переключателем фасовки (как мы сделали для 42 товаров с фасовками в магазине КЕНАЗ), чтобы покупатель не бродил по дублям в каталоге.
- Упаковки и дробные коэффициенты. В 1С ламинат или кабель может числиться в квадратных метрах или бухтах, а продаваться на сайте упаковками по 2,14 м². Если передавать на сайт «сырой» остаток без коэффициента пересчёта упаковки, в корзине появятся дробные количества и копеечные расхождения в сумме счёта (ошибка округления НДС в 1–2 копейки между сайтом и 1С блокирует проведение чека по 54-ФЗ).
- Резервирование между сайтом и маркетплейсами. Если с одного склада отгружаются розничный сайт, Ozon и оптовые менеджеры в 1С, выгружать на сайт нужно не общий физический остаток, а доступный к заказу остаток за вычетом уже созданных резервов.
- Разделение ответственности за контент («мастер-система»). В учётной базе товар часто называется по накладной поставщика:
Кран шар. ВР/НР 1/2" лат. усил. арт. 402. Для поискового продвижения и понятной витрины такое название не годится. Поэтому при настройке обмена поля жёстко делят: 1С владеет артикулом, ценой, ставкой НДС и остатком, а сайт владеет человеческим названием, SEO-заголовками, фотографиями, фильтрами и прикреплёнными сертификатами. - Обратная синхронизация статусов и отмен. Обмен должен работать в обе стороны: если менеджер в 1С заменил отсутствующую позицию по согласованию с клиентом или отменил неоплаченный заказ, статус и состав заказа в личном кабинете на сайте должны обновиться автоматически, а резерв — вернуться в доступный остаток.
Какие лицензии и версии 1С подходят для интеграции с сайтом
Перед тем как закладывать в смету автоматический обмен, проверьте, какая именно поставка 1С куплена у компании. По официальным правилам лицензирования «1С:Предприятия 8» (сверено по прайсу и FAQ v8.1c.ru в октябре 2026 года) между версиями есть жёсткие технические границы:
- Базовые версии («1С:Управление торговлей Базовая» за 10 000 ₽, «1С:УНФ Базовая» за 7 000 ₽, «1С:Бухгалтерия 8 Базовая» за 4 900 ₽): рассчитаны на одного пользователя в файловом режиме. В Базовых версиях нельзя менять конфигурацию, нельзя подключать расширения с собственными HTTP-сервисами, нет работы в клиент-серверном режиме и через веб-клиент. На Базовой версии возможен только штатный файловый обмен выгрузкой по расписанию, пока запущен пользовательский сеанс. Если бизнесу нужен полноценный двусторонний обмен через HTTP-сервисы и работа нескольких сотрудников, потребуется апгрейд на версию ПРОФ.
- Версии ПРОФ («1С:УТ 11 ПРОФ» — 39 700 ₽, «1С:УНФ ПРОФ» — 30 600 ₽): поддерживают расширения конфигурации, публикацию HTTP- и Web-сервисов, интерфейс OData, работу в локальной сети и на сервере «1С:Предприятия». Для получения штатных обновлений версий ПРОФ требуется действующий договор 1С:ИТС (1С:КП).
- Облако «1С:Фреш»: отличный вариант для быстрого старта без собственного сервера, где у каждой базы сразу открыт стандартный интерфейс OData. Но опубликовать внутри «Фреша» произвольный собственный HTTP-сервис нельзя — если проект требует нестандартного API на стороне 1С, базу размещают на собственном сервере или в облаке хостера с доступом к веб-публикации.
Что подготовить до оценки интеграции: 7 вопросов владельцу базы
Чтобы разработчик сразу назвал точную цену и срок интеграции в договоре, а не менял смету посреди проекта, перед стартом нужно ответить на семь вопросов:
- Какая конфигурация и редакция установлена: УТ 11.5, УНФ 3.0, Комплексная автоматизация 2, Бухгалтерия 3.0 или сильно доработанная нетиповая база?
- Какой режим работы базы и версия платформы: файловая база или клиент-серверный кластер (PostgreSQL / MS SQL), какая версия платформы 8.3 и какой режим совместимости выставлен у конфигурации?
- Где физически размещена база: компьютер в офисе, собственный сервер с белым IP, облако 1С:Фреш или арендованный сервер у хостера?
- Откуда в 1С берутся цены, скидки и остатки для сайта: один розничный вид цен или индивидуальные соглашения и наценки по контрагентам? Считается общий остаток на складе или свободный остаток за вычетом резервов?
- Кто является мастер-системой (источником правды): заводятся ли новые товары, фотографии и описания в 1С или в админке сайта? Если описания и SEO-поля заполняет контент-менеджер на сайте, обмен из 1С не должен затирать их при следующей выгрузке цен.
- Какой объём каталога и частота обновлений: 300 товаров со сменой цен раз в неделю или 40 000 позиций от десятка поставщиков с обновлением каждые 15 минут?
- Есть ли штатный программист 1С или обслуживающий подрядчик: кто выдаст тестовую копию базы (с обезличенными персональными данными клиентов по 152-ФЗ) и поставит расширение в рабочую базу при запуске?
Сколько стоит интернет-магазин и интеграция с 1С
В студии ДАКОД разработка интернет-магазина под ключ стоит от 120 000 ₽ и занимает 3–5 недель. В базовую стоимость уже входят три концепта дизайна до старта вёрстки, каталог с фильтрами и поиском, корзина, подключение онлайн-оплаты (ЮKassa, CloudPayments, Т-Банк), базовая синхронизация с 1С или МойСклад, настройка форм и cookie по 152-ФЗ и гарантия 1 год по договору с фиксированной сметой.
Посмотреть, как мы строим каталоги с расчётами, документами и внешними интеграциями, можно в портфолио: интернет-магазин КЕНАЗ (калькулятор объёма бассейна, авторасчёт доставки и генерация накладных СДЭК, переезд с сохранением 357 из 380 адресов в поиске), магазин технических газов БаллонМирГаз на 37 городов Московской области и каталог типографии «Истоки». Если сайт у вас уже есть и нужно настроить или починить обмен с 1С — подключимся в формате отдельной задачи по ТЗ или в рамках поддержки сайта от 5 000 ₽ в месяц.