Использование выпадающего списка с множественным выбором — различия между версиями
VITL' (обсуждение | вклад) (Новая страница: « category:Интеграция с 1С В некоторых конфигурациях 1С возможно указать в справочнике нескол…») |
(нет различий)
|
Текущая версия на 21:44, 28 марта 2011
В некоторых конфигурациях 1С возможно указать в справочнике несколько значений, это может быть информация о том, в каких магазинах находится товар. В самом файле import.xml, в узле Товар/ЗначенияСвойств, значения могут быть представлены в следующем виде:
<ЗначенияСвойства>
<Ид>00002</Ид>
<Наименование>Аптеки</Наименование>
<Значение>Аптека №1</Значение>
<Значение>Аптека №2</Значение>
<Значение>Аптека №3</Значение>
<Значение>Аптека №4</Значение>
<Значение>Аптека №5</Значение>
<Значение>Аптека №9</Значение>
</ЗначенияСвойства>
Чтобы при импорте данных, было создано поле "Аптеки", типа "Выпадающий список с множественным выбором", и чтобы у каждого объекта каталога были выбраны соответствующие Аптеки, необходимо настроить XSL-шаблон импорта: \xsl\import\custom\commerceML2.xsl
В данный шаблон, из файла \xsl\import\commerceML2.xsl можно скопировать блок:
<xsl:template match="ЗначенияСвойств/ЗначенияСвойства">
...
</xsl:template>
и нужным образом настроить, один из вариантов (+ дополнительный шаблон) может быть таким:
<xsl:template match="ЗначенияСвойств/ЗначенияСвойства">
<xsl:param name="property" select="key('property', Ид)" />
<xsl:param name="value-id" select="string(ИдЗначения)" />
<xsl:param name="data-type">
<xsl:choose>
<xsl:when test="$property/ТипыЗначений/ТипЗначений/Тип = 'Число'">float</xsl:when>
<xsl:when test="$property/ТипыЗначений/ТипЗначений/Тип = 'Булево'">boolean</xsl:when>
<xsl:when test="$property/ТипыЗначений/ТипЗначений/Тип = 'Дата'">date</xsl:when>
<xsl:when test="$property/ТипыЗначений/ТипЗначений/Тип = 'Справочник'">relation</xsl:when>
<xsl:otherwise>string</xsl:otherwise>
</xsl:choose>
</xsl:param>
<xsl:choose>
<xsl:when test="Наименование = 'Аптеки'">
<property name="{$property/Наименование}" title="{$property/Наименование}" type="relation" is-public="1" allow-runtime-add="1">
<type data-type="relation" multiple="multiple" />
<title>
<xsl:value-of select="$property/Наименование"/>
</title>
<value>
<xsl:apply-templates select="Значение" mode="relation-multiple-value" />
</value>
</property>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$property">
<property name="{$property/Наименование}" title="{$property/Наименование}" type="{$data-type}" is-public="1" allow-runtime-add="1">
<type data-type="{$data-type}" />
<title>
<xsl:value-of select="$property/Наименование"/>
</title>
<value>
<xsl:choose>
<xsl:when test="$data-type = 'relation'">
<xsl:apply-templates select="$property/ТипыЗначений/ТипЗначений/ВариантыЗначений/ВариантЗначения[Ид = $value-id]" mode="relation-value" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="Значение" />
</xsl:otherwise>
</xsl:choose>
</value>
</property>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="Значение" mode="relation-multiple-value">
<item name="{.}" />
</xsl:template>
Основное, на что необходимо обратить внимание, это на атрибут multiple="multiple", в узле type:
<type data-type="relation" multiple="multiple" />