ДополнительныеПравилаПреобразования (БСП)

Автор: 1С
ОбщийМодуль.РаботаСАдресами
БСП

Дополнительные правила преобразования.

Функция ДополнительныеПравилаПреобразования() Экспорт
	
	КодыДополнительныхАдресныхЭлементов = Новый ТекстовыйДокумент;
	Для Каждого ДополнительныйАдресныйЭлемент Из ТипыОбъектовАдресацииАдресаРФ() Цикл
		КодыДополнительныхАдресныхЭлементов.ДобавитьСтроку("<data:item data:title=""" + ДополнительныйАдресныйЭлемент.Наименование + """>" + ДополнительныйАдресныйЭлемент.Код + "</data:item>");
		КодыДополнительныхАдресныхЭлементов.ДобавитьСтроку("<data:item data:title=""" + НРег(ДополнительныйАдресныйЭлемент.Наименование) + """>" + ДополнительныйАдресныйЭлемент.Код + "</data:item>");
	КонецЦикла;
	
	КодыРегионов = Новый ТекстовыйДокумент;
	ВсеРегионы = ВсеРегионы();
	Если ВсеРегионы <> Неопределено Тогда
		Для Каждого Строка Из ВсеРегионы Цикл
			КодыРегионов.ДобавитьСтроку("<data:item data:code=""" + Формат(Строка.КодСубъектаРФ, "ЧН=; ЧГ=") + """>" 
			+ Строка.Представление + "</data:item>");
		КонецЦикла;
	КонецЕсли;
	
	РасширенныйТекстПреобразования = "
	|  <xsl:template match=""/"" mode=""domestic"">
	|    <xsl:element name=""Состав"">
	|      <xsl:attribute name=""xsi:type"">АдресРФ</xsl:attribute>
	|    
	|      <xsl:element name=""СубъектРФ"">
	|        <xsl:variable name=""value"" select=""tns:Structure/tns:Property[@name='Регион']/tns:Value/text()"" />
	|
	|        <xsl:choose>
	|          <xsl:when test=""0=count($value)"">
	|            <xsl:variable name=""regioncode"" select=""tns:Structure/tns:Property[@name='КодРегиона']/tns:Value/text()""/>
	|            <xsl:variable name=""regiontitle"" select=""$enum-regioncode-nodes/data:item[@data:code=number($regioncode)]"" />
	|              <xsl:if test=""0!=count($regiontitle)"">
	|                <xsl:value-of select=""$regiontitle""/>
	|              </xsl:if>
	|          </xsl:when>
	|          <xsl:otherwise>
	|            <xsl:value-of select=""$value"" />
	|          </xsl:otherwise> 
	|        </xsl:choose>
	|
	|      </xsl:element>
	|   
	|      <xsl:element name=""Округ"">
	|        <xsl:value-of select=""tns:Structure/tns:Property[@name='Округ']/tns:Value/text()""/>
	|      </xsl:element>
	|
	|      <xsl:element name=""СвРайМО"">
	|        <xsl:element name=""Район"">
	|          <xsl:value-of select=""tns:Structure/tns:Property[@name='Район']/tns:Value/text()""/>
	|        </xsl:element>
	|      </xsl:element>
	|  
	|      <xsl:element name=""Город"">
	|        <xsl:value-of select=""tns:Structure/tns:Property[@name='Город']/tns:Value/text()""/>
	|      </xsl:element>
	|    
	|      <xsl:element name=""ВнутригРайон"">
	|        <xsl:value-of select=""tns:Structure/tns:Property[@name='ВнутригРайон']/tns:Value/text()""/>
	|      </xsl:element>
	|
	|      <xsl:element name=""НаселПункт"">
	|        <xsl:value-of select=""tns:Structure/tns:Property[@name='НаселенныйПункт']/tns:Value/text()""/>
	|      </xsl:element>
	|
	|      <xsl:element name=""Улица"">
	|        <xsl:value-of select=""tns:Structure/tns:Property[@name='Улица']/tns:Value/text()""/>
	|      </xsl:element>
	|
	|      <xsl:variable name=""index"" select=""tns:Structure/tns:Property[@name='Индекс']/tns:Value/text()"" />
	|      <xsl:if test=""0!=count($index)"">
	|        <xsl:element name=""ДопАдрЭл"">
	|          <xsl:attribute name=""ТипАдрЭл"">" + КодСериализацииПочтовогоИндекса() + "</xsl:attribute>
	|          <xsl:attribute name=""Значение""><xsl:value-of select=""$index""/></xsl:attribute>
	|        </xsl:element>
	|      </xsl:if>
	|
	|      <xsl:call-template name=""add-elem-number"">
	|        <xsl:with-param name=""source"" select=""tns:Structure/tns:Property[@name='ТипДома']/tns:Value/text()"" />
	|        <xsl:with-param name=""defsrc"" select=""'Дом'"" />
	|        <xsl:with-param name=""value""  select=""tns:Structure/tns:Property[@name='Дом']/tns:Value/text()"" />
	|      </xsl:call-template>
	|
	|      <xsl:call-template name=""add-elem-number"">
	|        <xsl:with-param name=""source"" select=""tns:Structure/tns:Property[@name='ТипКорпуса']/tns:Value/text()"" />
	|        <xsl:with-param name=""defsrc"" select=""'Корпус'"" />
	|        <xsl:with-param name=""value""  select=""tns:Structure/tns:Property[@name='Корпус']/tns:Value/text()"" />
	|      </xsl:call-template>
	|
	|      <xsl:call-template name=""add-elem-number"">
	|        <xsl:with-param name=""source"" select=""tns:Structure/tns:Property[@name='ТипКвартиры']/tns:Value/text()"" />
	|        <xsl:with-param name=""defsrc"" select=""'Квартира'"" />
	|        <xsl:with-param name=""value""  select=""tns:Structure/tns:Property[@name='Квартира']/tns:Value/text()"" />
	|      </xsl:call-template>
	|    
	|    </xsl:element>
	|  </xsl:template>
	|
	|  <xsl:param name=""enum-codevalue"">
	|" + КодыДополнительныхАдресныхЭлементов.ПолучитьТекст() + "
	|  </xsl:param>
	|  <xsl:variable name=""enum-codevalue-nodes"" select=""exsl:node-set($enum-codevalue)"" />
	|
	|  <xsl:param name=""enum-regioncode"">
	|" + КодыРегионов.ПолучитьТекст() + "
	|  </xsl:param>
	|  <xsl:variable name=""enum-regioncode-nodes"" select=""exsl:node-set($enum-regioncode)"" />
	|  
	|  <xsl:template name=""add-elem-number"">
	|    <xsl:param name=""source"" />
	|    <xsl:param name=""defsrc"" />
	|    <xsl:param name=""value"" />
	|
	|    <xsl:if test=""0!=count($value)"">
	|
	|      <xsl:choose>
	|        <xsl:when test=""0!=count($source)"">
	|          <xsl:variable name=""type-code"" select=""$enum-codevalue-nodes/data:item[@data:title=$source]"" />
	|          <xsl:element name=""ДопАдрЭл"">
	|            <xsl:element name=""Номер"">
	|              <xsl:attribute name=""Тип""><xsl:value-of select=""$type-code"" /></xsl:attribute>
	|              <xsl:attribute name=""Значение""><xsl:value-of select=""$value""/></xsl:attribute>
	|            </xsl:element>
	|          </xsl:element>
	|
	|        </xsl:when>
	|        <xsl:otherwise>
	|          <xsl:variable name=""type-code"" select=""$enum-codevalue-nodes/data:item[@data:title=$defsrc]"" />
	|          <xsl:element name=""ДопАдрЭл"">
	|            <xsl:element name=""Номер"">
	|              <xsl:attribute name=""Тип""><xsl:value-of select=""$type-code"" /></xsl:attribute>
	|              <xsl:attribute name=""Значение""><xsl:value-of select=""$value""/></xsl:attribute>
	|            </xsl:element>
	|          </xsl:element>
	|
	|        </xsl:otherwise>
	|      </xsl:choose>
	|
	|    </xsl:if>
	|  
	|  </xsl:template>
	|  
	|</xsl:stylesheet>";
	
	Возврат РасширенныйТекстПреобразования;
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПравоДобавления (БСП)

ПриПроверкеПраваДобавления (БСП)

ПараметрыПоискаДополнительнойИнформации (БСП)

ПреобразованиеЗначенийJSON (БСП)

Преобразование строки в число

ЕстьПраво (БСП)

ПравоЗапуск (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз