Написание шаблона выгрузки 1С на примере выгрузки нескольких картинок
Актуально для версии 18.
В данной статье мы покажем пример написания шаблона выгрузки.
Файл с выгружаемыми данными:
<?xml version="1.0" encoding="UTF-8"?>
<КоммерческаяИнформация ВерсияСхемы="2.04" ФорматДаты="ДФ=yyyy-MM-dd; ДЛФ=D" ФорматВремени="ДФ=ЧЧ:мм:сс; ДЛФ=T" РазделительДатаВремя="T" ФорматСуммы="ЧЦ=18; ЧДЦ=2; ЧРД=,; ЧГ=" ФорматКоличества="ЧЦ=18; ЧДЦ=2; ЧРД=,; ЧГ=" ДатаФормирования="2010-02-07T20:17:07">
<Классификатор>
<Ид>caf216f3-3759-4cd1-851b-7f6bf3b6ae25</Ид>
<Наименование>Классификатор (Каталог бытовой техники из 1С)</Наименование>
<Группы>
<Группа>
<Ид>bd72d924-55bc-11d9-848a-00112f43529a</Ид>
<Наименование>Бытовая техника</Наименование>
</Группа>
</Группы>
</Классификатор>
<Каталог СодержитТолькоИзменения="false">
<Ид>caf216f3-3759-4cd1-851b-7f6bf3b6ae25</Ид>
<ИдКлассификатора>caf216f3-3759-4cd1-851b-7f6bf3b6ae25</ИдКлассификатора>
<Наименование>Каталог бытовой техники из 1С</Наименование>
<Товары>
<Товар>
<Ид>cbcf492a-55bc-11d9-848a-00112f43529a</Ид>
<Штрихкод>2000001914014</Штрихкод>
<Артикул>Х-1234</Артикул>
<Наименование>BOSCH</Наименование>
<БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт</БазоваяЕдиница>
<ПолноеНаименование>after_rename</ПолноеНаименование>
<Группы>
<Ид>bd72d924-55bc-11d9-848a-00112f43529a</Ид>
</Группы>
<Картинка>import_files/test_dir/1.jpeg</Картинка>
<Картинка>import_files/test_dir/2.jpeg</Картинка>
</Товар>
</Товары>
</Каталог>
</КоммерческаяИнформация>
Наш шаблон:
<xsl:template match="Товар/Картинка[position() > 1]">
<xsl:if test="string-length(.)">
<property name="photo{position()}" title="Картинка{position()}" type="img_file" visible="visible" allow-runtime-add="1">
<type data-type="img_file"/>
<title>Картинка</title>
<value>./images/cms/data/<xsl:value-of select="."/></value>
</property>
</xsl:if>
</xsl:template>
Началом выгрузки каталога является тег <Каталог>, то есть для того, чтобы добраться до тега <Картинка> в атрибут match <xsl:template> необходимо добавить путь “Тoвар/Картинка”.
Также для того, чтобы правило применялось только к нескольким картинкам, необходимо добавить правило [position() > 1], то есть правило применяется, если количество тегов <Картинка> больше чем 1.
Затем добавим условие: что строка, заключенной в теги <Картинка>, не должна быть пустой -
<xsl:if test="string-length(.)">
Так как изображение — это свойство страницы, то для добавления его в систему нужно добавить тег <property> и атрибуты к нему.
Подробное описание добавленных атрибутов: Документация
Так как добавлен атрибут allow-runtime-add = 1, то необходимо добавить тег <type> с атрибутом data-type
<type data-type="img_file"/>
Подробное описание: Документация
Далее добавляем <title> с названием и значение <value>:
./images/cms/data/ — это стандартный путь, к которому добавляется все, что заключено в теги “Картинка” — import_files/test_dir/1.jpeg.