Возникла такая проблема..
При импорте данных из 1С нужно импортировать поля TITLE, DESCRIPTION
Для начала хотя-бы TITLE. и хотя-бы для категорий товаров (не для самих товаров)
В файле commerceML2.xsl поле TITLE заполняется так
<group name="common">
<title>Основные параметры</title>
<property name="title" type="string">
<title>Поле TITLE</title>
<value><xsl:value-of select="Наименование" /></value>
</property>
<property name="h1" type="string">
<title>Поле H1</title>
<value><xsl:value-of select="Наименование" /></value>
</property>
</group>
я сделал в выгрузке из 1С дополнительное поле TITLE (кусок файла import.xml )
<Группа>
<Ид>d359e107-5f8b-4260-82da-9e0cf73fad3f</Ид>
<Наименование>Телевизоры</Наименование>
<TITLE>Купить Телевизоры</TITLE>
</Группа>
а шаблон commerceML2.xsl поменял на
<group name="common">
<title>Основные параметры</title>
<property name="title" type="string">
<title>Поле TITLE</title>
<value><xsl:value-of select="TITLE" /></value>
</property>
<property name="h1" type="string">
<title>Поле H1</title>
<value><xsl:value-of select="Наименование" /></value>
</property>
</group>
НО при импорте поле TITLE становится пустым! Причем если поменять обратно на "Наименование" - оно заполняется наименованием, т.е. поля H1 и TITLE становятся одинаковые. А если H1 <> TITLE то TITLE просто остается пустым.
Вопрос почему?
Что уже пробовал...
Даже если в выгрузке поставить Наименование = TITLE, все равно TITLE остается пустым
<Группа>
<Ид>d359e107-5f8b-4260-82da-9e0cf73fad3f</Ид>
<Наименование>Телевизоры</Наименование>
<TITLE>Телевизоры</TITLE>
</Группа>
Хотя если посмотреть в oXygen'е, то выходные данные (umiDump20) получаются абсолютно одинаковые
<group name="common">
<title>Основные параметры</title>
<property name="title" type="string">
<title>Поле TITLE</title>
<value><![CDATA[Телевизоры]]></value>
</property>
<property name="h1" type="string">
<title>Поле H1</title>
<value><![CDATA[Телевизоры]]></value>
</property>
</group>
т.е. смотрите.. если в шаблоне сделать
<property name="title" type="string">
<title>Поле TITLE</title>
<value><xsl:value-of select="Наименование" /></value>
</property>
<property name="h1" type="string">
<title>Поле H1</title>
<value><xsl:value-of select="TITLE" /></value>
</property>
То (хотя TITLE = Наименование) и в выходном файле получаются одинаковые данные, поле TITLE все-равно остается пустым!!!
А если сделать (т.е. как было изначально)
<property name="title" type="string">
<title>Поле TITLE</title>
<value><xsl:value-of select="Наименование" /></value>
</property>
<property name="h1" type="string">
<title>Поле H1</title>
<value><xsl:value-of select="Наименование" /></value>
</property>
то поле TITLE заполняется правильно! (становится равным наименованию)
бред какой-то..
Кажется нашел пути решения! По крайней мере понял почему у меня не работало...
Все что написал ниже только мое мнение, на правдивость совершенно не претендую ;D
В общем (после долгих экспериментов) понял, что входной файл import.xml прогоняется через схему валидации (или как там она называется). Для CommerceML она называется CommerceML2.04.xsd (в папке \xsl\xsd). И все теги которые не вписываются в эту схему просто удаляются (или игнорируются)!
Поэтому нельзя во входном файле импорта добавлять любые теги.
Теперь у меня снова возникли вопросы.
1) Как и что мне добавить в эту схему, чтобы у меня эти теги воспринимались
я вроде нашел кусок, который отвечает за группы (категории) товаров
<cml:complexType name="Группа">
<cml:annotation>
<cml:documentation>Описывает группу товаров в каталоге </cml:documentation>
</cml:annotation>
<cml:sequence>
<cml:element name="Ид" type="ИдентфикаторГлобальныйТип">
<cml:annotation>
<cml:documentation>Идентификатор группы товаров в классификаторе</cml:documentation>
</cml:annotation>
</cml:element>
<cml:element name="Наименование" type="КомментарийТип">
<cml:annotation>
<cml:documentation>Наименование группы товаров</cml:documentation>
</cml:annotation>
</cml:element>
<cml:element name="Описание" type="КомментарийТип" minOccurs="0"/>
<cml:element name="Свойства" minOccurs="0">
<cml:annotation>
<cml:documentation>Содержит коллекцию свойств, значения которых можно или нужно указать для товаров, принадлежащих данной группе, в каталоге, пакете предложений, документах</cml:documentation>
</cml:annotation>
<cml:complexType>
<cml:sequence>
<cml:element name="Свойство" type="Свойство" maxOccurs="unbounded"/>
</cml:sequence>
</cml:complexType>
</cml:element>
<cml:element name="Группы" minOccurs="0">
<cml:annotation>
<cml:documentation>Содержит описание вложенных групп товаров</cml:documentation>
</cml:annotation>
<cml:complexType>
<cml:sequence>
<cml:element name="Группа" type="Группа" maxOccurs="unbounded"/>
</cml:sequence>
</cml:complexType>
</cml:element>
</cml:sequence>
</cml:complexType>
2) К чему (плохому) может привезти изменение схемы валидации?
3) Схема обновляется при обновлении сайта? Можно-ли сделать кастомную схему? чтобы не затиралась при обновлении
4) Есть-ли другие пути решения?
Схема не помогла :'(
Согласно схеме у каждой группы может быть поле "описание" типа строка
<cml:element name="Наименование" type="КомментарийТип">
<cml:annotation>
<cml:documentation>Наименование группы товаров</cml:documentation>
</cml:annotation>
</cml:element>
<cml:element name="Описание" type="КомментарийТип" minOccurs="0"/>
<cml:element name="Свойства" minOccurs="0">
я решил его использовать для заполнения например TITLE ( или DESCRIPTION, в принципе не важно)
Переделал выгрузку:
<Группа>
<Ид>21de84cb-13d1-4d2d-ac54-5824c5e10d7a</Ид>
<Наименование>Телевизоры</Наименование>
<Описание>Купить Телевизоры</Описание>
</Группа>
Переделал шаблон импорта commerceML2.xsl
<property name="title" type="string">
<title>Поле TITLE</title>
<value>
<xsl:text>Купить </xsl:text>
<xsl:value-of select="Описание" />
</value>
</property>
<property name="h1" type="string">
<title>Поле H1</title>
<value><xsl:value-of select="Наименование" /></value>
</property>
Все равно TITLE остается пустым!!
Причем текст вставляется в поле TITLE - ("Купить") , т.е. почему-то не находит тег "описание"
Что еще можно попробовать?
PS кстати, из схемы видно, что для каждой группы можно задать свои свойства, которые будут принадлежать только этой группе, но в шаблоне импорта эти свойства не обрабатываются!
Обрабатываются только свойства товаров.
Свойства групп очень удобно использовать, например для количества товаров в этой группе
Или для списка производителей в этой группе и т.д.