Публикации

БСП
Разработки

Найдено публикаций: 2


Удалить пространство имен из готового файла xml

также 1C 8 при работе XDTO может добавить атрибут type фильтр на атрибут выглядит так @*[name(.)!='type'] и добавлен перенос строки, иначе весь XML будет в одну строку |<xsl:text> |</xsl:text>
Функция УдалитьПространство(хмл)	//хмл - полное имя файла
	Х =  Новый COMОбъект("Msxml2.DOMDocument.6.0");
	х.async = 0;
	х.validateOnParse = 0;
	х.resolveExternals=0;
	х.load(хмл);
	xslDoc= Новый COMОбъект("MSXML2.DOMDocument.6.0");
	xslDoc.async = 0;
		
	xslDoc.loadXML("<?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""  encoding=""UTF-8"" indent=""no""/>	
	|  <xsl:template match=""/|comment()|processing-instruction()"">
	|    <xsl:copy>
	|<!-- go process children (applies to root node only) -->
	|      <xsl:apply-templates/>
	|    </xsl:copy>
	|  </xsl:template>	
	|  <xsl:template match=""*"">
	|    <xsl:element name=""{local-name()}"">
	|      <!-- go process attributes and children -->
	|      <xsl:apply-templates select=""@*[name(.)!='type']|node()""/>
	|    </xsl:element>
	|<xsl:text>
	|</xsl:text>
	|  </xsl:template>
	|   	
	|  <xsl:template match=""@*"">
	|    <xsl:attribute name=""{local-name()}"">
	|      <xsl:value-of select="".""/>
	|    </xsl:attribute>
	|  </xsl:template>	
	|</xsl:stylesheet>
	|");
		
	xmlDoc= Новый COMОбъект("MSXML2.DOMDocument.6.0");
	// XML = xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""");  	
	х.transformNodeToObject(xslDoc, xmlDoc);
	//xmlDoc.insertBefore(XML,);
	
	xslDoc=0;
	х=0;
	xmlDoc.save(хмл);
	xmlDoc=0;
	Возврат 1;
КонецФункции // УдалитьПространство()

ДеревоЗначений вывод на управляемую форму

Вручную на форме ничего не надо создавать
&НаСервере
Процедура ВывестиДзНаФорму(ДеревоОбъект)
	
	// Создание Реквизита формы типа ДанныеФормыДерево
	МассивДобавляемыхРеквизитов = Новый Массив;
	МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Дерево", 
	Новый ОписаниеТипов("ДеревоЗначений")));
	Для Каждого Колонка Из ДеревоОбъект.Колонки Цикл
		МассивДобавляемыхРеквизитов.Добавить(
		Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "Дерево"));
	КонецЦикла;
	ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
	
	
	// Преобразование объекта прикладного типа ДеревоЗначений 
	// в реквизит управляемой формы (данные формы)
	ЗначениеВРеквизитФормы(ДеревоОбъект, "Дерево");
	
	
	// Создание элемента формы типа ТаблицаФормы для отображения дерева
	ЭлементДерево = Элементы.Добавить("Дерево", Тип("ТаблицаФормы"));
	ЭлементДерево.ПутьКДанным = "Дерево";
	ЭлементДерево.Отображение = ОтображениеТаблицы.Дерево;
	
	
	Для Каждого Колонка Из ДеревоОбъект.Колонки Цикл
		НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), 
		ЭлементДерево);
		НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
		НовыйЭлемент.ПутьКДанным = "Дерево." + Колонка.Имя;
	КонецЦикла;
	
	
КонецПроцедуры