+7 988 353-52-54 kompman1@yandex.ru

г. Краснодар

Обмен сайта с 1С по CommerceML: настройка за вечер

Команда 100300 10 мин чтения

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

Обмен сайта с 1С по CommerceML: настройка за вечер

Чтобы настроить обмен 1С с сайтом, нужно сделать три вещи. На сайте задать логин и пароль обмена и скопировать адрес. В 1С создать узел обмена с типом сайта «1С-Битрикс» (протокол CommerceML) и вписать туда этот адрес, логин и пароль. После первой выгрузки выбрать, какой тип цен 1С считать розничной ценой сайта. Дальше 1С сама приходит на сайт: привозит товары, цены и остатки и забирает заказы.

Коротко:

  • Обмен работает по стандартному протоколу CommerceML — его понимают 1С:Управление торговлей, УНФ, Комплексная автоматизация, ERP, типовая обработка «Обмен с сайтом» и МойСклад.
  • Инициатор всегда 1С: сайт ничего не «тянет» сам, он отвечает на запросы 1С.
  • Цены и остатки всегда приходят из 1С, а описания и фото, которые вы переписали на сайте, можно защитить от перезаписи.
  • Заказы уходят в 1С с покупателем, составом и доставкой, обратно приходят статусы и оплата.
  • Больше половины проблем — это заголовок авторизации на хостинге и лимит времени PHP. Оба лечатся за пять минут.

Что умеет обмен 1С с сайтом по CommerceML

CommerceML — это формат XML-файлов и порядок запросов, о котором когда-то договорились 1С и 1С-Битрикс. Поэтому в настройках 1С сайт почти всегда называется «1С-Битрикс», даже если у вас другая CMS. В интернет-магазине 100300 CMS обмен с 1С входит в модуль «Интернет-магазин», отдельно его покупать не нужно.

ЧтоНаправлениеЧто получается на сайте
Группы товаров1С → сайтКатегории каталога, узнаются по Ид группы: переименование в 1С переименует категорию, а не создаст новую
Номенклатура1С → сайтТовары: название, артикул, штрихкод, описание, картинки, вес
Свойства1С → сайтХарактеристики для фильтра; «Производитель», «Бренд», «Марка» становятся брендом
Характеристики товара1С → сайтВарианты (цвет, размер) у одного товара
Цены1С → сайтРозничная цена, зачёркнутая цена, цены для групп покупателей (опт)
Остатки1С → сайтОстаток варианта — сумма по выбранным складам
Заказысайт → 1СДокумент «Заказ товара» с контрагентом, строками и доставкой
Статусы и оплата1С → сайтСтатус заказа и отметка об оплате

Повторная выгрузка тех же файлов ничего не меняет: сайт сравнивает пришедшее с тем, что уже есть, и записывает только изменившееся. Большие файлы обрабатываются частями — сайт отвечает 1С «progress», и 1С спрашивает снова, пока загрузка не закончится.

Как настроить обмен 1С с сайтом: шаги на сайте

Со стороны сайта работы минут на десять. Нужны права администратора магазина.

  1. Логин и пароль обмена. «Настройки магазина» → «Выгрузки и 1С». Придумайте отдельный логин и пароль — не от админки. Пароль хранится только в виде хеша. Пока пароль не задан, обмен выключен.
  2. Адрес обмена. «Магазин» → «Импорт и экспорт» → вкладка «Обмен с 1С». Скопируйте «Адрес сайта для обмена» — он вида https://ваш-сайт.ru/shop/1c/exchange. Адрес /bitrix/admin/1c_exchange.php тоже работает: некоторые конфигурации 1С подставляют его сами.
  3. Проверка. Там же нажмите «Проверить». Сайт проверит логин и пароль, папку для файлов, лимиты PHP, доступность адреса, передачу заголовка авторизации веб-сервером, cron и время последнего обмена. Красная строка — это то, что нужно исправить до настройки 1С.
  4. Новые товары. На той же вкладке выберите, как появляются новые товары из 1С: сразу опубликованными или черновиками. Для первого запуска удобнее черновики — посмотрите, как всё выглядит, и опубликуйте разом.
  5. Cron — по желанию. Большие выгрузки доходят до конца и без него: фоновые задания продвигаются после запросов к сайту. С cron (одна строка в планировщике хостинга) быстрее и не зависит от посещаемости.
Вкладка «Обмен с 1С» в разделе «Импорт и экспорт»: адрес обмена, проверка подключения и последние обмены
«Магазин → Импорт и экспорт»: здесь же лежат импорт из Excel, экспорт, история заданий и обмен с 1С.

Настройка в 1С: узел обмена с сайтом

Названия пунктов меню отличаются от конфигурации к конфигурации. Вот где искать:

  • УТ 11, КА, ERP: «НСИ и администрирование» → «Интеграция с другими программами» → «Обмен с сайтами»;
  • УНФ: «Настройки» → «Интеграция» → «Обмен с сайтом»;
  • старые конфигурации: обработка «Обмен с WEB-сайтом».
  1. Создайте новый узел обмена. Тип сайта — «1С-Битрикс» (или другой сайт с протоколом CommerceML).
  2. Вставьте адрес обмена, логин и пароль с сайта.
  3. Отметьте, что выгружать: товары (с картинками), цены, остатки. Для заказов включите «Загружать заказы с сайта».
  4. Архив (zip) не включайте — он не нужен, сайт сам сообщает 1С, что принимает файлы без архива.
  5. Нажмите «Проверить подключение» — 1С должна ответить «успешно».
  6. Запустите первую полную выгрузку. Она самая долгая — идут все товары и картинки; сколько займёт, зависит от размера каталога, фото и хостинга. Следующие обмены передают только изменения и проходят быстрее.

Результат видно сразу в двух местах: в таблице «Последние обмены» на вкладке «Обмен с 1С» (каждый запрос 1С и ответ сайта) и в «Истории» (задания с пометкой «1С», отчётом и файлом ошибок).

Типы цен 1С и склады

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

  • Розничная цена. По умолчанию выбирается тип, в названии которого есть «Розн…», иначе первый. Проверьте, что выбран нужный: если сайт показывает закупочные цены, причина почти всегда здесь.
  • Старая (зачёркнутая) цена. Можно указать отдельный тип цен — тогда на сайте появится скидка «было — стало».
  • Цены групп покупателей. Тип «Оптовая» можно связать с группой покупателей «Оптовики» — они увидят свою цену после входа. Если тип цен в 1С называется так же, как группа на сайте, связь подхватится сама.

Склады из 1С попадают в «Сопоставление». Для каждого склада выберите: «В общий остаток» (по умолчанию), «Не учитывать» или конкретный склад модуля «Города», если у вас магазины в разных городах. Остаток на сайте — сумма выбранных складов, отрицательный остаток превращается в ноль. Типы цен можно так же связать с ценовыми зонами городов: «Розница Юг» — цена для зоны «Юг».

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

Загрузка заказов с сайта в 1С

Когда 1С приходит за заказами, сайт отдаёт все заказы, изменённые после последнего подтверждённого обмена, — по 500 за раз, остальные уйдут в следующий. В каждом заказе:

  • номер, дата и сумма;
  • контрагент — физлицо или организация с ИНН и КПП, адрес, e-mail, телефон;
  • строки заказа — если товар пришёл из 1С, строка ссылается на её же номенклатуру;
  • доставка отдельной строкой-услугой, скидки;
  • реквизиты: метод оплаты, «Заказ оплачен», «Отменён», статус заказа, способ и адрес доставки, трек-номер.

Обратно 1С присылает статусы и оплату. Чтобы статусы понимались одинаково, в настройках вкладки есть «Статусы заказов»: слева статус сайта, справа — как он называется в 1С. Отметка оплаты в 1С записывает неоплаченный остаток как оплату переводом — один раз. Покупателю письмо при этом не уходит, а выполненный или отменённый заказ из 1С не открывается заново: это решает менеджер.

Чего обмен пока не делает: если в 1С поменяли состав заказа (убрали позицию, поменяли количество), на сайт это не вернётся — приходят только статус и оплата. Это ограничение самого CommerceML у большинства CMS, но знать о нём стоит.

Защита правок на сайте

Типичная боль: SEO-специалист переписал описания ста товаров, а ночная выгрузка из 1С вернула старые. В разделе «Как 1С обновляет сайт» для каждой части товара выбирается своё правило.

Часть товараПо умолчаниюМожно поставить
НазваниеВсегда из 1СТолько если пусто / Не трогать
ОписаниеТолько если пустоВсегда из 1С / Не трогать
ФотоТолько если пустоВсегда из 1С / Не трогать
ХарактеристикиВсегда из 1СТолько если пусто / Не трогать
КатегорииВсегда из 1СТолько если пусто / Не трогать
БрендВсегда из 1СТолько если пусто / Не трогать
Цены, остатки, варианты, пометка удаленияВсегда из 1С — это и есть смысл обмена

«Только если пусто» — самый полезный режим: новый товар получит описание из 1С, а описание, которое вы уже переписали на сайте, не затрётся. SEO-заголовки и стикеры каталог 1С не трогает вообще.

Отдельно настраивается, кто ведёт категории. «Ведёт 1С» — группы становятся категориями и следуют за переименованием и переносом. «Ведёт сайт» — структура каталога ваша, а группы 1С раскладываются по категориям только по сопоставлению. Группу со служебными позициями (тара, упаковка, услуги) можно пометить «Не загружать» — её товары и подгруппы на сайт не попадут.

Что с товарами, удалёнными в 1С

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

После полной выгрузки сайт сравнивает, какие товары из 1С были в файлах, и с пропавшими поступает по настройке «Удалённое в 1С»: «В черновик» (по умолчанию), «Остаток 0», «В корзину» или ничего. Товар, снятый так, публикуется снова, если вернётся в выгрузку. Товары, которые вы сняли вручную, сайт сам не публикует.

Есть предохранитель: если пропадает больше 30 % товаров разом, сайт ничего не снимает и присылает уведомление. Так ошибка в фильтре выгрузки 1С не опустошит витрину за одну ночь.

Обмен 1С с сайтом не выгружает: типичные ошибки

СимптомПричинаЧто сделать
1С пишет «Неверный логин или пароль», хотя они верныВеб-сервер не передаёт PHP заголовок авторизацииКнопка «Проверить» это покажет. Apache: строка RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] в .htaccess; nginx + PHP-FPM: fastcgi_param HTTP_AUTHORIZATION $http_authorization;
Обмен зависает на «progress» или падает по таймаутуХостинг обрывает долгие запросыУвеличьте max_execution_time или уменьшите «Время на один запрос 1С» на вкладке (по умолчанию 20 секунд)
После нескольких попыток 1С вообще не пускают10 неверных паролей с одного адреса за 15 минут — временная блокировкаИсправьте пароль в узле обмена и подождите 15 минут
Товары пришли, цен нет или они закупочныеНе выбран розничный тип цен или цены не отмечены в узлеВыберите тип цен на вкладке «Обмен с 1С», проверьте галочку «цены» в 1С
Остатки везде нольСклад в «Не учитывать» или остатки не выгружаютсяПроверьте «Сопоставление» складов и настройку узла обмена
Товары есть, но на сайте их не видноНовые товары приходят черновикамиОпубликуйте их или смените «Новые товары из 1С»
Загрузили import.xml вручную через «Импорт» — ошибкаCommerceML принимается только по протоколу обменаЗапустите обмен из 1С; мастер импорта узнаёт такой файл и подскажет
Заказы не появляются в 1СВ узле не включена загрузка заказов, или заказы уже были переданыВключите «Загружать заказы с сайта»; сайт отдаёт заказы, изменённые после последнего успешного обмена
Удалённые в 1С товары висят на сайтеВыгрузка «только изменения» или сработал порог 30 %Сделайте полную выгрузку; посмотрите уведомление и итог уборки в «Последних обменах»

Если что-то сломалось ночью, вы узнаете об этом утром: уведомление «Обмен с 1С» приходит на почту и в Telegram, когда загрузка упала, когда удалённое не снято из-за порога и когда 1С не выгружала каталог дольше заданного числа часов.

Итог: обмен с 1С без программиста

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

Если 1С для вашего ассортимента — слишком тяжёлый инструмент, посмотрите на интеграцию МойСклад с сайтом или на импорт товаров из Excel: для каталога в пару сотен позиций его часто хватает. Переезжаете с 1С-Битрикс и хотите сохранить обмен — прочитайте, как перенести магазин с Битрикса: узел обмена в 1С достаточно перенастроить на новый адрес. Сравнение движков с поддержкой CommerceML — на странице CMS с обменом 1С, подробности каждого поля — в справке «Импорт товаров и обмен с 1С». Не хотите разбираться сами — настроим магазин и обмен за вас.

Посмотреть вкладку «Обмен с 1С» вживую можно без регистрации: откройте демо-админку и зайдите в «Магазин → Импорт и экспорт».

#Обмен с 1С#1С

Вопросы и ответы

Какие конфигурации 1С подходят для обмена с сайтом?
Любые, которые умеют обмен с сайтом по CommerceML: 1С:Управление торговлей, УНФ, Комплексная автоматизация, ERP и старые конфигурации с обработкой «Обмен с WEB-сайтом». МойСклад тоже работает по этому протоколу.
Нужно ли платить за обмен с 1С отдельно?
Нет. В 100300 CMS обмен с 1С по CommerceML входит в модуль «Интернет-магазин». Отдельные платные коннекторы и сервисы-посредники не нужны.
Затрёт ли 1С описания, которые я переписал на сайте?
По умолчанию нет: описание и фото обновляются из 1С, только если на сайте пусто. Для названия, характеристик, категорий и бренда правило тоже можно поменять на «Только если пусто» или «Не трогать».
Как часто 1С обменивается с сайтом?
Так часто, как настроено расписание в узле обмена 1С: сайт отвечает на запросы 1С, но сам их не инициирует. Расписание выбираете вы; удобно часто выгружать цены и остатки и раз в сутки делать полную выгрузку каталога.
Почему 1С пишет «Неверный логин или пароль», хотя они правильные?
Чаще всего хостинг не передаёт в PHP заголовок авторизации. Кнопка «Проверить» на вкладке «Обмен с 1С» это покажет, а лечится одной строкой в .htaccess или в конфигурации nginx.
Приходят ли изменения заказа из 1С обратно на сайт?
Приходят статус и оплата. Изменения состава заказа, сделанные в 1С, на сайт не возвращаются — их менеджер правит в заказе на сайте сам.