Написание шаблона выгрузки 1С на примере выгрузки нескольких картинок

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 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() &gt; 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.