Обновления интеграции с 1С в релизе 1С-Битрикс: Управление сайтом 14.0

14-й релиз платформы "1С-Битрикс: Управление сайтом" включил в себя множество серьезных улучшений для владельцев интернет-магазинов.

14-й релиз платформы "1С-Битрикс: Управление сайтом" включил в себя множество серьезных улучшений для владельцев интернет-магазинов, среди которых:
  • новый универсальный интернет-магазин 
  • адаптивный дизайн 
  • полная поддержка SKU 
  • единицы измерения 
  • наборы и комплекты 
  • улучшения платежных систем и служб доставки 
  • улучшения складского учета 
и многое другое.

Конечно, не забыли об интеграции 1С-Битрикс с 1С:

916116ed27427e30f8b3a22fc2eccec45273c7b1.jpg

Основной объем нововведений связан с оптимизацией выгрузки и повышению стабильности ее работы на больших объемах данных.

Интеграцию используют тысячи клиентов, и многие из них сталкиваются с задачами выгрузки достаточно большого каталога товаров (пусть даже тысячи и десятки тысяч наименований) на сайты, которые работают на shared-хостинге или VPS. Да, обычно 1С настраивается на обмена только измененными данными, но полная выгрузка всего каталога - это не редкий сценарий. Кроме первой выгрузки - это хороший способ привести все данные на сайте в синхронное состояние с 1С.

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

Когда из 1С товаров выгружается много, сайт принимает достаточно большой объем данных в виде набора XML файлов (мегабайты и десятки мегабайт). Чтобы защититься от ограничений хостинга на максимальное время работы PHP скрипта, максимальный объем загружаемых данных методом POST, мы предусмотрели возможность настройки в обмене соответствующих лимитов. Но эти настройки позволяют только корректно по частям принять от 1С эти данные, разархивировать их и передать на обработку. После этого работа все равно выполняется с итоговыми большими файлами.

Поскольку обработка ведется средствами PHP, то для разбора больших XML-файлов скриптам требуется необходимый объем памяти. Для больших каталогов может требоваться и 512Мб, и 1Гб и больше. К сожалению, далеко не все клиенты имеют такой объем памяти на своем тарифе хостинга. И выгрузка из 1С прерывается с ошибкой.

Здесь очень сложно что-то оптимизировать в продукте, поскольку работа с большими XML априори требует достаточного количества ресурсов.
Безусловно, у любой технологии есть и преимущества, и недостатки. И при всех преимуществах кроссплатформенности, интероперабельности, структурированности XML - разбор этих данных всегда будет медленнее, чем текстового файла. И на больших объемах это заметнее.

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

Итак,теперь о том, как теперь с этим можно бороться.

1) Пошаговая (пакетная) выгрузка каталога из 1С на сайт

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

В новой версии модуля обмена с сайтом появились следующие дополнительные настройки:

384d58f3405f027f0aea509580b8327eace6009e.jpg

Включая опцию "Использовать пошаговую выгрузку данных" включается новый механизм, который при запуске выгрузки на сайт работает следующим образом:
  1. Весь каталог товаров "нарезается" на пакеты с заданным количеством товаров.
  2. Для каждого пакета 1С генерирует наборы файлов import.xml и offers.xml для отправки на сайт, и строит пошаговый алгоритм выгрузки
  3. Каждый пакет отправляется на сайт в обычном сеансе обмена данными (при передаче каждый пакет дополнительно может быть разбит на блоки данных для защиты от лимитов хостинга
  4. Сайт принимает данные от 1С и производит их обработку и импорт
  5. Сайт сообщает 1С результат обработки файлов: success или возникшую ошибку
  6. Результат шага сохраняется в журнале обмена 1С
  7. Пункты 3-6 выполняются до тех пор, пока на сайт не будет передан последний пакет данных
  8. Если ни на одном шаге выгрузки не возникла ошибка, обмен считается успешно завершенным!


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

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

А что же будет, если при обработке очередного пакета возникла ошибка?
Ничего, 1С отметит это в журнале выгрузки, и перейдет к передаче на сайт следующего пакета.
  1. Если после передачи последнего пакета в журнале выгрузки 1С обнаружены шаги с ошибками, то обмен не завершается, и 1С предпринимает попытки повторить их передачу. В настройках пошаговой выгрузки вы можете указать число таких попыток, и таймаут ожидания между ними (см.скриншот).
  2. И только если передача данных не удалась даже с повторными попытками, обмен на сайт считается завершенным с ошибками. В журнале обмена вы сможете отследить - какие шаги были успешными, а какие нет.
Но и это еще не все.
Если вы поставите галочку "Продолжить отправку неудачно завершившихся шагов при следующем сеансе обмена", то при запуске следующего сеанса обмена (вручную или автоматически) 1С не будет генерировать новые данные для отправки, а попробует еще раз отправить на сайт те пакеты, которые в прошлый раз завершились с ошибками. То есть, если по простому - 1С выполнит "докачку" непереданных данных.

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

Наиболее частый сценарий установки этой галочки - это ручная выгрузка. Если вам пришло уведомление, что автоматическиая выгрузка завершилась с ошибками, то вы идете и вручную запускаете специальный профиль "Ручной обмен" с этой галочкой. Тогда вы докачаете непереданные данные.
А если у вас настроено 2 выгрузки каталога 2 раза в сутки (утром и вечером), то при возникновении ошибок утром, лучше вечерний обмен сделать полностью, чтобы на сайте висели актуальные на вечер данные.
Вы можете настроить дополнительную вторую выгрузку изменений с установленной этой галочкой, после основной, скажем через полчаса, и это будет как "контрольный выстрел" :)


2) Выгрузка краткого пакета предложений (только цены и остатки)

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

Как было отмечено выше, объем изменений по ценам и остаткам для крупных клиентов может быть таким, что в режиме изменений выгружаются опять же данные чуть не по всему каталогу, и файлы offers.xml с описанием изменений тоже получаются очень большими.

Причем стандарт CommerceML обязывал в offers.xml передавать достаточно много данных, которые фактически для данного режима обмена были излишними. Это и наименование товара, единицы измерения и так далее. Самое неприятное в этом - это существенное увеличение объема XML-файлов, и опять же ресурсов сервера на их обработку (см. выше). Кроме того, некоторая дополнительная нагрузка на БД по апдейту излишних атрибутов.

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

В этом документе оставлено только то, что требуется для апдейта цен и остатков. Пример данных:

840f4e8578e3b05619aaccfa85a811eee3e24d09.jpg

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

Данная возможность включается соответствующей галочкой в тех же дополнительных настройках выгрузки товаров:

5b1ea77e4d7f314ec9962a3cac2a02c0d80cc368.jpg

Рекомендуем ее сразу поставить.

3) Передача в заказе склада самовывоза

И еще одно нововведение, уже не относящееся к оптимизации, но также очень полезное.

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

01.jpg

Теперь эта информация также передается в 1С в режиме обмена заказами! То есть менеджер сразу видит это, и может заранее зарезервировать товар на этом складе для приезда клиента.
==================================

Вот такая троица новинок!

Как все это получить:

1) Скачать новый дистрибутив "1С-Битрикс: Управление сайтом 14.0" или установить на ваш сайт последние обновления
2) Обновить 1С: Управление торговлей 11 до последней версии и установить наш дополнительный модуль-расширение в режиме сравнения-объединения конфигураций (инструкция по установке внутри дистрибутива с модулем).

2013_11_29_1832.png

Модуль для УТ10.3 планируется выпустить в ближайшее время. Для остальных торговых конфигураций - до конца года.

Кроме того, в ближайшие 1-2-3 месяца эти нововведения должны войти в типовые торговые конфигурации 1С и не потребуется инсталлировать дополнения. Будем держать вас в курсе.

Мы аккуратно собираем действительно полезные материалы для собственников интернет-магазинов и интернет-маркетологов, касающиеся разработки и эксплуатации быстро масштабируемых e-commerce проектов.

Мы - рядом

У Вас есть проект? Давайте его обсудим!

Офисы:

г.Москва, ул.Люблинская, 42

г.Ростов-на-Дону, ул.Социалистическая, 74

Пишите на email

info@orangecode.ru

Контактный телефон

+7 (918) 505-23-85

Оставьте заявку

Расскажите немного о Вашем проекте. Мы обязательно свяжемся с Вами и сделаем коммерческое предложение, от которого Вы не сможете отказаться!

Я согласен на обработку моих персональных данных в соответствии с Политикой конфиденциальности

Настоящим я выражаю согласие на обработку моих персональных данных, включая передачу третьим лицам, уполномоченным Orange Code для осуществления целей маркетинга, рекламы и изучения мнений группой компаний Orange Code. Я прочитал Политику Конфиденциальности и согласен с ее положениями. Я понимаю, что могу отозвать свое согласие, следуя по специальной ссылке.