Как создать несколько каталогов в Битриксе? — Хабр Q&A
Ярослав Александров, прошу прощение за столь долгий ответ. Как говорит русский афоризм: «то ли лыжи не едут, то ли я дурак». Сделал как вы сказали выше и все заработало, но после пару входов/выходов слетели все каталоги, опять(— пришлите ссылки на эти источники
1. https://dev.1c-bitrix.ru/support/forum/forum6/topi…
2. https://ut11-bitrix.ru/learning-eshop-on-1c-bitrix…
3.bx-qa.com/?qa=36242/%D0%B2%D0%BA%D0%BB%D1%8E%D1%87…
Это те которые вспомнил, больше смогу завтра на работе скинуть, 2 основопологающих не нашел.
Каталоги в папке «спецпредложение» (ценник, бланки и т.д.) это самостоятельные каталоги или на что-то завязаны. Судя по названию это случайно не торговые предложения?
С чем связано, что три каталога находятся в одной папке?
Данные страницы — это акции. Акции связанны с определенным ассортиментом товара которого нет в общем каталоге. Всего три группы товаров которые должны выводиться на разных страницах. Для лучшего понимания прикреплю ссылку на общую страницу акции с которой происходит распределение по данным каталогам.
— поставьте локально демо магазин битрикс, там есть каталог, делаете аналогично, ничего не меняется даже хоть десять каталогов:
Здесь логично будет еще раз пройти путь со скринами, потому что я не понимаю что делаю гне так.
Создано 3 ИБ и в них выгружено 3 каталога из 1С .
Создано 3 каталога в нужных страницах и присвоил ID. После зашел в настройки — обработка адресов — правила обработки и создал 3 записи для каждого инфоблока (ЧПУ). Что бы не было дублирования в корне сайта создал 3 отдельные папки в которых разместил нужные каталоги и на которые ссылаюсь из «обработки адресов». В документ index.php положил каталог.
Для начала ссылаемся на каждую страницу:
...
<li><a href="/spetspredlozhenie(1)/index.php">Перейти к продуктам</a></li>
...
<li><a href="/spetspredlozhenie(2)/index.php">Перейти к продуктам</a></li>
...
<li><a href="/spetspredlozhenie(3)/index.php">Перейти к продуктам </a></li>
Возвращаюсь в настройку каталога — ЧПУ. Далее прописываю так:Что я опять делаю не так?
Битрикс — Привязка раздела к нескольким родительским разделам
0
21.09.201810:3521.09.2018 10:35:44
Множество раз пересекался с проблемой множественной привязки раздела к нескольким родительским разделам. Мнения расходятся: кто-то говорит это сильно необходимо, а кто-то, что технически не имеет смысла и абсурдно такое делать.Но т.к. есть спрос, то хотелось бы предложить и решение.
По умолчанию в 1С-Битрикс нет возможности привязать раздел к нескольким разделам родителям.
Но мы придумали как это обойти, для этого необходимо использовать модуль «Товарные коллекции в разделах / Категории для Seo. Посадочные разделы в каталоге. Товары со скидкой.» С помощью данного решения можно создавать подразделы — дубли, к которым будут привязаны те же самые товары, что и к исходному подразделу, который необходимо привязать к нескольким родительским разделам.
Для наглядности приведу пример:
Стоит задача, чтобы подраздел «Чехлы» (родитель — Смартфоны) был доступен также в разделе «Планшеты».
Первоначальное дерево разделов выглядит так:
.Смартфоны
..Чехлы
.Планшеты
Используя данное решение, нужно будет просто создать подраздел — дубль с таким же названием «Чехлы» (и прочими характеристиками) в разделе «Планшеты» и настроить условия попадания товаров из исходного раздела.
Конечный результат будет таким:
.Смартфоны
..Чехлы
.Планшеты
..Чехлы
Таким образом можно решить вопрос множественной привязки раздела.
Это только один из способов применения данного модуля, а способов множество. Некоторые другие возможности можно посмотреть в статье «Товарные коллекции в разделах / Категории для Seo» — удобный, универсальный модуль для решения многих наболевших задач.
А также на странице описания самого модуля marketplace.1c-bitrix.ru/solutions/scoder.collections/
Эквивалентность разделов. Автоматическая привязка товаров к нескольким разделам
Технические данные
Дата публикации:
04.10.2018
Адаптивность:
Нет
Поддержка композита:
Нет
Число установок:
Менее 50 раз
Совместимые редакции
Описание
Модуль, позволяющий реализовать множественную привязку одного того же товара к нескольким разделам автоматически. Очень полезный инструмент, если есть необходимость выводить одни и те же товары в разных категориях.- Если устраиваете акцию по товарам из определенных категорий, то эффективнее будет выделить их в отдельную категорию, например, создав дополнительный раздел «Акции, скидки«. Сопоставить разделы акционных товаров новому разделу, и товары будут также выводиться в категории «Акции, скидки».
- Данный пример более подойдет разработчикам. Модуль может служить очень полезным инструментом для крупных проектов, наподобие «агрегаторов интернет-магазинов«, в котором собираются товары различных магазинов. Модуль позволит пользователям, имеющим профиль продавца, сопоставить их категории Вашим.
Также вас может заинтересовать: Товарные коллекции в разделах / Категории для Seo. Посадочные разделы в каталоге. Товары со скидкой.
Порядок установки:
- Решение устанавливается стандартно для Marketplace.
- После установки необходимо перейти в настройки модуля: Настройки -> Настройки продукта -> Настройки модулей -> Эквивалентность разделов. Автоматическая привязка товаров к нескольким разделам. В настройках выбрать инфоблоки, с которыми будет работать модуль. Данное действие обязательно.
- У разделов выбранных инфоблоков появится пользовательское поле «Идентификаторы разделов родителей» [UF_SCODER_IN_PARENT]. В администраторском интерфейсе на странице редактирования нужного раздела в данном поле необходимо выбрать разделы, в которые также должны попадать товары данного — редактируемого раздела.
- Для более удобной настройки в модуль входит служебный компонент «Соотношения разделов инфоблока» [scoder:sectionrelationships], который можно разместить на любой странице сайта, и проводить настройки. Компонент доступен через дерево компонентов в визуальном редакторе, если не появился, обновите кэш редактора. Визуально отображение в зависимости от стилистики вашего сайта может отличаться от примеров на скриншотах.
- Данный модуль разработан с использованием апи D7.
- Минимальные технические требования для продукта с версии 14.0 (с ядром D7):
- PHP версии 5.6.
- MySQL версии 5.
При обращении в службу поддержки обязательно указывайте:
- адрес сайта,
- логин и пароль администратора,
- ftp логин и пароль,
- e-mail покупателя модуля или номер вашего купона.
Предприятие и почему она стала массовой. Часть 2 / 1С-Битрикс corporate blog / Habr
Продолжу рассказ на тему интеграции интернет-магазинов с бэкофисом и подходе к их решению в нашей реализации интеграции интернет-магазина 1С: Битрикс с системой 1С: Управление торговлей. В первом посте на эту тему мы рассуждали о том, как были проанализированы задачи, которые стоят перед владельцами интернет-магазинов, выбрана концепция обмена данными и разработан протокол обмена между 1С и интернет-магазином.В продолжении темы хотелось бы рассказать более подробно, как в результате выглядит обмен и его настройка, как со стороны бэкофиса 1С, так и со стороны интернет-сайта. А также показать как решались задачи для оптимизации работы с большими объемами данных.
Напомню, что в общем и целом была выбрана следующая схема интеграции:
1) Сайт и 1С работают независимо и обмениваются данными в формате CommerceML
2) Сайт не имеет прямого доступа к 1С
3) 1С регулярно обращается к публичному скрипту на сайте, отдавая или принимая данные
3) Инициатором обмена и соединения всегда выступает 1С
Рассмотрим реализацию этой концепции на практике.
Итак, как я уже говорил ранее, в состав конфигурации «1С: Управление торговлей» входит специализированный модуль для обмена данными с сайтами. Это универсальный модуль, работающий по описанному в предыдущем посте протоколу и с использованием формата CommerceML.
Модуль есть в типовой поставке 1С: Управление торговлей как для версии 10.3, так и для версии 11 (платформа 8.2). Помимо 1С: Управление торговлей функционал обмена с сайтами также есть и в других конфигурациях, включая локализованные. Мы свели информацию о поддержке функционала обмена с сайтами в конфигурациях 1С в специальную таблицу — 1c.1c-bitrix.ru/ecommerce/require_1C.php.
Рассмотрим функционал модуля, входящего с состав 1С: Управление торговлей 11.
Первая вкладка интерфейса модуля содержит основные настройки взаимодействия.
Раздел Режим обмена данными — позволяет указать какой режим обмена будет использоваться в данном профиле. Или проще говоря — какая бизнес-задача будет решаться в сеансе обмена: выгрузка товаров, обмен заказами или и то и то.
В разделе Назначение указываются параметры сайта, с которым будет производиться обмен: URL скрипта обмена, учетная запись, которой разрешен обмен. Можно тут же проверить успешность соединения.
Контроль изменений позволяет использовать внутренние журналы 1С, фиксирующие изменения объектов, связанных с обменом с сайтом и включать в обмен только те данные, которые были модифицированы в 1С с момента предыдущего сеанса обмена. Разумеется, это уменьшает объем данных, снижает нагрузку и на 1С и на сервер интернет-магазина.
В разделе Автоматический обмен можно очень гибко задать расписание, по которому функционал обмена будет запускаться автоматически, без участия пользователя.
Рассмотрим более подробно решение первой задачи интеграции —
Выгрузка товаров (справочника номенклатуры) из 1С на сайт интернет-магазина
Для этого необходимо в режиме обмена поставить опцию «Выгрузка товаров», в результате чего будет доступна одноименная вкладка:
Выбор товаров для выгрузки и настройки выгрузки в 1С
Основной и наиболее важный раздел здесь — таблица каталогов, позволяющая сформировать то, что будет выгружено на сайт.
В варианте «по умолчанию» выгружается весь справочник номенклатуры как есть: все группы и все товары, без каких-либо ограничений. Разумеется, такой вариант понравится не всем, и доступен гибкий выбор — что именно и по каким условиям выгружать на сайт.
Так, например, можно выбрать группы и подгруппы каталога, выгружать товары с ненулевыми остатками, с определенными типами цен (розничная, оптовая, дилерская), с конкретных складов и тому подобное.
Далее, по умолчанию, все товары выгружаются в файл XML в единый каталог (тег <Каталог>). У каждого каталога есть свой классификатор, включающий структуру групп и подгрупп для товаров, а также свойства для всех товаров этого каталога.
Если на сайт выгружаются разные типы товаров, обладающие собственным деревом групп и собственным набором свойств (характеристик), то рекомендуется каждый такой тип выгружать в отдельный каталог. Так, в системе 1С-Битрикс: Управление сайтом, это приведет к тому, что каждый каталог будет выгружен в отдельный информационный блок, у которого свои группы, свойства, права, настройки и т.п. В результате можно в интернет-магазине сделать разное представление для разных типов товаров: иерархия, фильтр по свойствам, сравнение товаров и т.п.
Настройки каталогов в этом случае будут примерно такие:
Есть и другая возможность формирования структуры каталога, которая выгружается на сайт — использование видов номенклатуры. Виды номенклатуры — это по сути альтернативный рубрикатор типов товаров. Если структура групп справочника номенклатуры не подходит для настройки выгрузки на сайт, то можно создать виды номенклатуры, привязать к ним товары и выгружать на сайт по новому рубрикатору.
Ставить галочки «Выгружать файлы изображений» и «Выгружать прочие файлы» имеет смысл, если в 1С есть качественные описания товаров, изображения, связанные файлы (инструкции и т.п.). Очень многие владельцы интернет-магазинов не хранят в 1С описания товаров, свойства, качественные описания. В 1С они им не столь нужны, а на сайте как правило есть и HTML-редактор для описаний, и разнообразные утилиты по обработке изображений, нанесению водяных знаков. К тому же, организовать удаленную работу контент-редакторов удобнее всего при работе с веб-сайтом, чем пускать их внутрь 1С. И, тем не менее, находятся и те, кто предпочитает всю описательную часть хранить в одном месте — в 1С, а сайт использовать как инструмент визуализации. Есть и другая задача — когда одни и те же товары выгружаются в несколько интернет-магазинов одновременно. Тогда лучше один раз сделать описания в 1С, а потом их автоматически выгружать на несколько площадок.
Какую выбрать модель управления каталогом — решает конечный пользователь. Главное, что функционал интеграции это позволяет.
Процесс выгрузки
Если теперь запустить выгрузку (нажать кнопку «Выполнение обмена данными»), то 1С начинает подготавливать выгружаемые данные.
Генерируются 2 файла: import.xml и offers.xml (для каждого выгружаемого каталога). Первый файл содержит информацию о товарном каталоге (структура, товары, свойства), а второй — торговые предложения по данному товару. Если у одного товара есть варианты, зависящие от характеристик (цвет, размер и т.п.), то все они будут предложениями в файле offers. Детали — в стандарте CommerceML 2.04.
Если с товарами связаны изображения или файлы, то они размещаются в подпапке import_files, и на них ссылаются данные из XML.
Вот например были выгружены 2 каталога товаров из 1С:
Теперь нужно эти файлы передать на сервер. В протоколе обмена (см.часть 1) для этого есть специальный режим: http://<сайт>/bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=<имя файла>.
Если объем данных большой (происходит первоначальная выгрузка большого справочника номенклатуры), то конечно хотелось бы оптимизировать передачу файлов.
Во-первых, используется ZIP-сжатие. Как мы помним, перед началом передачи файлов 1С запрашивает у сайта параметры обмена, среди которых есть флаг поддержки ZIP-сжатия. Все файлы упаковываются и получается один zip-архив, который и отправляется на сайт. Если сжатие не поддерживается, отправляются все файлы из папки (включая картинки) последовательно.
Во-вторых, многие хостинг-провайдеры лимитируют объем данных, передаваемых POST-запросом. И даже zip-архив может легко не пройти, если он составляет десятки мегабайт. В этом случае 1С может разбивать выгружаемые файлы на порции, если их размер превышает максимально допустимый. На стороне сайта происходит прием пронумерованных порций и последующая их сборка обратно в единый файл. Максимальный размер порции данных 1С также получает от сайт в режиме инициализации обмена.
Теперь принятые файлы нужно обработать на стороне сайта и загрузить в базу сайта.
Здесь также есть момент ограничений хостинга. Обработкой (разбором XML и загрузкой в базу) занимается PHP-скрипт, время работы которого обычно лимитировано. Конечно, в начале скрипта стоит set_time_limit(0), но не везде это работает. Поэтому в настройках 1С-Битрикс можно указать максимальное время, которое может отработать скрипт — по умолчанию 30 секунд. Тогда при достижении этого лимита, скрипт будет перезагружен и продолжит импорт с предыдущей позиции в файле.
Кроме того, скрипт импорта может сравнивать контрольные суммы XML-описания товаров в обрабатываемом файле с контрольной суммой этого товара в базе с момента предыдущей загрузки. Если контрольные суммы совпадают, то товар пропускается и не обновлняется. Это нужно для тех случаев, когда каталог уже выгружен на сайт, а из 1С все равно делается полная выгрузка. Тогда импорт данных будет выполнен существенно быстрее.
Конечно, всегда рекомендуется настраивать в 1С именно выгрузку только измененных позиций, тогда полная выгрузка будет сделана только 1 раз, а затем пойдут небольшие порции данных, которые будут загружаться на сайт очень быстро.
Настройки импорта данных на стороне сайта
Параметры импорта каталога из 1С настраиваются в 1С-Битрикс в административной части на специальной странице «Интеграция с 1С»
Я не буду далее вдаваться в подробности настроек импорта, коих множество: обработка изображений, генерация ЧПУ для товаров, обработка данных, отсутствующих в файле импорта, но имеющихся на сайте и тому подобное. В общем и целом, каталоги из 1С максимально полно отражаются в каталоги на сайте.
Выгружаются:
- Структура групп каталога
- Список товаров группы
- Свойства товаров (числовые, строковые, тип «список», дата-время, булево)
- Описание товара (включая описание в HTML)
- Связанные изображения и файлы
- Набор цен (розница, опт, дилерская и т.п.
- Остатки на складах
- Набор предложений по товару, различающихся характеристиками
За счет механизмов оптимизации решается вопрос с первоначальной выгрузкой и обработкой больших объемов данных. Режим выгрузки только измененных позиций в 1С, позволяет практически не задумываться о нагрузке для последующих сеансов обмена.
Также хочется сказать, что в 1С профилей настроек выгрузки товаров на сайт может быть множество. Они образуют так называемые узлы обмена:
Это дает еще большую гибкость, поскольку, можно например разные категории товаров обновлять в разное время, выгружать товары на разные сайты и в разные CMS системы и т.п. Кроме того, в разное время, не связанное с выгрузкой товаров, можно производить и обмен заказами: например принимать заказы с сайта каждые 5 минут.
Но об обмене заказами я расскажу в третьей, заключительной части.