Юр. сторона и интеграции

Интеграция сайта с 1С: что реально нужно малому бизнесу

Обмен товарами, ценами, остатками и заказами между сайтом и 1С. Варианты интеграции, подводные камни обмена и сколько это стоит поддерживать.

12 минут чтения 2 Дмитрий Акиндинов
Содержание
  1. Что синхронизируют на самом деле
  2. Три способа связать сайт с 1С
  3. Битрикс и 1С: почему связка популярна и где болит
  4. WordPress, WooCommerce и 1С
  5. Типовые грабли обмена
  6. Кто владеет обменом после внедрения
  7. Чек-лист перед стартом интеграции
  8. Частые вопросы

Разброс цен на интеграцию с 1С от 30 до 300 тысяч объясняется объёмом обмена. Односторонняя выгрузка товаров и цен считается по нижней границе, двусторонний обмен с заказами, остатками и статусами по верхней. Настройка одного узла обмена занимает от четырёх часов.

Интеграция сайта с 1С в малом бизнесе почти всегда начинается с одной фразы: «надоело руками переносить цены». Дальше владелец идёт к интегратору, слышит вилку от 30 до 300 тысяч и зависает, потому что непонятно, за что такой разброс. Разберу, что именно синхронизируется между сайтом и учётной системой, какие три схемы обмена существуют, где связка ломается через полгода после внедрения и во сколько обходится её содержание. Материал для владельцев магазинов на Битриксе, WooCommerce и OpenCart, у которых учёт живёт в 1С.

Сайт и 1С, связанные стрелками синхронизации, с иконкой базы данных

Сразу оговорюсь про свою роль. Я не внедряю 1С и не пишу конфигурации. Я обслуживаю сайты, к которым обмен уже прикручен, и разбираю последствия, когда он падает в субботу с 8 000 товарами «нет в наличии». Так что смотрю на интеграцию со стороны эксплуатации, а не продажи проекта.

Что синхронизируют на самом деле

Слово «интеграция» в коммерческих предложениях означает пять разных вещей, и путаница между ними даёт тот самый разброс в цене.

  • Номенклатура. Названия, артикулы, описания, свойства, категории, картинки. Едет из 1С на сайт. Самая тяжёлая часть обмена: именно она таскает по сети мегабайты XML и сотни файлов изображений.
  • Цены. Один или несколько типов цен (розница, опт, акция). Обычно едут вместе с остатками отдельным файлом, потому что меняются чаще номенклатуры.
  • Остатки. По складам или суммарно. Меняются каждый час, и большинство спорных ситуаций у клиентов именно тут.
  • Заказы. Едут в обратную сторону: сайт отдаёт, 1С забирает и создаёт документ «Заказ покупателя». Обратно приходят статусы и признак оплаты.
  • Документы и контрагенты. Счета, УПД, карточки клиентов. В малом бизнесе нужно редко, но в B2B-магазинах без этого нет смысла в интеграции вообще.

Первые три пункта закрывает штатный обмен почти в любой связке. Заказы требуют аккуратной настройки. Документы почти всегда означают доработку конфигурации 1С, и вот тут ценник улетает в сотни тысяч.

Мой совет владельцу: перед разговором с интегратором выпишите на листе, что из пяти пунктов вам нужно прямо сейчас. Половина проектов «полной интеграции» на практике решается выгрузкой цен и остатков раз в час, а это самая дешёвая часть работы.

Три способа связать сайт с 1С

Штатный обмен CommerceML

1С умеет выгружать каталог и забирать заказы по протоколу CommerceML 2.x. Это XML-формат от самой фирмы 1С, ему больше пятнадцати лет, и он поддерживается всеми конфигурациями, где есть узел обмена с сайтом: Управление торговлей 11, Розница, Управление нашей фирмой, КА.

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

GET  /bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth
GET  /bitrix/admin/1c_exchange.php?type=catalog&mode=init
POST /bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=import.xml
GET  /bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=import.xml
GET  /bitrix/admin/1c_exchange.php?type=sale&mode=query
GET  /bitrix/admin/1c_exchange.php?type=sale&mode=success

Шесть строк выше это весь протокол. Если вы понимаете, что происходит на каждом шаге, вы уже способны диагностировать 80 процентов сбоев обмена, потому что падает он всегда на конкретном шаге, и в логе 1С видно, на каком именно.

Плюс схемы: ничего не надо программировать, обмен настраивается галочками с обеих сторон. Минус: формат жёсткий. Хотите передавать свои поля, характеристики в нестандартном виде или сложные скидки, начинается доработка.

Готовый модуль или плагин

Для CMS, которые CommerceML из коробки не понимают, есть готовые решения. Для WooCommerce это плагины семейства «Обмен с 1С» (бесплатная базовая версия и платная редакция в районе 6 000 руб. в год). Для OpenCart модули с Маркета от 5 000 до 15 000 руб. единоразово. Для MODX и самописных сайтов готового обычно нет.

Плагин прикидывается тем же адресом обмена, что и у Битрикса, и разбирает те же XML. То есть со стороны 1С настройка одинаковая, разница только в том, как сайт раскладывает данные по своим таблицам.

Плюс: цена. Минус: качество плагина определяет судьбу вашего каталога. У бесплатных версий регулярно отваливается работа с вариациями товара и с несколькими типами цен.

Свой обмен через API

Третий путь: не использовать CommerceML вообще. На стороне 1С публикуется HTTP-сервис (или используется OData из коробки), на стороне сайта пишется клиент, который дёргает нужные методы по расписанию. Или наоборот, 1С шлёт данные в REST API сайта.

Так делают, когда нужны реальные остатки в момент оформления заказа, резервирование, персональные цены для конкретного клиента B2B или обмен чаще раза в 15 минут. Стоит дороже всего и требует, чтобы 1С была доступна из интернета или через VPN. Для облачной 1С:Фреш это отдельная история, там публикация HTTP-сервисов доступна не на всех тарифах.

СхемаЧто покрываетСтартовая ценаПоддержка в месяц
Штатный CommerceML на Битриксекаталог, цены, остатки, заказы15 000 — 40 000 руб. настройка2 000 — 5 000 руб.
Плагин для WooCommerceкаталог, цены, остатки, заказы6 000 руб. лицензия плюс 10 000 — 25 000 настройка3 000 — 6 000 руб.
Доработка CommerceML под свои полянестандартные свойства, скидки40 000 — 120 000 руб.5 000 — 10 000 руб.
Свой обмен через HTTP-сервисы 1Сонлайн-остатки, резерв, B2B-ценыот 150 000 руб.от 10 000 руб.

Цены ориентировочные, по рынку 2026 года для малого бизнеса, без стоимости лицензий 1С и работ на стороне учёта. Специалист по 1С почти всегда считается отдельно: его ставка сейчас 3 000 — 5 000 руб. в час, и на настройку узла обмена уходит от 4 часов.

Битрикс и 1С: почему связка популярна и где болит

Связка родная: обе системы делает один рынок, и модуль обмена лежит в редакциях с интернет-магазином, то есть от «Малого бизнеса» и выше. На «Старте» интеграции с каталогом не будет, сколько бы вам ни обещали.

Что работает хорошо: сопоставление товаров по GUID, свойства из 1С приезжают в инфоблок автоматически, заказы забираются без танцев, есть журнал обмена прямо в админке.

Где болит регулярно:

Первое, лицензия. Обмен требует активной техподдержки Битрикса для обновлений модуля. Когда лицензия протухает, обмен продолжает работать, но ломается на первом же обновлении 1С, где поменяли формат. Про то, что происходит с сайтом дальше, я писал в материале про истёкшую лицензию Битрикс.

Второе, производительность. Полный обмен каталога на 10 000 позиций делает десятки тысяч запросов на запись в b_iblock_element и b_iblock_element_property. На shared-хостинге это упирается в лимит CPU, сайт начинает отдавать 503 обычным посетителям. Симптомы и как их ловить, разбирал в статье про лимиты shared-хостинга.

Третье, кэш. После обмена нужно чистить кэш инфоблоков и композит, иначе новые цены появятся на сайте через несколько часов, а владелец будет уверен, что обмен сломался.

WordPress, WooCommerce и 1С

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

Адрес обмена выглядит примерно так:

https://example.ru/?wc-1c=exchange

В настройках узла обмена в 1С этот URL вбивается целиком, дальше указывается пользователь WordPress с правами администратора магазина и его пароль. И вот тут первая мина: пароль лежит в 1С открытым текстом, а учётка обычно имеет полный доступ к сайту. Заводите отдельного пользователя только для обмена, с ролью, которой хватает на товары и заказы, и с длинным случайным паролем.

Вторая мина WooCommerce: он хранит товары как записи в wp_posts, а все атрибуты в wp_postmeta. Каталог на 5 000 товаров с вариациями превращается в 400 000 строк метаданных. Обмен эти строки перезаписывает целиком при каждой полной выгрузке. На дешёвом тарифе хостинга такой магазин живёт плохо и без всякого обмена, подробности в разборе WooCommerce на shared-хостинге.

Практический рецепт для WooCommerce: полный обмен ночью раз в сутки, обмен цен и остатков каждый час, порция 100 элементов, wp-cron заменён на системный крон. И обязательно объектный кэш, иначе после каждой выгрузки первые запросы к каталогу будут по 3 — 4 секунды.

Типовые грабли обмена

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

Дубли товаров

Самая частая беда. Товары на сайте заводили руками, у них нет внешнего кода из 1С. Приезжает обмен, не находит соответствия по GUID и создаёт вторую карточку. Утром в каталоге 3 400 товаров вместо 1 700, половина без картинок и с нулевым остатком.

Лечится только до запуска: перед первым обменом нужно сопоставить существующие карточки с номенклатурой 1С и прописать им внешние коды. Это ручная или полуручная работа на несколько часов, и её любят пропустить ради экономии. После первого прогона чистка дублей стоит дороже сопоставления в три раза, потому что заказы и SEO-адреса уже разъехались.

Слетевшие картинки

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

Проверяется в настройках обмена флагом вроде «не удалять изображения при частичной выгрузке». Если такого флага нет, значит, полная выгрузка должна быть единственным режимом обмена картинками, а всё остальное трогать медиа не должно.

Обмен идёт час и обрывается

Классика: 1С шлёт файл на 80 МБ, PHP умирает по max_execution_time, обмен начинается заново, и так по кругу. В логе 1С будет «Ошибка при выполнении обмена» без деталей.

php_value max_execution_time 600
php_value memory_limit 512M
php_value post_max_size 128M
php_value upload_max_filesize 128M

Но лимиты это половина решения. Вторая половина в настройках самой 1С: «количество элементов в одном пакете данных» надо ставить 100 — 500 вместо дефолтных 0 (без ограничения), и размер файла ограничивать 10 — 20 МБ. Тогда обмен пойдёт порциями и переживёт разрыв.

Каталог уехал в ноль

Самый дорогой сценарий. В 1С поменяли склад или тип цен, в настройках обмена он не выбран, выгрузка ушла с нулями. Через десять минут весь сайт показывает «нет в наличии», реклама крутится, заявок нет.

Отсюда правило: любое изменение настроек обмена сначала прогоняется на копии сайта. Не на боевом «аккуратненько». Как поднять такую копию малой кровью, писал в статье про staging для маленького сайта.

Заказы дублируются или теряются

Обмен заказами двусторонний, и оба конца имеют право менять статус. Если в 1С заказ отменили, а на сайте менеджер в ту же минуту перевёл его в «доставлен», победит тот, кто выгрузился последним. Договоритесь заранее, какая система хозяин статуса заказа, и запретите менять его во второй.

Отдельно: если сайт отдаёт заказ, но не получает ответ mode=success из-за таймаута, 1С заберёт этот заказ снова при следующем обмене. В бухгалтерии это выглядит как задвоение продаж.

Блокировка базы во время обмена

Обмен держит длинные транзакции и блокирует таблицы товаров. Посетитель в этот момент видит зависший каталог или ошибку оформления. На MySQL 5.7 с InnoDB это лечится порциями поменьше и переносом полного обмена на ночь. Если магазин работает круглосуточно, обмен цен и остатков делают маленькими пачками раз в 15 минут вместо одного тяжёлого прогона.

Кто владеет обменом после внедрения

Момент, который в коммерческих предложениях не обсуждают. Интегратор настроил обмен, подписал акт и ушёл. Через полгода обмен встал. Владелец пишет интегратору, тот отвечает через три дня «у нас проект закрыт, обращайтесь на почту поддержки».

Что должно остаться у вас на руках после внедрения:

  • Реквизиты доступа: логин и пароль пользователя обмена на сайте, кто их знает, где хранятся.
  • Точный URL обмена и понимание, как он работает (те шесть строк протокола выше).
  • Где лежит лог обмена на сайте и как долго он хранится.
  • Расписание: что и когда выгружается, кто это расписание меняет.
  • Регламент отката: что делать, если каталог уехал в ноль. Из какого бэкапа и как быстро восстанавливается таблица товаров.
  • Контакт специалиста по 1С. Половина проблем обмена решается на стороне учёта, и без этого контакта веб-подрядчик упрётся в стену.

Разделение зон ответственности выглядит примерно так. Сторона 1С отвечает за состав выгрузки, склады, типы цен и настройки узла обмена. Сторона сайта отвечает за доступность адреса обмена, лимиты PHP, скорость разбора XML, кэш и бэкапы перед полной выгрузкой. Пересечение только одно: формат данных, и именно там обычно спорят.

В моей абонентке обмен с 1С входит как объект наблюдения: мониторинг адреса обмена, проверка, что выгрузка прошла и время последнего успешного обмена не старше суток, бэкап таблиц товаров перед полным обменом, разбор ошибок в логе. Что не входит: доработка конфигурации 1С, разработка новых механизмов обмена с нуля и дизайн. Это отдельные проектные работы, и делать их должен специалист по 1С. Ориентиры по деньгам смотрите в тарифах.

Если интеграций несколько (1С плюс CRM плюс служба доставки), логика та же самая, только точек отказа больше и разбор инцидента дольше.

Чек-лист перед стартом интеграции

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

  1. Выписали, что синхронизируем: номенклатура, цены, остатки, заказы, документы. Отметили, что нужно сейчас, а что можно потом.
  2. Знаете свою конфигурацию 1С и её версию. УТ 11.5 и Розница 3 обмениваются по-разному.
  3. Проверили, что редакция CMS вообще поддерживает обмен (для Битрикса это «Малый бизнес» и выше).
  4. Решили, кто хозяин каждой сущности: цену меняем только в 1С, описание только на сайте, статус заказа только там-то.
  5. Сопоставили существующие товары с номенклатурой 1С по внешним кодам. До первого обмена, не после.
  6. Посчитали объём: сколько товаров, сколько картинок, сколько мегабайт в одной полной выгрузке.
  7. Проверили лимиты хостинга: время выполнения, память, размер загружаемого файла, лимит CPU.
  8. Завели отдельного пользователя для обмена с минимальными правами и уникальным паролем.
  9. Убедились, что адрес обмена работает только по HTTPS (пароль ходит в заголовке базовой авторизации).
  10. Подняли копию сайта для тестов и прогнали первый обмен там.
  11. Настроили бэкап таблиц товаров перед полной выгрузкой и проверили, что восстановление реально работает.
  12. Договорились о расписании обменов и о том, кто и как узнаёт, что обмен не прошёл.
  13. Зафиксировали в договоре, кто сопровождает обмен после сдачи и по какой ставке.

Отдельный совет по срокам. Нормальная типовая интеграция каталога и заказов на существующем магазине занимает 2 — 3 недели календарно, из которых работа руками составляет несколько дней, а остальное это согласование состава данных и тестовые прогоны. Если вам обещают «за два дня под ключ», уточните, что именно будет сделано за эти два дня. Обычно это чистая настройка галочек без сопоставления товаров, а сопоставление потом станет вашей проблемой.

И про экономику. Обмен окупается там, где есть ручной труд, который он заменяет. Если товаров триста и цены меняются раз в квартал, интеграция за 60 000 руб. будет окупаться годами, дешевле раз в квартал загружать CSV. Если позиций несколько тысяч и остатки живые, ручной перенос перестаёт быть возможным физически, и вопрос стоит уже не про окупаемость, а про то, работает магазин или нет.

Если у вас обмен уже стоит и периодически падает, а разбираться некому, напишите через форму на главной. Обычно я начинаю с чтения лога обмена и списка последних изменений с обеих сторон: в девяти случаях из десяти виноват не сам обмен, а поменявшаяся настройка, о которой веб-подрядчику не сказали.

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

Что синхронизируют между сайтом и 1С

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

Сколько стоит интеграция сайта с 1С

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

Почему обмен ломается

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

Кто отвечает за обмен, когда его настроили

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

Передайте техническую часть в надёжные руки.

Слежу за хостингом, бэкапами и обновлениями. Когда что-то пойдёт не так – звоните мне, не своему программисту, не в спортзал и не маме.

Короткие вопросы по теме

Все вопросы по теме "Юр. сторона и интеграции"

Заявка

Обсудим задачу

Напишите имя и телефон, выберите удобный канал. Перезвоню или напишу в течение часа в рабочее время.

Куда удобнее ответить?