Интеграция 1С и Битрикс: Управление сайтом
Интеграция системы учета на базе 1С и сайта на CMS 1C:Битрикс Управление сайтом является сложной задачей, на этом этапе “погибло” немало хороших сайтов.
Проблема здесь состоит в том, что происходит передача данных из двух разных по архитектуре систем. Среднестатистический программист 1С не знает как выгрузить данные на сайт так, чтобы веб-разработчик мог использовать максимум типовых функций CMS. Но еще больший сюрприз - это то, что среднестатистический веб-разработчик также не может объяснить программисту 1С, как ему нужно получить данные. Их общение похоже на разговор глухого и немого.
В этой статье мы попробуем упростить жизнь программистам 1С и веб-разработчикам, рассказав о своем опыте интеграции и “подводных камнях”, с которыми мы встретились. Для интеграции мы используем типовой модуль обмена адаптированный под конфигурацию “ЮвелирСофт:Ювелирный торговый дом”.
Начнем с того, чтобы понять, как типовой сайт на 1С:Битрикс хранит данные по товарному каталогу:
Каталог товаров - это как справочник “Номенклатура” в 1С, там хранятся общие реквизиты артикулов, те, которые никогда не изменяются - артикул, тип изделия, проба, металл, производитель, фото и т.д. это так называемые каталожные позиции.
Именно эти позиции показываются в списке товаров в каталоге:
-
Простой товар - товар, у которого нет вариантов размеров, драгоценных камней или других параметров влияющих на цену(если такие будут, то см. Ниже “Каталог предложений”). Например, серьги, кресты.
-
Товар с предложениями - это товары, у которых есть свойства для выбора, свойства влияющие на цену товара. Чаще всего это выбор размера и драгоценных камней.
-
Комплект и набор - эти типы рассматривать не будем, т.к. они доступны только в редакции “Бизнес” и из 1С их выгрузить нельзя. Подробнее тут.
В каталоге товаров позиции могут быть нескольких типов:
В каталог предложений уже загружаются фактически реальные, физические товары. Отличие от каталога товаров в том, что в каталоге предложений содержаться позиции, которые пользователь сайта будет непосредственно покупать. Для них есть конкретные размеры, вставки, веса, на каждое предложений своя цена.
Для товарного предложения можно также загрузить фото, это используется когда для разных драгоценных вставок нужны разные фото из-за цвета камней. Каталог предложений связан с каталогом товаров. Связь один ко многим - для 1 элемента каталога товаров соответствует много элементов каталога предложений.
В каталог товаров и предложений можно загрузить любое количество необходимых свойств товаров. Например, для товаров - артикул, тип изделия, пробам, а для предложений - размер, вставка, вес.
После того, как разобрались с хранением данных, посмотрим какие варианты выгрузок на сайт существуют.
-
Полная выгрузка товаров - при такой выгрузке каждый раз получаются все данные для выгрузки (в зависимости от настройки - остатки, весь каталог или остатки+каталог). Такая выгрузка подходит при небольшом количестве товаров (до 5 000 артикул и 10 000 предложений). Если количество товаров и предложений большое, то такая выгрузка может занять от 3-6 часов.
-
Выгрузка по изменениям - фиксирует в 1С только изменения для выгрузки на сайт и выгружаемый объем данных существенно меньше. Подходит для больших каталогов и для сайтов, где необходимо часто проводить выгрузку товаров для поддержания актуальности.
Также для оптимизации выгрузки в обоих вариантах используется пакетная выгрузка - в настройках задается количество товаров в 1 пакете и весь массив выгрузки бьется на кратные этому числа товаров пакеты.
Такая функция позволяет сделать процесс обмена более стабильным и выгружать данные на сайты с небольших количеством оперативной памяти.
Рассмотрим состав файлов выгрузки:
-
Папка с названием кода выгрузки
-
Выгрузка товаров разбитая на пакеты, в каждом пакете, указанное в настройках выгрузки количество товаров.
-
Общий файл для каталога товаров - в этом файле содержаться все справочные свойства товаров, разделы каталога, описание типов цен, их значение и идентификаторы. В файлах пакета указываются только идентификаторы свойства и идентификаторы значений.
-
Общий файл для каталога предложений - аналогично предыдущему файлу содержит все свойства и их значения, но уже для каталога предложений. В некоторых версиях выгрузки для оптимизации выгрузки общие файлы offers могут быть для каждого пакета, т.е. В корне выгрузки из может быть более 1.
Главное, что нужно знать про общие файлы - в них должны быть описаны все свойства товаров и предложений и идентификаторы свойств и значений в этих файлов должны совпадать со свойствами указанными в товарных файлах(смотреть ниже). В противном случае, свойства не будут загружены в товар.
Теперь самое интересное - файлы с товарами.
Файлов 4 вида:
-
Файл import - содержит данные по элементам каталога товаров.
-
Ид - cамое важное - это идентификатор номенклатуры, он должен быть уникальным, т.к. Если в файле есть два разных товара с одинаковым ИД, то на сайт будет загружен только последний элемент, точнее будут загружены оба, но последний перетрет предыдущий элемент. Ид важен, т.к. значение того, как он работает можно использовать, например для того, чтобы загружать остатки из 2-х разных баз так, чтобы одинаковые артикула не двоились - для этого нужно сделать так, чтобы в выгрузке из каждой базы ид товара были одинаковы.
-
Артикул и наименования - Это стандартные поля для любой выгрузки из 1С. Наименование будет отображаться в карточке товара и в списке. Поэтому заранее нужно подумать над тем, чтобы оно было человеко понятное - такое, как обычный человек ищет в интернете.
-
Группы - это список разделов на сайте, в которые попадает товар. Огромный плюс в том, что на сайте товар может лежать в более, чем 1 разделе
-
Описание - текстовое описание товара, выводится карточку
-
Картинка - относительная ссылка до каталога import_files в соответствующем пакете. При необходимости выгрузки нескольких картинок - выгружаются несколько секций
-
Основной блок со свойствами товаров. Именно эти ид свойств и ид значений должны быть идентичны свойствам и значениям в общих файлах импорта.
Первая картинка становится основной для товара, остальные дополнительные.
-
-
Файл offers - элементы каталога предложений
-
Ид - идентификатор предложения. Связь элемента каталога товаров и предложений идет именно через ИД предложений.
ОБЯЗАТЕЛЬНО: Началом ид предложений должен быть ид товаров, которому это предложений соответствует. Также если у предложений 1 ид, то на сайт будет загружено только последнее. Поэтому для создания нескольких предложений по размерам и вставкам в ид добавляются либо гуиды вставки и наименование размера.
Далее использую это информации можно реализовать выгрузки изделий по сериям номенклатуры(уникальные изделия) добавив в ид серию. Или выгрузку товаров с разным весом - также в ид добавляем вес изделия и на сайте уже имеем столько предложений сколько товаров данного артикула с разным весом.
-
Номер версии - в этот пункт мы пишем даты выгрузки в миллисекундах.
Она необходима нам для того, чтобы поддерживать актуальность предложений. По ней мы ориентируемся и после загрузки деактивируем предложений, у которых дата отлична. Это необходимо так как типовая загрузка при наличии хотя бы 1 активного предложения в файле выгрузки активирует все уже существующие на сайте.
-
Наименование - текстовое отображение предложения. Его нужно также делать человеко понятным, т.к. В стандартном варианте оно будет отображаться в корзине пользователя и в заказе.
-
Список свойство товаров - также идентификаторы свойств и значений должны находиться в общем файле для предложений товаров.
Для указания изображения для предложения необходимо до выгрузки свойств, выгрузить секцию - <Картинка><Картинка/> - и ссылка на изображение, аналогично файлу import.
-
-
Файлы prices
ВАЖНО:
-
Ид предложения из файла offers совпадал с ид в файле prices. В противном случае цена для предложения не загрузиться и оно будет недоступным.
-
При выгрузке нескольких цен на 1 предложение все цены должны идти в 1 секции “Цена”. В противном случае цены могут затирать друг друга. Т.е. Для 1 предложения в файле prices должна быть 1 запись, а в ней в блоке “Цены” все цены идти в блоках “Цена”.
-
-
Файлы rests - файлы с данными остатков товаров.
ВАЖНО:
Ид предложения из файла offers совпадал с ид в файле rests. В противном случае цена для предложения не загрузиться и оно будет недоступным
-
Папка import_files - в ней содержатся изображения для товаров, их физическое расположение.
Подробнее про структуру файлом можно почитать здесь.