Появился заказ сделать дерево групп для сайта битрикс для 1С УФН 1.6

Заказчик сам в экселе сделал дерево для сайта.

Нужно это дерево загрузить в настройку обмена с сайтом.

Порядок работ:

1 Файл из эксель импортировать в csv

2 На основании этого файла создать дерево значений. Подобная работа уже рассматривалась здесь.

3 Создать таблицу значений из дерева значений.

4 На основании таблицы сделать xml для модуля 1с битрикс

5 Загрузить xml в модуль битрикс

Можно сразу программно товары в дерево групп для сайта, но заказчик решил пока подумать как лучше это реализовать.

Модуль битрикс для 1С можно скачать тут.

После установки модуля идем

Создаем новый обмен и идем в "Выгрузка информации о номенклатуре"

Там видим "Настроить дерево групп". Это как раз дерево для сайта.

Вот его нужно создать.

Есть 3 варианта создания дерева групп для сайта:

  1. Вручную
  2. Подключиться напрямую к хранилищу, создать дерево групп и сохранить
  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С 8(495)005-62-29

 skype: live:di-sem

Связь с программистом 1с через телеграм @programmist_1C

Заявка программисту 1С Отправить заявку