Внешние XSLT — различия между версиями
(Новая страница: «==Общее описание== Внешние xslt - еще один из способов настройки Внешней Обработки для выгру…») |
(→Настройка) |
||
(не показано 11 промежуточных версий этого же участника) | |||
Строка 7: | Строка 7: | ||
==Настройка== | ==Настройка== | ||
# В каталоге настроек Внешней Обработки создать папку c именем xslt. | # В каталоге настроек Внешней Обработки создать папку c именем xslt. | ||
− | # В эту папку поместить файлы с xsl | + | # В эту папку поместить файлы с xsl преобразованиями имена которых задаются по маске: "<Файл_Формат>_<Файл_ВерсияФормата>.xslt". Если версия формата задана в ини файле через точку, то в названии xslt файла это значение должно идти через нижнее подчеркивание |
# Перезапустить Внешнюю Обработку в 1С | # Перезапустить Внешнюю Обработку в 1С | ||
− | '''Обратите внимание''': Если название созданного Вами внешнего преобразования совпадет с названием стандартного xslt, зашитого в обработку, то | + | '''Обратите внимание''': Если название созданного Вами внешнего преобразования совпадет с названием стандартного xslt, зашитого в обработку, то оно будет полностью заменено внешним шаблоном. |
==Как это работает?== | ==Как это работает?== | ||
− | Внешняя Обработка на выходе (на выгрузку из 1С в СБиС) и на входе (на загрузку из СБиС в 1С) в основной алгоритм программы подает xml файлы всегда одинаковой структуры, схожей со структурой счета на оплату формата 3.01. | + | Внешняя Обработка на выходе (на выгрузку из 1С в СБиС) и на входе (на загрузку из СБиС в 1С) в основной алгоритм программы подает xml файлы всегда одинаковой структуры, схожей со структурой счета на оплату формата 3.01. После выполнения основных процедур к этим файлам применяются xslt преобразования по маске <Файл_Формат>_<Файл_ВерсияФормата>. Так у нас получаются "правильные по формату" xml для отправки в документооборот. |
+ | |||
'''Как взять xslt преобразования, зашитые в обработку?''' | '''Как взять xslt преобразования, зашитые в обработку?''' | ||
# Открыть конфигуратор 1С | # Открыть конфигуратор 1С | ||
Строка 19: | Строка 20: | ||
# Скачать содержимое макета xslt в этот архив | # Скачать содержимое макета xslt в этот архив | ||
[[Файл:Xslt.jpg]] | [[Файл:Xslt.jpg]] | ||
+ | |||
+ | ==Пример использования== | ||
+ | Выгрузка стандартного сублицензионного договора из 1С:Бухгалтерия Предприятия 2.0 из реестра документов РеализацияТоваровУслуг | ||
+ | |||
+ | '''Изменения в пользвательском ини-файле''' | ||
+ | <source lang='xml'> | ||
+ | <мФайл Имя="ДогПП"> | ||
+ | <Файл_Формат>'ДогПП'</Файл_Формат> | ||
+ | <Файл_ВерсияФормата>'3.01'</Файл_ВерсияФормата> | ||
+ | <Файл_Имя>'ON_CONTRACT_'</Файл_Имя> | ||
+ | ... | ||
+ | Дальше copy-paste из стандартной инишки | ||
+ | ... | ||
+ | </мФайл> | ||
+ | </source> | ||
+ | |||
+ | '''xslt файл с именем ДогПП_3_01''' | ||
+ | <source lang='xml'> | ||
+ | <?xml version="1.0" encoding="utf-8"?> | ||
+ | <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
+ | <xsl:output method="xml" indent="yes" encoding="windows-1251"/> | ||
+ | |||
+ | |||
+ | |||
+ | <xsl:template match="Документ"> | ||
+ | <Файл> | ||
+ | <xsl:attribute name="ВерсФорм"> | ||
+ | <xsl:text>5.01</xsl:text> | ||
+ | </xsl:attribute> | ||
+ | |||
+ | <xsl:if test="//Файл/@ВерсПрог"> | ||
+ | <xsl:attribute name="ВерсПрог"> | ||
+ | <xsl:value-of select="//Файл/@ВерсПрог"/> | ||
+ | </xsl:attribute> | ||
+ | </xsl:if> | ||
+ | |||
+ | <xsl:attribute name="ИдФайл"> | ||
+ | <xsl:value-of select="//Файл/@Имя"/> | ||
+ | </xsl:attribute> | ||
+ | |||
+ | |||
+ | <СвУчДокОбор> | ||
+ | <xsl:attribute name="ИдОтпр"/> | ||
+ | <xsl:attribute name="ИдПок"/> | ||
+ | <СвОЭДОтпр> | ||
+ | <xsl:attribute name="НаимОрг"> | ||
+ | <xsl:text>ООО 'Компания 'Тензор'</xsl:text> | ||
+ | </xsl:attribute> | ||
+ | <xsl:attribute name="ИННЮЛ"> | ||
+ | <xsl:text>7605016030</xsl:text> | ||
+ | </xsl:attribute> | ||
+ | <xsl:attribute name="ИдЭДО"> | ||
+ | <xsl:text>2ВЕ</xsl:text> | ||
+ | </xsl:attribute> | ||
+ | </СвОЭДОтпр> | ||
+ | </СвУчДокОбор> | ||
+ | |||
+ | <Документ> | ||
+ | |||
+ | <СвДоговор> | ||
+ | <xsl:attribute name="Дата"> | ||
+ | <xsl:value-of select="//Файл/Документ/@Дата"/> | ||
+ | </xsl:attribute> | ||
+ | |||
+ | <xsl:attribute name="Номер"> | ||
+ | <xsl:value-of select="//Файл/Документ/@Номер"/> | ||
+ | </xsl:attribute> | ||
+ | |||
+ | <xsl:if test="//Файл/Документ/Отправитель"> | ||
+ | <СвОтпр> | ||
+ | <xsl:call-template name="ИдСв"> | ||
+ | <xsl:with-param name="node" select="//Файл/Документ/Отправитель"/> | ||
+ | </xsl:call-template> | ||
+ | |||
+ | <xsl:call-template name="Адрес"> | ||
+ | <xsl:with-param name="node" select="//Файл/Документ/Отправитель/Адрес"/> | ||
+ | </xsl:call-template> | ||
+ | </СвОтпр> | ||
+ | </xsl:if> | ||
+ | |||
+ | <xsl:if test="//Файл/Документ/Получатель"> | ||
+ | <СвПол> | ||
+ | <xsl:call-template name="ИдСв"> | ||
+ | <xsl:with-param name="node" select="//Файл/Документ/Получатель"/> | ||
+ | </xsl:call-template> | ||
+ | |||
+ | <xsl:call-template name="Адрес"> | ||
+ | <xsl:with-param name="node" select="//Файл/Документ/Получатель/Адрес"/> | ||
+ | </xsl:call-template> | ||
+ | </СвПол> | ||
+ | </xsl:if> | ||
+ | <html> | ||
+ | Текст договора в html | ||
+ | </html> | ||
+ | </СвДоговор> | ||
+ | <Подписант> | ||
+ | <ЮЛ> | ||
+ | <xsl:attribute name="ИННЮЛ"/> | ||
+ | <xsl:attribute name="Должн"/> | ||
+ | <ФИО> | ||
+ | <xsl:attribute name="Фамилия"/> | ||
+ | <xsl:attribute name="Имя"/> | ||
+ | <xsl:attribute name="Отчество"/> | ||
+ | </ФИО> | ||
+ | </ЮЛ> | ||
+ | </Подписант> | ||
+ | |||
+ | </Документ> | ||
+ | </Файл> | ||
+ | </xsl:template> | ||
+ | |||
+ | <xsl:template name="ИдСв"> | ||
+ | <xsl:param name="node"/> | ||
+ | <ИдСв> | ||
+ | <xsl:choose> | ||
+ | <xsl:when test="$node/СвФЛ"> | ||
+ | <СвФЛ> | ||
+ | <xsl:attribute name="ИННФЛ"> | ||
+ | <xsl:value-of select="$node/СвФЛ/@ИНН"/> | ||
+ | </xsl:attribute> | ||
+ | <ФИОИП> | ||
+ | <xsl:choose> | ||
+ | <xsl:when test="$node/СвФЛ/@Фамилия!='' and $node/СвФЛ/@Имя!=''"> | ||
+ | <xsl:attribute name="Фамилия"> | ||
+ | <xsl:value-of select="$node/СвФЛ/@Фамилия"/> | ||
+ | </xsl:attribute> | ||
+ | <xsl:attribute name="Имя"> | ||
+ | <xsl:value-of select="$node/СвФЛ/@Имя"/> | ||
+ | </xsl:attribute> | ||
+ | <xsl:if test="$node/СвФЛ/@Отчество!=''"> | ||
+ | <xsl:attribute name="Отчество"> | ||
+ | <xsl:value-of select="$node/СвФЛ/@Отчество"/> | ||
+ | </xsl:attribute> | ||
+ | </xsl:if> | ||
+ | </xsl:when> | ||
+ | <xsl:when test="$node/СвФЛ/@Название!=''"> | ||
+ | <xsl:variable name="surName" select="substring-before($node/СвФЛ/@Название,' ')"/> | ||
+ | <xsl:variable name="strWithoutSurname" select="substring-after($node/СвФЛ/@Название,' ')"/> | ||
+ | <xsl:variable name="name" select="substring-before($strWithoutSurname,' ')"/> | ||
+ | <xsl:variable name="fatherName" select="substring-after($strWithoutSurname,' ')"/> | ||
+ | <xsl:attribute name="Фамилия"> | ||
+ | <xsl:value-of select="$surName"/> | ||
+ | </xsl:attribute> | ||
+ | <xsl:attribute name="Имя"> | ||
+ | <xsl:value-of select="$name"/> | ||
+ | </xsl:attribute> | ||
+ | <xsl:if test="$fatherName!=''"> | ||
+ | <xsl:attribute name="Отчество"> | ||
+ | <xsl:value-of select="$fatherName"/> | ||
+ | </xsl:attribute> | ||
+ | </xsl:if> | ||
+ | </xsl:when> | ||
+ | <xsl:otherwise> | ||
+ | <xsl:variable name="surName" select="substring-before($node/@Название,' ')"/> | ||
+ | <xsl:variable name="strWithoutSurname" select="substring-after($node/@Название,' ')"/> | ||
+ | <xsl:variable name="name" select="substring-before($strWithoutSurname,' ')"/> | ||
+ | <xsl:variable name="fatherName" select="substring-after($strWithoutSurname,' ')"/> | ||
+ | <xsl:attribute name="Фамилия"> | ||
+ | <xsl:value-of select="$surName"/> | ||
+ | </xsl:attribute> | ||
+ | <xsl:attribute name="Имя"> | ||
+ | <xsl:value-of select="$name"/> | ||
+ | </xsl:attribute> | ||
+ | <xsl:if test="$fatherName!=''"> | ||
+ | <xsl:attribute name="Отчество"> | ||
+ | <xsl:value-of select="$fatherName"/> | ||
+ | </xsl:attribute> | ||
+ | </xsl:if> | ||
+ | </xsl:otherwise> | ||
+ | </xsl:choose> | ||
+ | </ФИОИП> | ||
+ | </СвФЛ> | ||
+ | </xsl:when> | ||
+ | <xsl:otherwise> | ||
+ | <СвЮЛ> | ||
+ | <xsl:attribute name="НаимОрг"> | ||
+ | <xsl:choose> | ||
+ | <xsl:when test="$node/СвЮЛ/@Название !=''"> | ||
+ | <xsl:value-of select="$node/СвЮЛ/@Название"/> | ||
+ | </xsl:when> | ||
+ | <xsl:otherwise> | ||
+ | <xsl:value-of select="$node/@Название"/> | ||
+ | </xsl:otherwise> | ||
+ | </xsl:choose> | ||
+ | </xsl:attribute> | ||
+ | <xsl:attribute name="ИННЮЛ"> | ||
+ | <xsl:value-of select="$node/СвЮЛ/@ИНН"/> | ||
+ | </xsl:attribute> | ||
+ | <xsl:attribute name="КПП"> | ||
+ | <xsl:value-of select="$node/СвЮЛ/@КПП"/> | ||
+ | </xsl:attribute> | ||
+ | </СвЮЛ> | ||
+ | </xsl:otherwise> | ||
+ | </xsl:choose> | ||
+ | </ИдСв> | ||
+ | </xsl:template> | ||
+ | |||
+ | <xsl:template name="Адрес"> | ||
+ | <xsl:param name="node"/> | ||
+ | <Адрес> | ||
+ | <xsl:choose> | ||
+ | <xsl:when test="$node/АдрРФ"> | ||
+ | <АдрРФ> | ||
+ | <xsl:for-each select="$node/АдрРФ/@*"> | ||
+ | <xsl:if test=". !=''"> | ||
+ | <xsl:attribute name="{name()}"> | ||
+ | <xsl:value-of select="."/> | ||
+ | </xsl:attribute> | ||
+ | </xsl:if> | ||
+ | </xsl:for-each> | ||
+ | </АдрРФ> | ||
+ | </xsl:when> | ||
+ | <xsl:when test="$node/АдрИно"> | ||
+ | <АдрИно> | ||
+ | <xsl:attribute name="КодСтр"> | ||
+ | <xsl:choose> | ||
+ | <xsl:when test="$node/АдрИно/@КодСтр!=''"> | ||
+ | <xsl:value-of select="$node/АдрИно/@КодСтр"/> | ||
+ | </xsl:when> | ||
+ | <xsl:otherwise> | ||
+ | <xsl:text>643</xsl:text> | ||
+ | </xsl:otherwise> | ||
+ | </xsl:choose> | ||
+ | </xsl:attribute> | ||
+ | <xsl:attribute name="АдрТекст"> | ||
+ | <xsl:value-of select="$node/АдрИно/@АдрТекст"/> | ||
+ | </xsl:attribute> | ||
+ | </АдрИно> | ||
+ | </xsl:when> | ||
+ | <xsl:otherwise> | ||
+ | <АдрИно> | ||
+ | <xsl:attribute name="КодСтр"> | ||
+ | <xsl:text>643</xsl:text> | ||
+ | </xsl:attribute> | ||
+ | <xsl:attribute name="АдрТекст"> | ||
+ | <xsl:value-of select="$node/@АдрТекст"/> | ||
+ | </xsl:attribute> | ||
+ | </АдрИно> | ||
+ | </xsl:otherwise> | ||
+ | </xsl:choose> | ||
+ | </Адрес> | ||
+ | </xsl:template> | ||
+ | |||
+ | <xsl:template name="БанкРекв"> | ||
+ | <xsl:param name="node"/> | ||
+ | <БанкРекв> | ||
+ | <xsl:if test="$node/@РСчет"> | ||
+ | <xsl:attribute name="НомерСчета"> | ||
+ | <xsl:value-of select="$node/@РСчет"/> | ||
+ | </xsl:attribute> | ||
+ | </xsl:if> | ||
+ | <СвБанк> | ||
+ | <xsl:if test="$node/@НаимБанк"> | ||
+ | <xsl:attribute name="НаимБанк"> | ||
+ | <xsl:value-of select="$node/@НаимБанк"/> | ||
+ | </xsl:attribute> | ||
+ | </xsl:if> | ||
+ | |||
+ | <xsl:if test="$node/@БИК"> | ||
+ | <xsl:attribute name="БИК"> | ||
+ | <xsl:value-of select="$node/@БИК"/> | ||
+ | </xsl:attribute> | ||
+ | </xsl:if> | ||
+ | </СвБанк> | ||
+ | </БанкРекв> | ||
+ | |||
+ | </xsl:template> | ||
+ | |||
+ | <xsl:template name="Контакт"> | ||
+ | <xsl:param name="node"/> | ||
+ | <Контакт> | ||
+ | <xsl:if test="$node/@Телефон"> | ||
+ | <xsl:attribute name="Тлф"> | ||
+ | <xsl:value-of select="substring($node/@Телефон, 1, 20)"/> | ||
+ | </xsl:attribute> | ||
+ | </xsl:if> | ||
+ | |||
+ | <xsl:if test="$node/@Факс"> | ||
+ | <xsl:attribute name="Факс"> | ||
+ | <xsl:value-of select="substring($node/@Факс, 1, 20)"/> | ||
+ | </xsl:attribute> | ||
+ | </xsl:if> | ||
+ | </Контакт> | ||
+ | |||
+ | </xsl:template> | ||
+ | |||
+ | |||
+ | <xsl:template name="ИнфПол"> | ||
+ | <xsl:variable name="ТекстИнф1"> | ||
+ | <xsl:text><Реквизит Имя="ИдВизуализации" Значение="</xsl:text> | ||
+ | <xsl:choose> | ||
+ | <xsl:when test="//Файл/@КодФормы"> | ||
+ | <xsl:value-of select="//Файл/@КодФормы"/> | ||
+ | </xsl:when> | ||
+ | <xsl:otherwise> | ||
+ | <xsl:text>1С</xsl:text> | ||
+ | </xsl:otherwise> | ||
+ | </xsl:choose> | ||
+ | <xsl:text>"/></xsl:text> | ||
+ | </xsl:variable> | ||
+ | <xsl:variable name="ТекстИнф2"> | ||
+ | <xsl:for-each select="//Файл/Документ/Параметр[@Имя!='' and @Значение!='']"> | ||
+ | <xsl:text><Реквизит Имя="</xsl:text> | ||
+ | <xsl:value-of select="@Имя"/> | ||
+ | <xsl:text>" Значение="</xsl:text> | ||
+ | <xsl:value-of select="@Значение"/> | ||
+ | <xsl:text>"/></xsl:text> | ||
+ | </xsl:for-each> | ||
+ | <xsl:for-each select="//Документ/ТаблДок/ИтогТабл/Параметр[@Имя!='' and @Значение!='']"> | ||
+ | <xsl:text><Реквизит Имя="</xsl:text> | ||
+ | <xsl:value-of select="@Имя"/> | ||
+ | <xsl:text>" Значение="</xsl:text> | ||
+ | <xsl:value-of select="@Значение"/> | ||
+ | <xsl:text>"/></xsl:text> | ||
+ | </xsl:for-each> | ||
+ | </xsl:variable> | ||
+ | <xsl:variable name="ТекстИнф3"> | ||
+ | <xsl:if test="//Файл/Документ/Отправитель/СвФЛ"> | ||
+ | <xsl:text><Реквизит Имя="НаимПост" Значение="</xsl:text> | ||
+ | <xsl:value-of select="//Файл/Документ/Отправитель/@Название"/> | ||
+ | <xsl:text>"/></xsl:text> | ||
+ | </xsl:if> | ||
+ | <xsl:if test="//Файл/Документ/Получатель/СвФЛ"> | ||
+ | <xsl:text><Реквизит Имя="НаимПокуп" Значение="</xsl:text> | ||
+ | <xsl:value-of select="//Файл/Документ/Получатель/@Название"/> | ||
+ | <xsl:text>"/></xsl:text> | ||
+ | </xsl:if> | ||
+ | <xsl:if test="//Файл/Документ/Грузоотправитель/СвФЛ"> | ||
+ | <xsl:text><Реквизит Имя="НаимГрузОтпр" Значение="</xsl:text> | ||
+ | <xsl:value-of select="//Файл/Документ/Грузоотправитель/@Название"/> | ||
+ | <xsl:text>"/></xsl:text> | ||
+ | </xsl:if> | ||
+ | <xsl:if test="//Файл/Документ/Грузополучатель/СвФЛ"> | ||
+ | <xsl:text><Реквизит Имя="НаимГрузПолуч" Значение="</xsl:text> | ||
+ | <xsl:value-of select="//Файл/Документ/Грузополучатель/@Название"/> | ||
+ | <xsl:text>"/></xsl:text> | ||
+ | </xsl:if> | ||
+ | </xsl:variable> | ||
+ | <xsl:if test="$ТекстИнф1!='' or $ТекстИнф2!='' or $ТекстИнф3!=''"> | ||
+ | <ИнфПол> | ||
+ | <xsl:attribute name="ТекстИнф"> | ||
+ | <xsl:text><Данные></xsl:text> | ||
+ | <xsl:value-of select="$ТекстИнф1"/> | ||
+ | <xsl:value-of select="$ТекстИнф2"/> | ||
+ | <xsl:value-of select="$ТекстИнф3"/> | ||
+ | <xsl:text></Данные></xsl:text> | ||
+ | </xsl:attribute> | ||
+ | </ИнфПол> | ||
+ | </xsl:if> | ||
+ | </xsl:template> | ||
+ | |||
+ | </xsl:stylesheet> | ||
+ | </source> | ||
+ | [[Категория: 1С]] |
Текущая версия на 14:14, 10 апреля 2015
Содержание
Общее описание
Внешние xslt - еще один из способов настройки Внешней Обработки для выгрузки документов. Использование такого метода интеграции требует от специалиста минимальных знаний по работе в 1С, но достаточно уверенного навыка работы с xsl преобразованиями.
Что можно сделать?
Вы сможете выгрузить документы не входящие в поставку нашей обработки, реализовать простую логику по подстановке данных в тот или иной реквизит при выгрузке/загрузке из 1С и при этом не писать ВнешниеФункции_Клиент.
Настройка
- В каталоге настроек Внешней Обработки создать папку c именем xslt.
- В эту папку поместить файлы с xsl преобразованиями имена которых задаются по маске: "<Файл_Формат>_<Файл_ВерсияФормата>.xslt". Если версия формата задана в ини файле через точку, то в названии xslt файла это значение должно идти через нижнее подчеркивание
- Перезапустить Внешнюю Обработку в 1С
Обратите внимание: Если название созданного Вами внешнего преобразования совпадет с названием стандартного xslt, зашитого в обработку, то оно будет полностью заменено внешним шаблоном.
Как это работает?
Внешняя Обработка на выходе (на выгрузку из 1С в СБиС) и на входе (на загрузку из СБиС в 1С) в основной алгоритм программы подает xml файлы всегда одинаковой структуры, схожей со структурой счета на оплату формата 3.01. После выполнения основных процедур к этим файлам применяются xslt преобразования по маске <Файл_Формат>_<Файл_ВерсияФормата>. Так у нас получаются "правильные по формату" xml для отправки в документооборот.
Как взять xslt преобразования, зашитые в обработку?
- Открыть конфигуратор 1С
- Открыть в нем обработку
- Создать на компютере zip - архив
- Скачать содержимое макета xslt в этот архив
Пример использования
Выгрузка стандартного сублицензионного договора из 1С:Бухгалтерия Предприятия 2.0 из реестра документов РеализацияТоваровУслуг
Изменения в пользвательском ини-файле
<мФайл Имя="ДогПП">
<Файл_Формат>'ДогПП'</Файл_Формат>
<Файл_ВерсияФормата>'3.01'</Файл_ВерсияФормата>
<Файл_Имя>'ON_CONTRACT_'</Файл_Имя>
...
Дальше copy-paste из стандартной инишки
...
</мФайл>
xslt файл с именем ДогПП_3_01
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="windows-1251"/>
<xsl:template match="Документ">
<Файл>
<xsl:attribute name="ВерсФорм">
<xsl:text>5.01</xsl:text>
</xsl:attribute>
<xsl:if test="//Файл/@ВерсПрог">
<xsl:attribute name="ВерсПрог">
<xsl:value-of select="//Файл/@ВерсПрог"/>
</xsl:attribute>
</xsl:if>
<xsl:attribute name="ИдФайл">
<xsl:value-of select="//Файл/@Имя"/>
</xsl:attribute>
<СвУчДокОбор>
<xsl:attribute name="ИдОтпр"/>
<xsl:attribute name="ИдПок"/>
<СвОЭДОтпр>
<xsl:attribute name="НаимОрг">
<xsl:text>ООО 'Компания 'Тензор'</xsl:text>
</xsl:attribute>
<xsl:attribute name="ИННЮЛ">
<xsl:text>7605016030</xsl:text>
</xsl:attribute>
<xsl:attribute name="ИдЭДО">
<xsl:text>2ВЕ</xsl:text>
</xsl:attribute>
</СвОЭДОтпр>
</СвУчДокОбор>
<Документ>
<СвДоговор>
<xsl:attribute name="Дата">
<xsl:value-of select="//Файл/Документ/@Дата"/>
</xsl:attribute>
<xsl:attribute name="Номер">
<xsl:value-of select="//Файл/Документ/@Номер"/>
</xsl:attribute>
<xsl:if test="//Файл/Документ/Отправитель">
<СвОтпр>
<xsl:call-template name="ИдСв">
<xsl:with-param name="node" select="//Файл/Документ/Отправитель"/>
</xsl:call-template>
<xsl:call-template name="Адрес">
<xsl:with-param name="node" select="//Файл/Документ/Отправитель/Адрес"/>
</xsl:call-template>
</СвОтпр>
</xsl:if>
<xsl:if test="//Файл/Документ/Получатель">
<СвПол>
<xsl:call-template name="ИдСв">
<xsl:with-param name="node" select="//Файл/Документ/Получатель"/>
</xsl:call-template>
<xsl:call-template name="Адрес">
<xsl:with-param name="node" select="//Файл/Документ/Получатель/Адрес"/>
</xsl:call-template>
</СвПол>
</xsl:if>
<html>
Текст договора в html
</html>
</СвДоговор>
<Подписант>
<ЮЛ>
<xsl:attribute name="ИННЮЛ"/>
<xsl:attribute name="Должн"/>
<ФИО>
<xsl:attribute name="Фамилия"/>
<xsl:attribute name="Имя"/>
<xsl:attribute name="Отчество"/>
</ФИО>
</ЮЛ>
</Подписант>
</Документ>
</Файл>
</xsl:template>
<xsl:template name="ИдСв">
<xsl:param name="node"/>
<ИдСв>
<xsl:choose>
<xsl:when test="$node/СвФЛ">
<СвФЛ>
<xsl:attribute name="ИННФЛ">
<xsl:value-of select="$node/СвФЛ/@ИНН"/>
</xsl:attribute>
<ФИОИП>
<xsl:choose>
<xsl:when test="$node/СвФЛ/@Фамилия!='' and $node/СвФЛ/@Имя!=''">
<xsl:attribute name="Фамилия">
<xsl:value-of select="$node/СвФЛ/@Фамилия"/>
</xsl:attribute>
<xsl:attribute name="Имя">
<xsl:value-of select="$node/СвФЛ/@Имя"/>
</xsl:attribute>
<xsl:if test="$node/СвФЛ/@Отчество!=''">
<xsl:attribute name="Отчество">
<xsl:value-of select="$node/СвФЛ/@Отчество"/>
</xsl:attribute>
</xsl:if>
</xsl:when>
<xsl:when test="$node/СвФЛ/@Название!=''">
<xsl:variable name="surName" select="substring-before($node/СвФЛ/@Название,' ')"/>
<xsl:variable name="strWithoutSurname" select="substring-after($node/СвФЛ/@Название,' ')"/>
<xsl:variable name="name" select="substring-before($strWithoutSurname,' ')"/>
<xsl:variable name="fatherName" select="substring-after($strWithoutSurname,' ')"/>
<xsl:attribute name="Фамилия">
<xsl:value-of select="$surName"/>
</xsl:attribute>
<xsl:attribute name="Имя">
<xsl:value-of select="$name"/>
</xsl:attribute>
<xsl:if test="$fatherName!=''">
<xsl:attribute name="Отчество">
<xsl:value-of select="$fatherName"/>
</xsl:attribute>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="surName" select="substring-before($node/@Название,' ')"/>
<xsl:variable name="strWithoutSurname" select="substring-after($node/@Название,' ')"/>
<xsl:variable name="name" select="substring-before($strWithoutSurname,' ')"/>
<xsl:variable name="fatherName" select="substring-after($strWithoutSurname,' ')"/>
<xsl:attribute name="Фамилия">
<xsl:value-of select="$surName"/>
</xsl:attribute>
<xsl:attribute name="Имя">
<xsl:value-of select="$name"/>
</xsl:attribute>
<xsl:if test="$fatherName!=''">
<xsl:attribute name="Отчество">
<xsl:value-of select="$fatherName"/>
</xsl:attribute>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</ФИОИП>
</СвФЛ>
</xsl:when>
<xsl:otherwise>
<СвЮЛ>
<xsl:attribute name="НаимОрг">
<xsl:choose>
<xsl:when test="$node/СвЮЛ/@Название !=''">
<xsl:value-of select="$node/СвЮЛ/@Название"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$node/@Название"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="ИННЮЛ">
<xsl:value-of select="$node/СвЮЛ/@ИНН"/>
</xsl:attribute>
<xsl:attribute name="КПП">
<xsl:value-of select="$node/СвЮЛ/@КПП"/>
</xsl:attribute>
</СвЮЛ>
</xsl:otherwise>
</xsl:choose>
</ИдСв>
</xsl:template>
<xsl:template name="Адрес">
<xsl:param name="node"/>
<Адрес>
<xsl:choose>
<xsl:when test="$node/АдрРФ">
<АдрРФ>
<xsl:for-each select="$node/АдрРФ/@*">
<xsl:if test=". !=''">
<xsl:attribute name="{name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:if>
</xsl:for-each>
</АдрРФ>
</xsl:when>
<xsl:when test="$node/АдрИно">
<АдрИно>
<xsl:attribute name="КодСтр">
<xsl:choose>
<xsl:when test="$node/АдрИно/@КодСтр!=''">
<xsl:value-of select="$node/АдрИно/@КодСтр"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>643</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="АдрТекст">
<xsl:value-of select="$node/АдрИно/@АдрТекст"/>
</xsl:attribute>
</АдрИно>
</xsl:when>
<xsl:otherwise>
<АдрИно>
<xsl:attribute name="КодСтр">
<xsl:text>643</xsl:text>
</xsl:attribute>
<xsl:attribute name="АдрТекст">
<xsl:value-of select="$node/@АдрТекст"/>
</xsl:attribute>
</АдрИно>
</xsl:otherwise>
</xsl:choose>
</Адрес>
</xsl:template>
<xsl:template name="БанкРекв">
<xsl:param name="node"/>
<БанкРекв>
<xsl:if test="$node/@РСчет">
<xsl:attribute name="НомерСчета">
<xsl:value-of select="$node/@РСчет"/>
</xsl:attribute>
</xsl:if>
<СвБанк>
<xsl:if test="$node/@НаимБанк">
<xsl:attribute name="НаимБанк">
<xsl:value-of select="$node/@НаимБанк"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="$node/@БИК">
<xsl:attribute name="БИК">
<xsl:value-of select="$node/@БИК"/>
</xsl:attribute>
</xsl:if>
</СвБанк>
</БанкРекв>
</xsl:template>
<xsl:template name="Контакт">
<xsl:param name="node"/>
<Контакт>
<xsl:if test="$node/@Телефон">
<xsl:attribute name="Тлф">
<xsl:value-of select="substring($node/@Телефон, 1, 20)"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="$node/@Факс">
<xsl:attribute name="Факс">
<xsl:value-of select="substring($node/@Факс, 1, 20)"/>
</xsl:attribute>
</xsl:if>
</Контакт>
</xsl:template>
<xsl:template name="ИнфПол">
<xsl:variable name="ТекстИнф1">
<xsl:text><Реквизит Имя="ИдВизуализации" Значение="</xsl:text>
<xsl:choose>
<xsl:when test="//Файл/@КодФормы">
<xsl:value-of select="//Файл/@КодФормы"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>1С</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text>"/></xsl:text>
</xsl:variable>
<xsl:variable name="ТекстИнф2">
<xsl:for-each select="//Файл/Документ/Параметр[@Имя!='' and @Значение!='']">
<xsl:text><Реквизит Имя="</xsl:text>
<xsl:value-of select="@Имя"/>
<xsl:text>" Значение="</xsl:text>
<xsl:value-of select="@Значение"/>
<xsl:text>"/></xsl:text>
</xsl:for-each>
<xsl:for-each select="//Документ/ТаблДок/ИтогТабл/Параметр[@Имя!='' and @Значение!='']">
<xsl:text><Реквизит Имя="</xsl:text>
<xsl:value-of select="@Имя"/>
<xsl:text>" Значение="</xsl:text>
<xsl:value-of select="@Значение"/>
<xsl:text>"/></xsl:text>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="ТекстИнф3">
<xsl:if test="//Файл/Документ/Отправитель/СвФЛ">
<xsl:text><Реквизит Имя="НаимПост" Значение="</xsl:text>
<xsl:value-of select="//Файл/Документ/Отправитель/@Название"/>
<xsl:text>"/></xsl:text>
</xsl:if>
<xsl:if test="//Файл/Документ/Получатель/СвФЛ">
<xsl:text><Реквизит Имя="НаимПокуп" Значение="</xsl:text>
<xsl:value-of select="//Файл/Документ/Получатель/@Название"/>
<xsl:text>"/></xsl:text>
</xsl:if>
<xsl:if test="//Файл/Документ/Грузоотправитель/СвФЛ">
<xsl:text><Реквизит Имя="НаимГрузОтпр" Значение="</xsl:text>
<xsl:value-of select="//Файл/Документ/Грузоотправитель/@Название"/>
<xsl:text>"/></xsl:text>
</xsl:if>
<xsl:if test="//Файл/Документ/Грузополучатель/СвФЛ">
<xsl:text><Реквизит Имя="НаимГрузПолуч" Значение="</xsl:text>
<xsl:value-of select="//Файл/Документ/Грузополучатель/@Название"/>
<xsl:text>"/></xsl:text>
</xsl:if>
</xsl:variable>
<xsl:if test="$ТекстИнф1!='' or $ТекстИнф2!='' or $ТекстИнф3!=''">
<ИнфПол>
<xsl:attribute name="ТекстИнф">
<xsl:text><Данные></xsl:text>
<xsl:value-of select="$ТекстИнф1"/>
<xsl:value-of select="$ТекстИнф2"/>
<xsl:value-of select="$ТекстИнф3"/>
<xsl:text></Данные></xsl:text>
</xsl:attribute>
</ИнфПол>
</xsl:if>
</xsl:template>
</xsl:stylesheet>