Расширенная информация о контрагенте для выгрузки заказов
Актуально для версии 21
Задача
Добавить в файл с заказами, который выгружается с сайта в 1С, более подробную информацию о контрагенте.
В рамках данной статьи будет показано, как добавить в файл следующую информацию:
- телефон
- адрес
Решение
Вся работа будет производиться в файле styles\common\xsl\export\custom\ordersCommerceML.xsl
1. Копируем в файл styles\common\xsl\export\custom\ordersCommerceML.xsl из файла styles\common\xsl\export\ordersCommerceML.xsl следующие шаблоны:
<xsl:template match="object" mode="order">
<xsl:template match="object" mode="customer">
Примечание: шаблон - это блок кода, начинающийся с <xsl:template...> и заканчивающийся </xsl:template>
2. Добавляем в шаблон <xsl:template match="object" mode="order"> параметр delivery_id:
<xsl:param name="delivery_id" select="string(properties/group/property[@name='delivery_address']/value/item/@id)" />
3. Заменяем содержимое тега <Контрагенты> на следующее:
<Контрагенты>
<xsl:apply-templates select="document(concat('uobject://', $customer_id))/udata/object" mode="customer" >
<xsl:with-param name="delivery_id">
<xsl:value-of select="$delivery_id"/>
</xsl:with-param>
</xsl:apply-templates>
</Контрагенты>
4. Заменяем код шаблона <xsl:template match="object" mode="customer"> следующим образом:
<xsl:template match="object" mode="customer">
<xsl:param name="delivery_id" />
<xsl:variable name="index" select="document(concat('uobject://', $delivery_id))//property[@name='index']/value" />
<xsl:variable name="city" select="document(concat('uobject://', $delivery_id))//property[@name='city']/value" />
<xsl:variable name="street" select="document(concat('uobject://', $delivery_id))//property[@name='street']/value" />
<xsl:variable name="house" select="document(concat('uobject://', $delivery_id))//property[@name='house']/value" />
<xsl:variable name="full_address" select="concat($index, ', ', $city, ', ', $street, ', ', $house)" />
<Контрагент>
<Ид><xsl:value-of select="@id" /></Ид>
<Наименование><xsl:value-of select="//property[@name='fname']/value" /> <xsl:value-of select="//property[@name='lname']/value" /></Наименование>
<ПолноеНаименование><xsl:value-of select="//property[@name='fname']/value" /> <xsl:value-of select="//property[@name='lname']/value" /></ПолноеНаименование>
<Роль>Покупатель</Роль>
<Фамилия><xsl:value-of select="//property[@name='lname']/value" /></Фамилия>
<Имя><xsl:value-of select="//property[@name='fname']/value" /></Имя>
<Контакты>
<Контакт>
<Тип>Телефон рабочий</Тип>
<Значение><xsl:value-of select="//property[@name='phone']/value" /></Значение>
</Контакт>
<Контакт>
<Тип>Электронная почта</Тип>
<Значение><xsl:value-of select="//property[@name='email']/value" /></Значение>
</Контакт>
</Контакты>
<АдресРегистрации>
<Представление><xsl:value-of select="$full_address" /></Представление>
<АдресноеПоле>
<Тип>Почтовый индекс</Тип>
<Значение><xsl:value-of select="$index" /></Значение>
</АдресноеПоле>
<АдресноеПоле>
<Тип>Город</Тип>
<Значение><xsl:value-of select="$city" /></Значение>
</АдресноеПоле>
<АдресноеПоле>
<Тип>Улица</Тип>
<Значение><xsl:value-of select="$street" /></Значение>
</АдресноеПоле>
<АдресноеПоле>
<Тип>Дом</Тип>
<Значение><xsl:value-of select="$house" /></Значение>
</АдресноеПоле>
</АдресРегистрации>
</Контрагент>
</xsl:template>
В итоге информация о контрагенте будет выглядеть следующим образом:
<Контрагенты>
<Контрагент>
<Ид>1695</Ид>
<Наименование>Василий Пупкин</Наименование>
<ПолноеНаименование>Василий Пупкин</ПолноеНаименование>
<Роль>Покупатель</Роль>
<Фамилия>Пупкин</Фамилия>
<Имя>Василий</Имя>
<Контакты>
<Контакт>
<Тип>Телефон рабочий</Тип>
<Значение>+7-999-888-77-66</Значение>
</Контакт>
<Контакт>
<Тип>Электронная почта</Тип>
<Значение>mail@mail.ru</Значение>
</Контакт>
</Контакты>
<АдресРегистрации>
<Представление>197110, Санкт-Петербург, Красного Курсанта, 25</Представление>
<АдресноеПоле>
<Тип>Почтовый индекс</Тип>
<Значение>197110</Значение>
</АдресноеПоле>
<АдресноеПоле>
<Тип>Город</Тип>
<Значение>Санкт-Петербург</Значение>
</АдресноеПоле>
<АдресноеПоле>
<Тип>Улица</Тип>
<Значение>Красного Курсанта</Значение>
</АдресноеПоле>
<АдресноеПоле>
<Тип>Дом</Тип>
<Значение>25</Значение>
</АдресноеПоле>
</АдресРегистрации>
</Контрагент>
</Контрагенты>
Информация о структуре xml-файла взята из документации для разработчиков: XML-файлы для обмена данными