Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
12 Дек 2017, 07:52
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Из 1с:Предприятие в Битрикс  (Прочитано 2967 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Борис Гаркун

  • *
  • Сообщений: 32
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-08-11
  • Сайт: 
  • Профессия: Разработчик 1С
Здравствуйте.

Как можно выгрузить поле Комментарий справочника Номенклатуры 1с на Битрикс-сайт так, чтобы значение поля Комментарий (где забито описание товара) появилось в детальном описании товара на сайте?

Вот текст процедуры,  которой пытался сформировать подхватываемый Битриксом файл импорта данных о товарах. Процедура идёт в составе стандартной обработки ОбменССайтом, я ее немного доработал. Мой код начинается после строки "// мой код". Может укажите, где я ошибся?

Процедура ЗаполнитьСписокЗначенийРеквизитовТовара(СтруктураИзменений, СписокЗначенийCML, Товар, КаталогНаДиске, ВыгруженоКартинок)

Если Товар.НоменклатураСсылка.Родитель <> Справочники.Номенклатура.ПустаяСсылка() Тогда

ИдГруппы = СформироватьИдентификаторТовара(Товар.НоменклатураСсылка.Родитель);
ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "Группы");
ДобавитьУзелCML(СписокЗначенийCML    , "Ид", ИдГруппы);
ДобавитьКонецЭлементаCML(СписокЗначенийCML);

КонецЕсли;

ДобавитьУзелCML(СписокЗначенийCML, "Описание", Товар.НоменклатураСсылка.ДополнительноеОписаниеНоменклатуры);

Если ВыгружатьКартинки Тогда

Если ЗначениеЗаполнено(Товар.НоменклатураСсылка.ОсновноеИзображение) Тогда

Если ВыгружатьТолькоИзменения Тогда

ВыгрузитьДаннуюКартинку = (СтруктураИзменений.Картинки.Найти(Товар.НоменклатураСсылка.ОсновноеИзображение) <> Неопределено);

Иначе
ВыгрузитьДаннуюКартинку = Истина;
КонецЕсли;

Если ВыгрузитьДаннуюКартинку Тогда

СтруктураДанныхКартинки = ВыгрузитьКартинку(Товар.НоменклатураСсылка, КаталогНаДиске);

Если СтруктураДанныхКартинки.Размер <> "0" Тогда

ДобавитьУзелCML(СписокЗначенийCML, "Картинка", СтруктураДанныхКартинки.Адрес);
ВыгруженоКартинок = ВыгруженоКартинок + 1;

КонецЕсли;

КонецЕсли;

Иначе

// картинки нет вообще
ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "Картинка");
ДобавитьКонецЭлементаCML(СписокЗначенийCML);

КонецЕсли;

КонецЕсли;

СписокЗначенийСвойств = Новый СписокЗначений;
Для Каждого СтрокаХарактеристикаСвойство Из Товар.Строки Цикл

Для Каждого СтрокаСвойствоНоменклатуры Из СтрокаХарактеристикаСвойство.Строки Цикл

Если ЗначениеЗаполнено(СтрокаСвойствоНоменклатуры.СвойствоНоменклатуры)
И СписокЗначенийСвойств.НайтиПоЗначению(СтрокаСвойствоНоменклатуры.СвойствоНоменклатуры) = Неопределено Тогда

СписокЗначенийСвойств.Добавить(СтрокаСвойствоНоменклатуры.СвойствоНоменклатуры, Строка(СтрокаСвойствоНоменклатуры.СвойствоНоменклатурыЗначение));

КонецЕсли;

КонецЦикла;

КонецЦикла;

Если СписокЗначенийСвойств.Количество() > 0 Тогда

ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "ЗначенияСвойств");
Для Каждого ЗначениеСвойства Из СписокЗначенийСвойств Цикл

ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "ЗначенияСвойства");
Ид = Строка(ЗначениеСвойства.Значение.УникальныйИдентификатор());
ДобавитьУзелCML(СписокЗначенийCML, "Ид", Ид);
ДобавитьУзелCML(СписокЗначенийCML, "Значение", ЗначениеСвойства.Представление);
ДобавитьКонецЭлементаCML(СписокЗначенийCML);

КонецЦикла;

ДобавитьКонецЭлементаCML(СписокЗначенийCML);

КонецЕсли;

Если Товар.НоменклатураСсылка.СтавкаНДС <> Перечисления.СтавкиНДС.БезНДС Тогда

ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "СтавкиНалогов");
ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "СтавкаНалога");
ДобавитьУзелCML(СписокЗначенийCML, "Наименование", НаименованиеНалога);
ДобавитьУзелCML(СписокЗначенийCML, "Ставка"      , ПолучитьПоСтавкеНДСЗначениеДляВыгрузки(Товар.НоменклатураСсылка.СтавкаНДС));
ДобавитьКонецЭлементаCML(СписокЗначенийCML);
ДобавитьКонецЭлементаCML(СписокЗначенийCML);

КонецЕсли;

ЗаписанЗаголовокВыгрузкиХарактеристик = Ложь;

Если Товар.НоменклатураСсылка.ВестиУчетПоХарактеристикам
И ЗначениеЗаполнено(Товар.ХарактеристикаСсылка) Тогда

Для Каждого СтрокаХарактеристикаСвойство Из Товар.Строки Цикл

Если Не ЗначениеЗаполнено(СтрокаХарактеристикаСвойство.ХарактеристикаЗначениеСвойства)
ИЛИ НЕ ЗначениеЗаполнено(ФорматНаименованияДляCML(СтрокаХарактеристикаСвойство.ХарактеристикаСвойство)) Тогда

Продолжить;

КонецЕсли;

Если НЕ ЗаписанЗаголовокВыгрузкиХарактеристик Тогда

ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "ХарактеристикиТовара");
ЗаписанЗаголовокВыгрузкиХарактеристик = Истина;

КонецЕсли;

ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "ХарактеристикаТовара");
ДобавитьУзелCML(СписокЗначенийCML, "Наименование", ФорматНаименованияДляCML(СтрокаХарактеристикаСвойство.ХарактеристикаСвойство));
ДобавитьУзелCML(СписокЗначенийCML, "Значение"    , СтрокаХарактеристикаСвойство.ХарактеристикаЗначениеСвойства);
ДобавитьКонецЭлементаCML(СписокЗначенийCML);


КонецЦикла;

Если ЗаписанЗаголовокВыгрузкиХарактеристик Тогда
ДобавитьКонецЭлементаCML(СписокЗначенийCML);
КонецЕсли;

КонецЕсли;

// мой код
ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "ХарактеристикаТовара");
ДобавитьУзелCML(СписокЗначенийCML, "Наименование", ФорматНаименованияДляCML("Описание товара"));
ДобавитьУзелCML(СписокЗначенийCML, "Значение"    , Товар.НоменклатураСсылка.Комментарий);
ДобавитьКонецЭлементаCML(СписокЗначенийCML);
//мой код - конец

ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "ЗначенияРеквизитов");

ДобавитьЗначениеРеквизитаВСписок(СписокЗначенийCML, "ВидНоменклатуры", Товар.ВидНоменклатуры);
ДобавитьЗначениеРеквизитаВСписок(СписокЗначенийCML, "ТипНоменклатуры", Товар.ТипНоменклатуры);
ДобавитьЗначениеРеквизитаВСписок(СписокЗначенийCML, "Полное наименование", Товар.НоменклатураСсылка.НаименованиеПолное);

Если ЗначениеЗаполнено(Товар.НоменклатураСсылка.ЕдиницаХраненияОстатков) Тогда
// передадим вес товара
ДобавитьЗначениеРеквизитаВСписок(СписокЗначенийCML, "Вес", мКоэффициентПересчетаВесаТоваровВГраммыДляОбменаССайтом * Товар.НоменклатураСсылка.ЕдиницаХраненияОстатков.Вес);
КонецЕсли;

ДобавитьКонецЭлементаCML(СписокЗначенийCML);

СтатусУдаления = "";
Если Товар.НоменклатураСсылка.ПометкаУдаления
ИЛИ Товар.ХарактеристикаСсылка.ПометкаУдаления Тогда
СтатусУдаления = "Удален";
КонецЕсли;

ДобавитьУзелCML(СписокЗначенийCML, "Статус", СтатусУдаления);

КонецПроцедуры
Моя конфигурация: 1С:Предприятие 8.1 (8.1.13.41). "Управление торговлей", 10.3 (10.3.5.1). 1с:Битрикс, Управление сайтом(малый бизнес) 10.0.7


Оффлайн Борис Гаркун

  • *
  • Сообщений: 32
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-08-11
  • Сайт: 
  • Профессия: Разработчик 1С
Странное получилось форматирование. Повтор:

Процедура ЗаполнитьСписокЗначенийРеквизитовТовара(СтруктураИзменений, СписокЗначенийCML, Товар, КаталогНаДиске, ВыгруженоКартинок)
   
   Если Товар.НоменклатураСсылка.Родитель <> Справочники.Номенклатура.ПустаяСсылка() Тогда
      
      ИдГруппы = СформироватьИдентификаторТовара(Товар.НоменклатураСсылка.Родитель);
      ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "Группы");            
      ДобавитьУзелCML(СписокЗначенийCML         , "Ид", ИдГруппы);
      ДобавитьКонецЭлементаCML(СписокЗначенийCML);
      
   КонецЕсли;   
   
   ДобавитьУзелCML(СписокЗначенийCML, "Описание", Товар.НоменклатураСсылка.ДополнительноеОписаниеНоменклатуры);
   
   Если ВыгружатьКартинки Тогда
      
      Если ЗначениеЗаполнено(Товар.НоменклатураСсылка.ОсновноеИзображение) Тогда
      
         Если ВыгружатьТолькоИзменения Тогда
            
            ВыгрузитьДаннуюКартинку = (СтруктураИзменений.Картинки.Найти(Товар.НоменклатураСсылка.ОсновноеИзображение) <> Неопределено);
            
         Иначе
            ВыгрузитьДаннуюКартинку = Истина;
         КонецЕсли;
         
         Если ВыгрузитьДаннуюКартинку Тогда
         
            СтруктураДанныхКартинки = ВыгрузитьКартинку(Товар.НоменклатураСсылка, КаталогНаДиске);
            
            Если СтруктураДанныхКартинки.Размер <> "0" Тогда
               
               ДобавитьУзелCML(СписокЗначенийCML, "Картинка", СтруктураДанныхКартинки.Адрес);
               ВыгруженоКартинок    = ВыгруженоКартинок + 1;
               
            КонецЕсли;   
            
         КонецЕсли;
         
      Иначе
         
         // картинки нет вообще
         ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "Картинка");   
         ДобавитьКонецЭлементаCML(СписокЗначенийCML);
         
      КонецЕсли;
                  
   КонецЕсли;
   
   СписокЗначенийСвойств = Новый СписокЗначений;
   Для Каждого СтрокаХарактеристикаСвойство Из Товар.Строки Цикл
      
      Для Каждого СтрокаСвойствоНоменклатуры Из СтрокаХарактеристикаСвойство.Строки Цикл
         
         Если ЗначениеЗаполнено(СтрокаСвойствоНоменклатуры.СвойствоНоменклатуры)
            И СписокЗначенийСвойств.НайтиПоЗначению(СтрокаСвойствоНоменклатуры.СвойствоНоменклатуры) = Неопределено Тогда
            
            СписокЗначенийСвойств.Добавить(СтрокаСвойствоНоменклатуры.СвойствоНоменклатуры, Строка(СтрокаСвойствоНоменклатуры.СвойствоНоменклатурыЗначение));
            
         КонецЕсли;   
         
      КонецЦикла;      
      
   КонецЦикла;
   
   Если СписокЗначенийСвойств.Количество() > 0 Тогда
      
      ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "ЗначенияСвойств");
      Для Каждого ЗначениеСвойства Из СписокЗначенийСвойств Цикл
         
         ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "ЗначенияСвойства");            
         Ид = Строка(ЗначениеСвойства.Значение.УникальныйИдентификатор());
         ДобавитьУзелCML(СписокЗначенийCML, "Ид", Ид);
         ДобавитьУзелCML(СписокЗначенийCML, "Значение", ЗначениеСвойства.Представление);
         ДобавитьКонецЭлементаCML(СписокЗначенийCML);
         
      КонецЦикла;   
      
      ДобавитьКонецЭлементаCML(СписокЗначенийCML);
      
   КонецЕсли;
   
   Если Товар.НоменклатураСсылка.СтавкаНДС <> Перечисления.СтавкиНДС.БезНДС Тогда
      
      ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "СтавкиНалогов");
      ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "СтавкаНалога");
      ДобавитьУзелCML(СписокЗначенийCML, "Наименование", НаименованиеНалога);
      ДобавитьУзелCML(СписокЗначенийCML, "Ставка"      , ПолучитьПоСтавкеНДСЗначениеДляВыгрузки(Товар.НоменклатураСсылка.СтавкаНДС));
      ДобавитьКонецЭлементаCML(СписокЗначенийCML);
      ДобавитьКонецЭлементаCML(СписокЗначенийCML);
      
   КонецЕсли;   
   
   ЗаписанЗаголовокВыгрузкиХарактеристик = Ложь;
   
   Если Товар.НоменклатураСсылка.ВестиУчетПоХарактеристикам
      И ЗначениеЗаполнено(Товар.ХарактеристикаСсылка) Тогда
               
      Для Каждого СтрокаХарактеристикаСвойство Из Товар.Строки Цикл
         
         Если Не ЗначениеЗаполнено(СтрокаХарактеристикаСвойство.ХарактеристикаЗначениеСвойства)
            ИЛИ НЕ ЗначениеЗаполнено(ФорматНаименованияДляCML(СтрокаХарактеристикаСвойство.ХарактеристикаСвойство)) Тогда
            
            Продолжить;
            
         КонецЕсли;
         
         Если НЕ ЗаписанЗаголовокВыгрузкиХарактеристик Тогда
                  
            ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "ХарактеристикиТовара");
            ЗаписанЗаголовокВыгрузкиХарактеристик = Истина;
            
         КонецЕсли;
         
         ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "ХарактеристикаТовара");
         ДобавитьУзелCML(СписокЗначенийCML, "Наименование", ФорматНаименованияДляCML(СтрокаХарактеристикаСвойство.ХарактеристикаСвойство));
         ДобавитьУзелCML(СписокЗначенийCML, "Значение"    , СтрокаХарактеристикаСвойство.ХарактеристикаЗначениеСвойства);
         ДобавитьКонецЭлементаCML(СписокЗначенийCML);
         
         
      КонецЦикла;
      
      Если ЗаписанЗаголовокВыгрузкиХарактеристик Тогда
         ДобавитьКонецЭлементаCML(СписокЗначенийCML);
      КонецЕсли;
         
   КонецЕсли;
   
   // мой код
    ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "ХарактеристикаТовара");
    ДобавитьУзелCML(СписокЗначенийCML, "Наименование", ФорматНаименованияДляCML("Описание товара"));
    ДобавитьУзелCML(СписокЗначенийCML, "Значение"    , Товар.НоменклатураСсылка.Комментарий);
    ДобавитьКонецЭлементаCML(СписокЗначенийCML);
    //мой код - конец
   
    ДобавитьНачалоЭлементаCML(СписокЗначенийCML, "ЗначенияРеквизитов");
   
   ДобавитьЗначениеРеквизитаВСписок(СписокЗначенийCML, "ВидНоменклатуры", Товар.ВидНоменклатуры);
   ДобавитьЗначениеРеквизитаВСписок(СписокЗначенийCML, "ТипНоменклатуры", Товар.ТипНоменклатуры);
   ДобавитьЗначениеРеквизитаВСписок(СписокЗначенийCML, "Полное наименование", Товар.НоменклатураСсылка.НаименованиеПолное);
   
   Если ЗначениеЗаполнено(Товар.НоменклатураСсылка.ЕдиницаХраненияОстатков) Тогда
      // передадим вес товара
      ДобавитьЗначениеРеквизитаВСписок(СписокЗначенийCML, "Вес", мКоэффициентПересчетаВесаТоваровВГраммыДляОбменаССайтом * Товар.НоменклатураСсылка.ЕдиницаХраненияОстатков.Вес);
   КонецЕсли;   
      
   ДобавитьКонецЭлементаCML(СписокЗначенийCML);
   
   СтатусУдаления = "";
   Если Товар.НоменклатураСсылка.ПометкаУдаления
    ИЛИ Товар.ХарактеристикаСсылка.ПометкаУдаления Тогда
      СтатусУдаления = "Удален";
   КонецЕсли;
   
   ДобавитьУзелCML(СписокЗначенийCML, "Статус", СтатусУдаления);
   
КонецПроцедуры
Моя конфигурация: 1С:Предприятие 8.1 (8.1.13.41). "Управление торговлей", 10.3 (10.3.5.1). 1с:Битрикс, Управление сайтом(малый бизнес) 10.0.7


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
167 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
55 Сообщений
alex0402
46 Сообщений
andron81_81
42 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
28 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 346
  • Точка Скрытых: 0
  • Точка Пользователей: 6
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal