Документация Sync1C - содержание
Дополнительные возможности / Обработка категорий
Эта функциональность пока проверялось не на всех конфигурациях 1С. Если у вас что-то не работает - пишите, подправлю.
Общее описание
В каталог настроек Sync1C можно добавить файл с именем НастройкиКатегорий.xml. Если этот файл присутствует, то Sync1C будет брать товары из 1С только из указанных
категорий, и категории для сайта (на вкладке Новые) формировать в соответствии с настройками в этом файле. Также, начиная с версии 1.8 beta 11: если этот файл присутствует, и
РеквизитПроизводителя задан явным образом, то производители на вкладке Новые тоже будут сразу автоматически заполняться. Ещё, начиная с версии 1.8.12 beta 2: для категорий 1C можно указывать виды цен, отличные от базовых
Категории 1С
Категории 1С - это группы иерархии справочника номенклатуры. Справочник номенклатуры - это иерархический справочник. В нём, помимо элементов номенклатуры (товаров, услуг и т.д.) могут быть группы и подгруппы - вот они и образуют категории 1С в терминологии модуля Sync1C. На сайте им соответствуют категории OpenCart, поэтому такое название.
Например, вот так выглядит категория "\Торговая деятельность\Мебель" в демонстрационной базе Управление торговлей 11.4:
В конфигурациях УНФ категориям 1С соответствуют понятия "иерархия" или "группы" (а вовсе не "категории"):
При обработке каждого товара 1С вычисляется полное название его категории 1С. Для этого название его категории и родительских категорий сцепляются вместе в строку текста, разделяясь (начинаясь) символом "обратная косая черта". Получается примерно так: \ВерхняяКатегория\Подкатегория\ПодкатегорияПодкатегории\Итд,
например: \Торговая деятельность\Продукты, \Торговая деятельность\Продукты\Соки, \Торговая деятельность\Продукты\Кондитерские изделия\Праздничные наборы, \Торговая деятельность и т.д.
Затем просматриваются шаблоны категорий 1С в файле НастройкиКатегорий.xml - в том порядке, в каком они перечислены в этом файле. Первый же шаблон, который подходит к полному названию категории, срабатывает, и товар обрабатывается как там описано. Если ни один шаблон не подходит, то этот товар не используется для синхронизации с сайтом.
Простой пример
В демонстрационной базе Управление торговлей 11.4 есть такие категории товаров:
- \Торговая деятельность\Мебель
- \Торговая деятельность\Меховые изделия
- \Торговая деятельность\Обувь\Женская обувь
- \Торговая деятельность\Обувь\Кроссовки
- \Торговая деятельность\Обувь\Мужская обувь
Сделаем такой файл НастройкиКатегорий.xml:
<?xml version="1.0" encoding="UTF-8"?>
<НастройкиКатегорий>
<ОписаниеКатегорий>
<ШаблонКатегорий1с>\Торговая деятельность\Обувь\Кроссовки</ШаблонКатегорий1с>
<ШаблонКатегорийСайт>\Спортивная обувь\Кроссовки</ШаблонКатегорийСайт>
</ОписаниеКатегорий>
<ОписаниеКатегорий>
<ШаблонКатегорий1с>\Торговая деятельность\Обувь\{{ВидОбуви}}</ШаблонКатегорий1с>
<ШаблонКатегорийСайт>\Обувь\{{ВидОбуви}}</ШаблонКатегорийСайт>
</ОписаниеКатегорий>
<ОписаниеКатегорий>
<ШаблонКатегорий1с>\Торговая деятельность\{{хвост}}</ШаблонКатегорий1с>
<ШаблонКатегорийСайт>\Прочее</ШаблонКатегорийСайт>
</ОписаниеКатегорий>
<!--ОписаниеКатегорий>
<ШаблонКатегорий1с>\{{хвост}}</ШаблонКатегорий1с>
<ШаблонКатегорийСайт>\{{хвост}}</ШаблонКатегорийСайт>
</ОписаниеКатегорий-->
</НастройкиКатегорий>
Самым первым шаблоном 1С является \Торговая деятельность\Обувь\Кроссовки, он заберёт все товары этой категории, и на сайте они попадут в категорию \Спортивная обувь\Кроссовки
Далее идёт шаблон \Торговая деятельность\Обувь\{{ВидОбуви}}. Если предыдущий шаблон представлял собой конкретный текст, то этот шаблон содержит переменную {{ВидОбуви}}. В неё будет подставлен соответствующий текст, то есть "Женская обувь" или "Мужская обувь". Вы ведь догадались, что "Кроссовки" сюда не могут попасть? Правильно, товары из подкатегории "Кроссовки" обработает предыдущий шаблон.
Шаблон категорий сайта тоже содержит переменную {{ВидОбуви}}, так что на сайте получатся категории "\Обувь\Женская обувь" и "\Обувь\Мужская обувь"
Следующий шаблон 1С обрабатывает все оставшиеся товары из категории \Торговая деятельность, которые не забрали предыдущие 2 шаблона. Он тоже содержит переменную, которую я назвал "хвост", имея в виду весь остаток текста после "\Торговая деятельность\" в полном названии категории. На сайте эти товары попадут в категорию "Прочие". То есть, переменная {{хвост}} тут выполняет роль просто символа подстановки - типа как "звёздочка" в "*.txt".
Товары, которые входят в категорию \Производственная деятельность - на сайт не попадут, т.к. для них нет подходящих входных шаблонов. А если раскомментировать последнее описание категорий, то тогда все оставшиеся товары попадут на сайт - причём, в те же самые категории, что и в 1С.
Обработка шаблонов
<ШаблонКатегорий1с> - это входной шаблон, он сравнивается с полными названиями категорий 1С. <ШаблонКатегорийСайт> - это выходной шаблон, он формирует полные названия категорий сайта.
Шаблон может быть простым текстом, тогда он тупо сравнивается с полным названием категории (для входного шаблона), либо задает конкретное полное название категории (для выходного шаблона).
Шаблон может содержать переменные в виде {{идентификатор}}. В этом случае входной шаблон сравнивает чистый текст между переменными - и, если получается найти соответствие - то помещает в переменные оставшиеся участки между чистым текстом. А выходной шаблон подставляет значения этих переменных. Имена переменных вы сами выдумываете, любые, какие хотите.
То есть, в общем случае, входной шаблон может выглядеть как-то так:
Начало текста {{переменная1}} ещё текст {{переменная2}} ну пусть ещё текст {{переменная3}} конец текста. Разумеется, шаблон может начинаться и заканчиваться переменными, то есть участки чистого текста в начале и в конце не являются обязательными.
Разделители (символы "обратная косая черта", то есть "\") с точки зрения шаблона ничем не отличаются от другого чистого текста, и никаким особым образом не обрабатываются. Они просто используются при формировании полного названия категории - ещё до того, как оно попадёт в руки шаблону. То есть, вы знаете, что название каждой (под)категории начинается с "\", и это знание удобно использовать при создании шаблонов.
Продвинутый пример файла настроек
Пример файла НастройкиКатегорий.xml
<?xml version="1.0" encoding="UTF-8"?>
<НастройкиКатегорий>
<ПечататьНеиспользуемыеКатегории>Да</ПечататьНеиспользуемыеКатегории>
<ПечататьИспользуемыеКатегории>Да</ПечататьИспользуемыеКатегории>
<ФильтрНазваний>
<ID>ЖенскиеСапоги</ID>
<НачалоНазвания>Женские сапоги </НачалоНазвания>
<НачалоНазвания>Сапоги жен</НачалоНазвания>
</ФильтрНазваний>
<ОписаниеКатегорий>
<ШаблонКатегорий1с>\Торговая деятельность\Обувь\{{ВидОбуви}}</ШаблонКатегорий1с>
<ШаблонКатегорийСайт>\Обувь\{{ВидОбуви}}</ШаблонКатегорийСайт>
<ПроизводительСайт>Обувная мануфактура</ПроизводительСайт>
<ВидЦен>Розничная</ВидЦен>
<ГруппаТоваров>
<ФильтрНазванийСсылка>ЖенскиеСапоги</ФильтрНазванийСсылка>
<ШаблонКатегорийСайт>\Обувь\Сапоги женские</ШаблонКатегорийСайт>
</ГруппаТоваров>
</ОписаниеКатегорий>
<ОписаниеКатегорий>
<ШаблонКатегорий1с>\Торговая деятельность\Тара</ШаблонКатегорий1с>
<ШаблонКатегорийСайт>\Тара</ШаблонКатегорийСайт>
<ВидЦен>Специальная</ВидЦен>
<ВидЦен>Розничная</ВидЦен>
</ОписаниеКатегорий>
<ОписаниеКатегорий>
<ШаблонКатегорий1с>\Торговая деятельность\{{хвост}}</ШаблонКатегорий1с>
<ШаблонКатегорийСайт>\Торговая деятельность\{{хвост}}</ШаблонКатегорийСайт>
</ОписаниеКатегорий>
</НастройкиКатегорий>
Свойства и секции файла настроек
ПечататьНеиспользуемыеКатегории
<ПечататьНеиспользуемыеКатегории>Да</ПечататьНеиспользуемыеКатегории>
Если "Да" или "Истина" - в протокол будет напечатан перечень категорий 1С, которые не попали в фильтр (товары из которых будут проигнорированы, словно их нет в 1С).
На вкладке Протокол этот перечень занимает одну строчку, в которой написано: "Неиспользуемые категории: ...". Если навести туда курсор мышки, то 1С подсветит многострочное значение как подсказку (hint). Можно кликнуть туда, скопировать значение в буфер обмена, и вставить в текстовый редактор. Если вставить в страндартный Блокнот - получится мешанина, без концов строк. Если вставить в Notepad++, то будет всё нормально. Ещё можно открыть файл Протокол.txt, даже в Блокноте, там тоже всё хорошо.
ПечататьИспользуемыеКатегории
<ПечататьИспользуемыеКатегории>Да</ПечататьИспользуемыеКатегории>
Если "Да" или "Истина" - в протокол будет напечатан перечень категорий 1С, которые попали в фильтр (товары из которых будут использованы для синхронизации с сайтом).
Предыдущие замечания про многострочное значение в протоколе сюда тоже относятся.
ФильтрНазваний
<ФильтрНазваний> <ID>ЖенскиеСапоги</ID> <НачалоНазвания>Женские сапоги </НачалоНазвания> <НачалоНазвания>Сапоги жен</НачалоНазвания> </ФильтрНазваний>
Эта секция настроек позволяет дополнительно к категориям ещё фильтровать товары по названиям.
<ID>- придуманный вами код для данного фильтра, чтобы потом на этот фильтр сослаться из других секций.<НачалоНазвания>- начало названия товара. Чувствительно к регистру (т.е. "Товар" и "товар" - это разные названия). Можно указывать несколько начал названий, как в примере.
На демонстрационной базе Управление торговлей 11.4 фильтр из примера отфильтрует по названиям следующие товары из справочника номенклатуры:
- Женские сапоги с искусственным мехом
- Женские сапоги с натуральным мехом
- Сапоги жен высокие
- Сапоги жен. низкие
На фильтр названий можно ссылаться из секции <ГруппаТоваров>. Ссылка из секции <ОписаниеКатегорий> не даст эффекта.
ОписаниеКатегорий
<ОписаниеКатегорий>
<ШаблонКатегорий1с>\Торговая деятельность\Обувь\{{ВидОбуви}}</ШаблонКатегорий1с>
<ШаблонКатегорийСайт>\Обувь\{{ВидОбуви}}</ШаблонКатегорийСайт>
<ПроизводительСайт>Обувная мануфактура</ПроизводительСайт>
<ВидЦен>Розничная</ВидЦен>
<ГруппаТоваров>
<ФильтрНазванийСсылка>ЖенскиеСапоги</ФильтрНазванийСсылка>
<ШаблонКатегорийСайт>\Обувь\Сапоги женские</ШаблонКатегорийСайт>
</ГруппаТоваров>
</ОписаниеКатегорий>
Это основная секция, она описывает порцию категорий в 1С, которая будет использоваться для синхронизации с сайтом. Таких порций может быть сколько надо. При обработке очередного товара в 1С, его категория последовательно сравнивается со всеми секциями ОписаниеКатегорий, в том порядке, в каком они расположены в файле НастройкиКатегорий.xml. Какая секция первой подойдёт - той секцией этот товар и будет обработан, оставшиеся секции ОписаниеКатегорий проверяться не будут.
<ШаблонКатегорий1с> - задаёт шаблон для фильтрации категорий из 1С.
Полное название категории выглядит примерно так: \ВерхняяКатегория\Подкатегория\ПодкатегорияПодкатегории\Итд,
например: \Торговая деятельность\Продукты, \Торговая деятельность\Продукты\Соки, \Торговая деятельность\Продукты\Кондитерские изделия\Праздничные наборы, \Торговая деятельность и т.д.
Шаблон представляет собой аналогичный текст, в котором некоторые части заменены на подстановки переменных такого вида: {{идентификатор}}. Просто текст без подстановок тоже является шаблоном,
он соответствует проверяемому тексту только в случае пролного совпадения. Например, шаблон \Торговая деятельность\Продукты\{{хвост}} подойдёт таким категориям из вышеупомянутых:
\Торговая деятельность\Продукты\Соки и \Торговая деятельность\Продукты\Кондитерские изделия\Праздничные наборы. А категория \Торговая деятельность\Продукты не подойдёт,
поскольку в её названии нет завершающего слэша после Продукты, а в шаблоне он есть.
<ШаблонКатегорийСайт> - задаёт шаблон для вычисления категорий сайта. Это может быть просто текст без подстановок, который задаёт конкретную категорию.
Либо же в этом шаблоне можно использовать подстановки переменных из входного шаблона.
Если этот шаблон не задан, то категория сайта будет такая же, как категория 1С.
Например:
<ШаблонКатегорий1с>\Торговая деятельность\Обувь\{{ВидОбуви}}</ШаблонКатегорий1с>
<ШаблонКатегорийСайт>\Обувь\{{ВидОбуви}}</ШаблонКатегорийСайт>
Категория 1С \Торговая деятельность\Обувь\Женская обувь будет преобразована в категорию \Обувь\Женская обувь на сайте.
Если этот шаблон не задан, то категория для новых товаров (на вкладке "Новые") не будет заполнена.
<ПроизводительСайт> - задаёт значение производителя для сайта. Это не шаблон, это конкретный текст. Если он не задан, то производитель для новых товаров (на вкладке "Новые") не будет заполнен.
<ВидЦен> - задаёт соответствующим товарам виды цен, отличные от базовых (указанных в настройках). Если виды цен заданы здесь, то базовые виды цен к этим товарам не применяются. Поэтому, если у товара нет подходящей цены из указанных здесь, то он будет проигнорирован.
<ГруппаТоваров> - эта секция выделяет часть товаров с помощью фильтра названий, и позволяет задать им другой шаблон категорий, и/или другого производителя.
Например:
<ОписаниеКатегорий>
<ШаблонКатегорий1с>\Торговая деятельность\Обувь\{{ВидОбуви}}</ШаблонКатегорий1с>
<ШаблонКатегорийСайт>\Обувь\{{ВидОбуви}}</ШаблонКатегорийСайт>
<ПроизводительСайт>Обувная мануфактура</ПроизводительСайт>
<ГруппаТоваров>
<ФильтрНазванийСсылка>ЖенскиеСапоги</ФильтрНазванийСсылка>
<ШаблонКатегорийСайт>\Обувь\Сапоги женские</ШаблонКатегорийСайт>
</ГруппаТоваров>
</ОписаниеКатегорий>
В соответствии с этой настройкой, большинство обуви из демонстрационной базы УТ 11.4 попадёт на сайте в категории \Обувь\Женская обувь, \Обувь\Кроссовки, и \Обувь\Мужская обувь.
Однако товары, относящиеся к женским сапогам, попадут в категорию \Обувь\Сапоги женские.
Производитель у всех будет один и тот же (Обувная мануфактура), поскольку он не переопределяется для группы товаров.
Далее: Дополнительные возможности / Мультисклад
Обратно: Дополнительные возможности / Автозапуск и автовыполнение
Документация Sync1C - содержание
