Появился заказ сделать дерево групп для сайта битрикс для 1С УФН 1.6
Заказчик сам в экселе сделал дерево для сайта.
Нужно это дерево загрузить в настройку обмена с сайтом.
Порядок работ:
1 Файл из эксель импортировать в csv
2 На основании этого файла создать дерево значений. Подобная работа уже рассматривалась здесь.
3 Создать таблицу значений из дерева значений.
4 На основании таблицы сделать xml для модуля 1с битрикс
5 Загрузить xml в модуль битрикс
Можно сразу программно товары в дерево групп для сайта, но заказчик решил пока подумать как лучше это реализовать.
Модуль битрикс для 1С можно скачать тут.
После установки модуля идем
Создаем новый обмен и идем в "Выгрузка информации о номенклатуре"
Там видим "Настроить дерево групп". Это как раз дерево для сайта.
Вот его нужно создать.
Есть 3 варианта создания дерева групп для сайта:
- Вручную
- Подключиться напрямую к хранилищу, создать дерево групп и сохранить
- Создать xml файл и потом через импорт его загрузить
1-й вариант нам не подходит т.к. групп более 2000
2-й вариант уже делали тут т.к. не было возможности импорта xml для той версии
Поэтому попробуем 3-й вариант.
Самое главное сделать таблицу значений
Вот код, который из этой таблицы делает xml
&НаКлиенте Процедура СделатьХМЛДляСайта() ПутьКФайлуДляЗаписи=лев(Путь,СтрДлина(путь)-3)+"xml"; ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ПутьКФайлуДляЗаписи); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьXML.ЗаписатьНачалоЭлемента("Разделы"); //пишем начальный элемент (инфоблок - каталог) //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! блок xml!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ЗаписьXML.ЗаписатьНачалоЭлемента("Раздел"); //ид ЗаписьXML.ЗаписатьНачалоЭлемента("Ид"); ЗаписьXML.ЗаписатьТекст(ИДКаталога); ЗаписьXML.ЗаписатьКонецЭлемента(); // ид //наименование ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование"); ЗаписьXML.ЗаписатьТекст(ИДКаталога); ЗаписьXML.ЗаписатьКонецЭлемента(); // Наименование //Это инфоблок ЗаписьXML.ЗаписатьНачалоЭлемента("ЭтоИнфоблок"); ЗаписьXML.ЗаписатьТекст("true"); ЗаписьXML.ЗаписатьКонецЭлемента(); // ЭтоИнфоблок //ИдРодителя ЗаписьXML.ЗаписатьНачалоЭлемента("ИдРодителя"); //ЗаписьXML.ЗаписатьТекст(родитель); ЗаписьXML.ЗаписатьКонецЭлемента(); // ИдРодителя ЗаписьXML.ЗаписатьКонецЭлемента();// раздел //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!конец блок xml!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //пишем остальные элементы для каждого стр из таблицаДляХМЛ цикл //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! блок xml!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ЗаписьXML.ЗаписатьНачалоЭлемента("Раздел"); //ид ЗаписьXML.ЗаписатьНачалоЭлемента("Ид"); ЗаписьXML.ЗаписатьТекст(стр.ид); ЗаписьXML.ЗаписатьКонецЭлемента(); // ид //наименование ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование"); ЗаписьXML.ЗаписатьТекст(стр.Каталог); ЗаписьXML.ЗаписатьКонецЭлемента(); // Наименование //Это инфоблок ЗаписьXML.ЗаписатьНачалоЭлемента("ЭтоИнфоблок"); ЗаписьXML.ЗаписатьТекст("false"); ЗаписьXML.ЗаписатьКонецЭлемента(); // ЭтоИнфоблок //ИдРодителя ЗаписьXML.ЗаписатьНачалоЭлемента("ИдРодителя"); ЗаписьXML.ЗаписатьТекст(стр.РодительИД); ЗаписьXML.ЗаписатьКонецЭлемента(); // ИдРодителя ЗаписьXML.ЗаписатьКонецЭлемента();// раздел //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!конец блок xml!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! конецЦикла; ЗаписьXML.ЗаписатьКонецЭлемента();// разделы ЗаписьXML.Закрыть(); конецПроцедуры
"ИДкаталога" берется тут
Далее полученный файл просто нужно загрузить
Мне для полного решения задачи пришлось сделать вот такую обработку:
Выкладывать ее целиком нет смысла, т.к. она сделана именно под потребности заказчика.
Вам может быть интересно:
- Автоматическое создание в 1С произвольного дерева каталога для битрикс для УТ 10.3
-
Выгрузка данных в битрикс (import.xml offers.xml) из не типовой конфигурации ут11.2
Можете заказать обработку "Автоматическое создание дерево групп для Битрикс" у меня.