Универсальный просмотр XML в поле HTML-документа

Публикация № 352722

Разработка - Системная интеграция - Обмен через XML

XML XSL XSLT HTML

34
Произвольный XML-документ отображается в ПолеHTMLДокумента через универсальное XSLT-преобразование с возможностью свертывания уровней, аналогично тому, как делает это по умолчанию интернет-браузер, но без использования файловых операций и вызова внешних объектов

Для тех, кто имеет дело с обменами данных и взаимодействием с интернет-приложениями, часто возникает необходимость открыть на просмотр в 1С XML с незнакомой структурой. Что делать?

Разнообразные предшественники

пробовали заниматься автоматическим анализом структуры XML, создавали более или менее универсальные утилиты программного разбора, используя при этом разнообразные "нагруженные" объекты 1С типа ТаблицаЗначений, ДеревоЗначений, либо в худшем (для универсальности и переносимости) случае подключали внешние компоненты.

Но неужели нет простых средств, с минимальными затратами и желательно без программирования?

Конечно, можно поместить текст XML в Поле текстового документа. Но если XML получен из источника, который формировал его автоматически, то скорее всего текст будет неотформатирован и плохо читаем, например:

неформат XML

Заметим, что форматирование XML задача несложная. Ее стандартно решает объект ЗаписьXML (свойство Отступ либо объект ПараметрыЗаписиXML), примерно так:

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ИсходныйТекстXML);

ПостроительDOM = Новый ПостроительDOM;
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку(Новый ПараметрыЗаписиXML(, , Истина, Истина));//здась как раз и содержится явное указание 1С отформатировать XML при записи

ЗаписьDOM = Новый ЗаписьDOM;
ЗаписьDOM.Записать(ДокументDOM, ЗаписьXML);
ИсходныйТекстXML= ЗаписьXML.Закрыть();

В результате получаем читаемый документ:

формат XML

 Но так отобразить может только в поле текстового документа (причем без подсветки синтаксиса и без свертывания уровней).

Но при работе с интернет задача же часто стоит отображать XML именно в поле HTML-документа. Как?

Если в ПолеHTMLДокумента поместить некий произвольный XML, то 1С ничего не отобразит.

Не поможет и попытка предварительного чтения XML объектами 1С, к примеру:

 ЧтениеXML = Новый ЧтениеXML; 
 ЧтениеXML.УстановитьСтроку(OriginXML);
 ПостроительDOM = Новый ПостроительDOM;
 ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
 ЗаписьHTML = Новый ЗаписьHTML;
 ЗаписьHTML.УстановитьСтроку();
 ЗаписьDOM = Новый ЗаписьDOM;
 ЗаписьDOM.Записать(ДокументDOM, ЗаписьHTML); 
 XML2HTML = ЗаписьHTML.Закрыть();

Однако известно, что в отличие от ПолеHTMLДокумента из 1С, интернет-броузеры умеют отображать текст произвольых XML-документов. Примерно так:

формат как в IE

Оказывается, делают они это с помощью встроенных XSL-таблиц. Для IE в Windows такая таблица расположена на локальном компьютере по адресу: res://msxml3.dll/defaultss.xsl   ( см. например http://www.script-coding.com/XSL.html или http://farinadesign.narod.ru/XMLtech/Lectures/DSO.html )

Поэтому задачу полностью решает использование XSL-преобразования (идея взята из //infostart.ru/public/184288/ ):

	Преобразование = Новый ПреобразованиеXSL;
	Преобразование.ЗагрузитьИзСтроки(ТекстПреобразованияXSL);
	XML2HTML = Преобразование.ПреобразоватьИзСтроки(ИсходныйТекстXML);

Дополнительного программирования в 1С не требуется! Требуется только получитьподходящий default.xsl файл. Причем, естественно, варианты таких файлов могут отличаться. Предлагаю использовать следующий, полученный из предыдущих версий IE, исходник xsl-преобразования:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output indent="no" method="html"/>
 <xsl:template match="/">
  <HTML>
   <HEAD>
    <SCRIPT>
     <xsl:comment><![CDATA[
                  function f(e){
                     if (e.className=="ci") {
                       if (e.children(0).innerText.indexOf("\n")>0) fix(e,"cb");
                     }
                     if (e.className=="di") {
                       if (e.children(0).innerText.indexOf("\n")>0) fix(e,"db");
                     } e.id="";
                  }
                  function fix(e,cl){
                    e.className=cl;
                    e.style.display="block";
                    j=e.parentElement.children(0);
                    j.className="c";
                    k=j.children(0);
                    k.style.visibility="visible";
                    k.href="#";
                  }
                  function ch(e) {
                    mark=e.children(0).children(0);
                    if (mark.innerText=="+") {
                      mark.innerText="-";
                      for (var i=1;i<e.children.length;i++) {
                        e.children(i).style.display="block";
                      }
                    }
                    else if (mark.innerText=="-") {
                      mark.innerText="+";
                      for (var i=1;i<e.children.length;i++) {
                        e.children(i).style.display="none";
                      }
                    }
                  }
                  function ch2(e) {
                    mark=e.children(0).children(0);
                    contents=e.children(1);
                    if (mark.innerText=="+") {
                      mark.innerText="-";
                      if (contents.className=="db"||contents.className=="cb") {
                        contents.style.display="block";
                      }
                      else {
                        contents.style.display="inline";
                      }
                    }
                    else if (mark.innerText=="-") {
                      mark.innerText="+";
                      contents.style.display="none";
                    }
                  }
                  function cl() {
                    e=window.event.srcElement;
                    if (e.className!="c") {
                      e=e.parentElement;
                      if (e.className!="c") {
                        return;
                      }
                    }
                    e=e.parentElement;
                    if (e.className=="e") {
                      ch(e);
                    }
                    if (e.className=="k") {
                      ch2(e);
                    }
                  }
                  function ex(){}
                  function h(){window.status=" ";}
                  document.onclick=cl;
              ]]></xsl:comment>
    </SCRIPT>
    <STYLE>
              BODY {font:x-small 'Verdana'; margin-right:1.5em}
                .c  {cursor:hand}
                .b  {color:red; font-family:'Courier New'; font-weight:bold;
                     text-decoration:none}
                .e  {margin-left:1em; text-indent:-1em; margin-right:1em}
                .k  {margin-left:1em; text-indent:-1em; margin-right:1em}
                .t  {color:#990000}
                .xt {color:#990099}
                .ns {color:red}
                .dt {color:green}
                .m  {color:blue}
                .tx {font-weight:bold}
                .db {text-indent:0px; margin-left:1em; margin-top:0px;
                     margin-bottom:0px;padding-left:.3em;
                     border-left:1px solid #CCCCCC; font:small Courier}
                .di {font:small Courier}
                .d  {color:blue}
                .pi {color:blue}
                .cb {text-indent:0px; margin-left:1em; margin-top:0px;
                     margin-bottom:0px;padding-left:.3em; font:small Courier;
                     color:#888888}
                .ci {font:small Courier; color:#888888}
                PRE {margin:0px; display:inline}
           </STYLE>
   </HEAD>
   <BODY class="st">
    <xsl:apply-templates/>
   </BODY>
  </HTML>
 </xsl:template>
 <xsl:template match="processing-instruction()">
  <DIV class="e">
   <SPAN class="b">
    <xsl:call-template name="entity-ref">
     <xsl:with-param name="name">nbsp</xsl:with-param>
    </xsl:call-template>
   </SPAN>
   <SPAN class="m">
    <xsl:text>&lt;?</xsl:text>
   </SPAN>
   <SPAN class="pi">
    <xsl:value-of select="name(.)"/>
    <xsl:value-of select="."/>
   </SPAN>
   <SPAN class="m">
    <xsl:text>?></xsl:text>
   </SPAN>
  </DIV>
 </xsl:template>
 <xsl:template match="processing-instruction('xml')">
  <DIV class="e">
   <SPAN class="b">
    <xsl:call-template name="entity-ref">
     <xsl:with-param name="name">nbsp</xsl:with-param>
    </xsl:call-template>
   </SPAN>
   <SPAN class="m">
    <xsl:text>&lt;?</xsl:text>
   </SPAN>
   <SPAN class="pi">
    <xsl:text>xml </xsl:text>
    <xsl:for-each select="@*">
     <xsl:value-of select="name(.)"/>
     <xsl:text>="</xsl:text>
     <xsl:value-of select="."/>
     <xsl:text>" </xsl:text>
    </xsl:for-each>
   </SPAN>
   <SPAN class="m">
    <xsl:text>?></xsl:text>
   </SPAN>
  </DIV>
 </xsl:template>
 <xsl:template match="@*">
  <SPAN>
   <xsl:attribute name="class"><xsl:if test="xsl:*/@*"><xsl:text>x</xsl:text></xsl:if><xsl:text>t</xsl:text></xsl:attribute>
   <xsl:value-of select="name(.)"/>
  </SPAN>
  <SPAN class="m">="</SPAN>
  <B>
   <xsl:value-of select="."/>
  </B>
  <SPAN class="m">"</SPAN>
 </xsl:template>
 <xsl:template match="text()">
  <DIV class="e">
   <SPAN class="b"> </SPAN>
   <SPAN class="tx">
    <xsl:value-of select="."/>
   </SPAN>
  </DIV>
 </xsl:template>
 <xsl:template match="comment()">
  <DIV class="k">
   <SPAN>
    <A STYLE="visibility:hidden" class="b" false"
    <SPAN class="m">
     <xsl:text>&lt;!--</xsl:text>
    </SPAN>
   </SPAN>
   <SPAN class="ci" id="clean">
    <PRE>
     <xsl:value-of select="."/>
    </PRE>
   </SPAN>
   <SPAN class="b">
    <xsl:call-template name="entity-ref">
     <xsl:with-param name="name">nbsp</xsl:with-param>
    </xsl:call-template>
   </SPAN>
   <SPAN class="m">
    <xsl:text>--></xsl:text>
   </SPAN>
   <SCRIPT>f(clean);</SCRIPT>
  </DIV>
 </xsl:template>
 <xsl:template match="*">
  <DIV class="e">
   <DIV STYLE="margin-left:1em;text-indent:-2em">
    <SPAN class="b">
     <xsl:call-template name="entity-ref">
      <xsl:with-param name="name">nbsp</xsl:with-param>
     </xsl:call-template>
    </SPAN>
    <SPAN class="m">&lt;</SPAN>
    <SPAN>
     <xsl:attribute name="class"><xsl:if test="xsl:*"><xsl:text>x</xsl:text></xsl:if><xsl:text>t</xsl:text></xsl:attribute>
     <xsl:value-of select="name(.)"/>
     <xsl:if test="@*">
      <xsl:text> </xsl:text>
     </xsl:if>
    </SPAN>
    <xsl:apply-templates select="@*"/>
    <SPAN class="m">
     <xsl:text>/></xsl:text>
    </SPAN>
   </DIV>
  </DIV>
 </xsl:template>
 <xsl:template match="*[node()]">
  <DIV class="e">
   <DIV class="c">
    <A class="b" href="#" false"
    <SPAN class="m">&lt;</SPAN>
    <SPAN>
     <xsl:attribute name="class"><xsl:if test="xsl:*"><xsl:text>x</xsl:text></xsl:if><xsl:text>t</xsl:text></xsl:attribute>
     <xsl:value-of select="name(.)"/>
     <xsl:if test="@*">
      <xsl:text> </xsl:text>
     </xsl:if>
    </SPAN>
    <xsl:apply-templates select="@*"/>
    <SPAN class="m">
     <xsl:text>></xsl:text>
    </SPAN>
   </DIV>
   <DIV>
    <xsl:apply-templates/>
    <DIV>
     <SPAN class="b">
      <xsl:call-template name="entity-ref">
       <xsl:with-param name="name">nbsp</xsl:with-param>
      </xsl:call-template>
     </SPAN>
     <SPAN class="m">
      <xsl:text>&lt;/</xsl:text>
     </SPAN>
     <SPAN>
      <xsl:attribute name="class"><xsl:if test="xsl:*"><xsl:text>x</xsl:text></xsl:if><xsl:text>t</xsl:text></xsl:attribute>
      <xsl:value-of select="name(.)"/>
     </SPAN>
     <SPAN class="m">
      <xsl:text>></xsl:text>
     </SPAN>
    </DIV>
   </DIV>
  </DIV>
 </xsl:template>
 <xsl:template match="*[text() and not (comment() or processing-instruction())]">
  <DIV class="e">
   <DIV STYLE="margin-left:1em;text-indent:-2em">
    <SPAN class="b">
     <xsl:call-template name="entity-ref">
      <xsl:with-param name="name">nbsp</xsl:with-param>
     </xsl:call-template>
    </SPAN>
    <SPAN class="m">
     <xsl:text>&lt;</xsl:text>
    </SPAN>
    <SPAN>
     <xsl:attribute name="class"><xsl:if test="xsl:*"><xsl:text>x</xsl:text></xsl:if><xsl:text>t</xsl:text></xsl:attribute>
     <xsl:value-of select="name(.)"/>
     <xsl:if test="@*">
      <xsl:text> </xsl:text>
     </xsl:if>
    </SPAN>
    <xsl:apply-templates select="@*"/>
    <SPAN class="m">
     <xsl:text>></xsl:text>
    </SPAN>
    <SPAN class="tx">
     <xsl:value-of select="."/>
    </SPAN>
    <SPAN class="m">&lt;/</SPAN>
    <SPAN>
     <xsl:attribute name="class"><xsl:if test="xsl:*"><xsl:text>x</xsl:text></xsl:if><xsl:text>t</xsl:text></xsl:attribute>
     <xsl:value-of select="name(.)"/>
    </SPAN>
    <SPAN class="m">
     <xsl:text>></xsl:text>
    </SPAN>
   </DIV>
  </DIV>
 </xsl:template>
 <xsl:template match="*[*]" priority="20">
  <DIV class="e">
   <DIV STYLE="margin-left:1em;text-indent:-2em" class="c">
    <A class="b" href="#" false"
    <SPAN class="m">&lt;</SPAN>
    <SPAN>
     <xsl:attribute name="class"><xsl:if test="xsl:*"><xsl:text>x</xsl:text></xsl:if><xsl:text>t</xsl:text></xsl:attribute>
     <xsl:value-of select="name(.)"/>
     <xsl:if test="@*">
      <xsl:text> </xsl:text>
     </xsl:if>
    </SPAN>
    <xsl:apply-templates select="@*"/>
    <SPAN class="m">
     <xsl:text>></xsl:text>
    </SPAN>
   </DIV>
   <DIV>
    <xsl:apply-templates/>
    <DIV>
     <SPAN class="b">
      <xsl:call-template name="entity-ref">
       <xsl:with-param name="name">nbsp</xsl:with-param>
      </xsl:call-template>
     </SPAN>
     <SPAN class="m">
      <xsl:text>&lt;/</xsl:text>
     </SPAN>
     <SPAN>
      <xsl:attribute name="class"><xsl:if test="xsl:*"><xsl:text>x</xsl:text></xsl:if><xsl:text>t</xsl:text></xsl:attribute>
      <xsl:value-of select="name(.)"/>
     </SPAN>
     <SPAN class="m">
      <xsl:text>></xsl:text>
     </SPAN>
    </DIV>
   </DIV>
  </DIV>
 </xsl:template>
 <xsl:template name="entity-ref">
  <xsl:param name="name"/>
  <xsl:text disable-output-escaping="yes">&amp;</xsl:text>
  <xsl:value-of select="$name"/>
  <xsl:text>;</xsl:text>
 </xsl:template>
</xsl:stylesheet>

Так же можно попробовать поискать аналогичные default-схемы xsl-преобразований в Сhrome (chrome://global/content/xml/XMLPrettyPrint.xsl) и других броузерах

Желающие могут скачать пример обработки просмотра и форматирования произвольных XML-файлов (управляемые и обычные формы).

Ноо повторяю, что вся автоматизация отображения произволного XML сводится к двум строчкам текста 1С

Преобразование.ЗагрузитьИзСтроки(ТекстПреобразованияXSL);
XML2HTML = Преобразование.ПреобразоватьИзСтроки(ИсходныйТекстXML);

и использованию подходящей XSL-схемы, которую можно найти как в интернете, так и у себя на локальном компьютере.

34

Скачать файлы

Наименование Файл Версия Размер
ОтображениеXML.epf
.epf 16,63Kb
28.09.16
57
.epf 16,63Kb 57 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. theshadowco 90 08.05.15 11:31 Сейчас в теме
(0) а такой вариант не подойдет?
	#Если НЕ ВебКлиент Тогда
		
		ВремФайл = ПолучитьИмяВременногоФайла("xml");
		ЗаписьXML = Новый ЗаписьXML;
		ЗаписьXML.ОткрытьФайл(ВремФайл);
		ЗаписьXML.ЗаписатьБезОбработки(ТекстСообщения);
		ЗаписьXML.Закрыть();
		
		ОткрытьФорму("ОбщаяФорма.ПросмотрHTML", Новый Структура("ДанныеHTML, Заголовок", ВремФайл, "Просмотр текста сообщения"), ЭтотОбъект);
		
	#КонецЕсли 


Показать

ПросмотрHTML - форма с реквизитом "ДанныеHTML" строкового типа и полем html на форме..
2. tarassov 96 08.05.15 12:01 Сейчас в теме
(1) theshadowco,
нет. Это "масло масляное". Подали на вход текст XML в ЗаписьXML.ЗаписатьБезОбработки(ТекстСообщения) и с помощью ЗаписьXML.Закрыть() его же и записали. Ничего не изменилось. И не отобразилось
10. theshadowco 90 18.05.15 10:41 Сейчас в теме
(2) Отлично отображается, вы попробуйте :). Не первый год так работает, отображает любые XML.

Как работает у меня:
Есть регистр с реквизитом, содержащим текст XML. Иногда требуется посмотреть XML в более читабельном виде, чем просто строка. Для Этого на форме записи добавлена указанная в примере команда (точнее выдержка из команды), которая создает временный файл и показывает его в форме просмотре. В этой форме (управляемая) нет ничего интересного, кроме строкового реквизита, которому соответствует элемент формы с видом "Полле HTML документа"
Прикрепленные файлы:
11. tarassov 96 18.05.15 11:01 Сейчас в теме
(10) theshadowco,
А что в вашем примере скрыто под конструкцией "ОбщаяФорма.ПросмотрHTML" ?
Давайте вместе посмотрим, что там внутри в этой форме делается
12. tarassov 96 18.05.15 11:05 Сейчас в теме
(10) theshadowco,
В этой форме (управляемая) нет ничего интересного

Надо все-таки смотреть на устройство формы.
По виду снимка вывода можно предположить, что используется OLE-объект
Будет ли Ваша конструкция без переделок работать под Linux?
13. theshadowco 90 18.05.15 11:26 Сейчас в теме
(12) не используется ничего, только платформа.
Смотрите скрины. Проще некуда.
Прикрепленные файлы:
14. tarassov 96 18.05.15 13:38 Сейчас в теме
(13) theshadowco,
Может быть тогда что-то дополнительное установлено в настройках операционной системы и ее интернет-броузерах?
15. theshadowco 90 18.05.15 13:43 Сейчас в теме
16. tarassov 96 20.05.15 16:18 Сейчас в теме
(15) theshadowco,
Я наконец понял, что имелось в виду.
Этот пример действительно работает. Но если все делать через файлы (ЗаписьXML.ОткрытьФайл() вместо ЗаписьXML.УстановитьСтроку()) и полю HTMLДокумента соответственно передавать на вход имя файла на диске, а не текст документа.
Я же говорил о другом, пытался показывать принцип работы с текстом файла, т.е. строковые операции, без привлечения файловой системы
frkbvfnjh; binex; vipElek; +3 Ответить
3. gaglo 13.05.15 10:06 Сейчас в теме
В статье сразу написано, что
интернет-броузеры умеют отображать текст произвольных XML-документов

Это - по-моему - и есть
решение с минимальными затратами и желательно без программирования

Описанный в статье способ позволяет открыть XML-файл непосредственно в 1С.
Это его единственное преимущество перед открытием в браузере или есть еще достоинства, о коих я не догадался?
4. tarassov 96 13.05.15 10:48 Сейчас в теме
(3) gaglo, да, речь идет только о 1С
5. gaglo 14.05.15 10:12 Сейчас в теме
(4) Ясно. Тогда позволю себе отметить: в публикации infostart.ru/public/21664/ двухпальцовый reader_XML, кстати, перечисленной в списке предшественников, есть ссылка на внешний XML-редактор firstobject, маленький (624к), быстрый (файл в 55 мег открывается секунд за 5), портабельный и бесплатный. Да, и он еще позволяет редактировать!
ЗЫ. А ход вашей мысли (то есть выдрать XSL из браузера и применить у себя) мне нравится!
6. tarassov 96 14.05.15 11:49 Сейчас в теме
(5) gaglo, Так понятно, что вне 1С есть тысяча и одна удабная утилита для работя с XML. Но ведь я специально указал область задачи: "Внутри 1С и без внешних библиотек". В этом случае все "внешние XML-редакторы" остаются "за бортом"
7. gaglo 15.05.15 09:47 Сейчас в теме
(6) А вот это мне и непонятно. Зачем специально было так сужать область задачи? Неужели "просто так"? Иными словами, зачем так часто стоит задача отображать XML именно в поле HTML-документа? Если мы хотим XML обработать, так вроде бы отображать и не надо... Навскидку придумал только случай, когда на входе валятся файлы самых разных структур, мы их показываем оператору и спрашиваем: "Чего с ним делать?" А оператор проглядит его, решает, что этот по алгоритму 15, а этот просто отклонить, и нажимает соответствующую кнопку. Но выглядит это неестественно.
8. tarassov 96 15.05.15 16:44 Сейчас в теме
(7) gaglo,
У меня эта задача возникла из разработки интерфейса отслеживания почтовых отправлений различных служб доставки (СДЭК, Деловые линии, ДПД, ПЭК и т.п.) для интернет-магазина http://automediya.ru/, аналогично тому, как я сделал для Почты России http://infostart.ru/public/347510/
Данные, полученные с с того или ниого вэб-сервиса при этом не требовалось обрабатывать, а только показывать, но в красивом и читаемом виде. Оказалось, что наиболее просто и естественно отобразить их как раз поле HTML-документа
При этом потребовалось обрабатывать исключительные ситуации. А именно, когда код состояния ответа HTML не равен 200. Можно бы было выдать сообщение "КодСостояния=...", но в некотрых случаях в теле ответа приходит содезная информация. Например пришется что-то об ошибке сети, веб-сервиса, прокси и прочее. Вот для таких особых ситуаций универсальный просмотр как раз годится.
Ну а мне еще удобно было им пользоваться при отладке, когда я, в точности как описано выше, имел дело с XML-файлами самих разных структур.
9. tarassov 96 16.05.15 15:24 Сейчас в теме
(5) gaglo,
Если уж сравнивать с аналогами не по принципу соответствия поставленной задаче, а про универсальности и простоте, то мне больше чем "двупальцевый" нравится "однопальцевый" вариант http://infostart.ru/public/84254/
17. yuraer 39 23.09.16 12:38 Сейчас в теме
Похоже, что xsl не валидный:
Ошибка разбора XML: - [296,23]
Фатальная ошибка:
Couldn't find end of Start Tag A line 296
18. NicholasUzunov 18.05.17 08:30 Сейчас в теме
В статье приводиться default.xsl с ошибками. Пример
<A STYLE="visibility:hidden" class="b" false"
Тут тег <A> не закрыт. Рабочий XSL скачал от сюда https://gist.github.com/byrner75/5659000.

А вот не много измененный код:

	
Преобразование = Новый ПреобразованиеXSL;
Преобразование.ЗагрузитьИзФайла("D:\defaultss.xsl");
ЭлементыФормы.ПолеHTMLДокумента1.УстановитьТекст(Преобразование.ПреобразоватьИзФайла("D:\WayBillAct.xml"));
Прикрепленные файлы:
defaultss.xsl
CagoBHuK; Nat_S; silberRus; +3 Ответить
20. CagoBHuK 31 09.07.19 12:18 Сейчас в теме
Хотел поставить автору плюс, но не буду, т.к. XSL невалиден. Зато поставил плюс (18).
19. maloy-v 06.10.18 15:01 Сейчас в теме
До сих пор актуально. Фишка с непосредственным подсовывание файла в форму HTML в последних релизах перестала работать.
А "Преобразование" работает. Красота!
Оставьте свое сообщение

См. также

Преобразование XML файла в переменную структура, Загрузка в дерево значений 26

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Обмен через XML

Обработка, демонстрирующая работу процедур и функций по преобразованию XML файла в дерево значений, а также в переменную типа структура.

1 стартмани

14.09.2019    2371    5    vik070777    18       

Документы и Справочники в JSON 57

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Обмен через XML

Пример выгрузки всех данных Документа или Справочника в JSON

1 стартмани

20.06.2019    4217    10    darkmessiahan    15       

XDTO для чайников 109

Статья Программист Архив с данными v8 1cv8.cf Абонемент ($m) Обмен через XML

Пример использования XDTO пакетов для выгрузки документа с табличной частью.

1 стартмани

29.05.2019    9589    11    HAMMER_59    33       

Универсальный обмен данными XML (с гибкими отборами и сохранением вариантов настроек) 27

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Обмен через XML

Обработка предназначена для загрузки и выгрузки данных по правилам обмена в любых конфигурациях, реализованных на платформе 1С:Предприятие 8.3. Преимуществом перед типовой обработкой является добавленный функционал: #1. Установка произвольных фильтров на выгружаемые объекты при помощи механизма системы компоновки данных #2. Сохранение различных вариантов настроек (сохраняются правила обмена, фильтры выгрузки, параметры, настройки обработки) - что позволяет гибко настроить в базе-источнике фильтры для выгрузки объектов по различным правилам обмена для различных баз-приемников, сохранить выполненные настройки и в будущем уже пользоваться этими вариантами настроек. Проверялась на 1С:ERP Управление предприятием 2.4.7.141.

1 стартмани

29.04.2019    2846    47    sapervodichka    17       

Выгрузка и загрузка данных XML 8.3 (в полной мере возможности реализованы для версии 1С:Предприятия 8.3 выше версии 8.3.5) 17

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Абонемент ($m) Обмен через XML

В этой форме всегда не хватало конструктора запросов для удобной выгрузки уникальных элементов по ссылке. Теперь он здесь есть. Как только стало возможным создавать конструктор запроса в управляемых формах, я добавил её в стандартную обработку. Необходимо напомнить, что обработка функционирует полноценно только с версии 8.3.5 1С:Предприятия 8.3.

1 стартмани

24.04.2019    2373    24    AlexandrSmith    1       

1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки 121

Статья Программист Архив с данными v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных Обмен через XML WEB Разработка

В этой статье мы рассмотрим путь и основные моменты создания небольшого вэб-сервиса, который мы называем "Онлайн Прайс-лист". Выгрузка из 1С, бэкенд, фронтенд, получение заказов в 1С.

1 стартмани

22.04.2019    15782    14    riposte    63       

Перенос данных с использованием XDTO 32

Статья Программист Архив с данными v8 Россия Абонемент ($m) Обмен через XML

Использование объекта типа "ОбъектXDTO" для переноса данных из одной конфигурации в другую

1 стартмани

21.04.2019    3982    4    axae    8       

Выгрузка и загрузка данных XML с гибкими отборами 33

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Обмен через XML Перенос данных из 1C8 в 1C8

Обработка выгрузки и загрузки данных через XML между идентичными конфигурациями с возможностью установки произвольных отборов на выгружаемые объекты.

1 стартмани

07.04.2019    4022    103    sapervodichka    7       

Перенос данных КА 1.1 -> КА 2 19

Инструменты и обработки Программист Документ XML v8 КА1 КА2 Россия Абонемент ($m) Перенос данных из 1C8 в 1C8 Обмен через XML

Перенос данных КА 1.1 => КА 2 с помощью правил обмена данными в формате XML КД 2 (переносятся остатки, документы, справочная информация).

5 стартмани

20.03.2019    5318    103    gudogu    107       

Ручная выгрузка и загрузка данных через универсальный обмен данными с настройками (расширение, платформа 8.3+) 45

Инструменты и обработки Программист Архив с данными v8 Розница УНФ ERP2 БП3.0 УТ11 КА2 ЗУП3.x Абонемент ($m) Обработка документов Обработка справочников Обмен через XML Перенос данных из 1C8 в 1C8

Данное расширение (не требует изменения конфигураций) служит как надстройка для конфигураций, у которых обмен между базами происходит через универсальный формат (EnterpriseData), с использованием стандартных правил конвертации, которые уже есть в конфигурации. Интерфейс адаптирован для простых пользователей, сделан общий отбор по Организации для всех документов, имеется пару настроек для передачи в параметры конвертации, которые расположены в общем модуле конфигураций, а так же есть возможность выбора запуска - в фоне или в текущем сеансе. Теперь не нужно настраивать обмен между базами, для того чтоб просто перенести нужные документы. Подходит точно для УТ 11.4, БП 3.0.67, КА 2.4.5, Розница 2.2.9 (Обновление 1.2 от 02.03.2019)

2 стартмани

19.01.2019    7089    84    hakerxp    8       

Универсальный обмен данными в формате XML (2.1.8) 8.3 УФ с отбором и без модальности 16

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Обмен через XML

К типовой обработке "Универсальный обмен данными в формате XML" добавлены отбор и возможность работать в конфигурациях с отключенным режимом модальности.

1 стартмани

07.11.2018    9995    215    nicxxx    5       

SOAP для чайников 85

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Обмен через XML WEB

Немножко про SOAP сервис. И пример работы с подключением и получением данных по SOAP за 5 минут.

1 стартмани

05.09.2018    18239    25    dusha0020    18       

003. Почему я больше не люблю "Выгрузку Загрузку XML" 16

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Обмен через XML

Ниже будет много букаф, но если коротко — можно ускорить этот инструмент в 1000 раз

1 стартмани

03.09.2018    4162    7    Nikola23    8       

Простой эмулятор вызова веб-сервиса 1С с просмотром результата 24

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Обмен через XML WEB

Последнее время все чаще сталкиваюсь с разработкой веб-сервисов средствами 1С. Для ускорения разработки и отладки написал внешнюю обработку. На какой-то сверх-крутой функционал она не претендует, но, может, кому-то пригодится.

1 стартмани

24.04.2018    7322    17    anvolkov1cbit    9       

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1 44

Инструменты и обработки Системный администратор Программист Бухгалтер Документ XML v8 v8::СПР ЗУП2.5 ЗУП3.x Россия БУ Зарплата Абонемент ($m) Обмен через XML Перенос данных из 1C8 в 1C8

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1. Позволяют вести параллельную работу в базах ЗУП редакций 2,5 и 3.1.

10 стартмани

06.03.2018    24257    123    kostya_whiskas    23       

Организация обмена с базой филиала (розничного магазина) в торговой сети через XML (универсальный обмен) 70

Статья Программист Архив с данными v8 КД УТ11 Розничная и сетевая торговля (FMCG) Розничная торговля Абонемент ($m) Обмен через XML Перенос данных из 1C8 в 1C8

В статье по шагам рассматривается создание обмена между центральной базой и базами филиалов на базе конфигурации УТ 11. Для решения поставленной задачи было решено не использовать РИБ, т.к. требуется односторонний обмен ограниченным набором данных, к тому же по определенным условиям. Обмен реализован на основе типовой синхронизации на основе универсального обмена в формате EnterpriseData. Данная публикация может быть полезна внедренцам, которые работают с торговыми сетями, в том числе по модели франчайзинга.

1 стартмани

26.02.2018    24848    13    Kutuzov    18       

Создание в 1С 7.7 XML в формате EnterpriseData (универсальный формат обмена), версия 1.5. Инструкции и примеры переноса данных из устаревшей конфигурации 1С 7.7 в любую современную 1С 8.3, поддерживающую EnterpriseData, через Конвертацию данных 3 31

Инструменты и обработки Программист Внешняя обработка (ert,epf) v7.7 v8 1cv7.md Россия Абонемент ($m) Перенос данных из 1С7.7 в 1C8.X Обмен через XML

Воспользоваться современным средством переноса данных "Конвертация данных 3.0.5.3" можно только выгрузив из системы - источника данных XML в формате обмена данными EnterpriseData. В этой публикации можно скачать приемы выгрузки из 1С 7.7 универсального формата обмена для Конвертации данных 3. Выполняем перенос данных из «1С:Предприятие 7.7» в «1С:Предприятие 8.3». Используем Конвертацию данных КД 3.0 из 1c 7.7 --> 1С 8.3. На первой стадии еще не опубликовано иного способа подложить файл для Конвертации данных 3 кроме как сформировать его вручную, постараемся решить данную проблему.

1 стартмани

26.02.2018    25827    45    ksnik    3       

Пример заполнения/создания файла XML из XSD схемы, используя XDTO 128

Статья Программист Документ XML v8 1cv8.cf Абонемент ($m) Обмен через XML WEB

Добрый день, коллеги! Наконец-то дошли руки написать сию статью. Хочу поделиться своим опытом по разбору xsd схемы используя Фабрику XDTO, а также связанным с этим XML файлом. Думаю, наверняка кому-то понадобится.

1 стартмани

21.12.2017    28416    40    sandybaev    23       

Правила переноса документов из ЗУП 2.5 в ЗУП 3.1 33

Инструменты и обработки Программист Документ XML v8 v8::СПР ЗУП3.x Россия БУ Windows Зарплата Управление персоналом (HRM) Абонемент ($m) Обмен через XML Перенос данных из 1C8 в 1C8

Перенос документов из ЗУП 2.5 в ЗУП 3.1 - позволяет снизить объем работ при опытной эксплуатации ЗУП 3.1 параллельно с ЗУП 2.5.

1 стартмани

04.12.2017    23135    486    AntonH851    38       

Механизмы и транспорт обмена данными. Пример создания в КД 2.1 правил обмена данными ЗУП 2.5 -> БП 3.0. Выгрузка ведомостей и банковских счетов. Передача параметров обмена из Источника в Приемник. ВыгрузитьПоПравилу(). ПередатьОдинПараметрВПриемник(). 37

Статья Программист Документ XML v8 ЗУП2.5 КД БП3.0 Абонемент ($m) Обмен через XML Перенос данных из 1C8 в 1C8

В статье рассказываю: 1) о механизмах и транспорте обмена данными, где одной из сторон обмена выступает конфигурация на базе 1С, и о том, какой транспорт и в каких случаях лучше использовать 2) о решении задачи выгрузки данных документа «Зарплата к выплате организаций» (с выгрузкой банковский счетов физ лиц документа) из ЗУП 2.5.123.1 (далее Источник) в БП КОРП 3.0.52.39 (далее Приемник) путем создания правил обмена данными с использованием конфигурации «Конвертация данных» (далее просто КД) ред. 2.1.8.2. для (далее ЗкВО) 3) о тестирование полученных правил обмена данными.

1 стартмани

03.11.2017    20567    7    RailMen    5       

XML JSON преобразователь 17

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Обмен через XML

Обработка демонстрирует возможность программного преобразования XML в JSON и обратно без подключения внешних модулей.

1 стартмани

11.10.2017    10949    32    m-rv    3       

Правила обмена ЗУП 3.1 - БП 2.0 и ЗУП 3.1 - УПП 1.3 (отражение, ведомости и справочники) 97

Инструменты и обработки Программист Документ XML v8 v8::БУ v8::СПР БП2.0 БП3.0 ЗУП3.x Россия БУ Зарплата Управление персоналом (HRM) Абонемент ($m) Перенос данных из 1C8 в 1C8 Обмен через XML

Правила обмена для выгрузки документов "Отражение зарплаты в бухучете", "Ведомость в банк", "Ведомость в кассу", справочников "Сотрудники" и "Физические лица"

1 стартмани

01.08.2017    60160    1476    forseil    191       

«Горыныч - то НЕ НАСТОЯЩИЙ!» … или О Конвертации Данных ред.3 (КД 3) и обменах в универсальном формате Enterprise Data… доступным русско-народным языком 58

Инструменты и обработки Программист Архив с данными v8 КД Абонемент ($m) Внешние источники данных Обмен через XML Перенос данных из 1C8 в 1C8

Тем, кто хочет быстро разобраться с темой инструмента Конвертация данных 3.0 и технологией обмена по новому формату 1С, активно применяемому во всех новых конфигурациях от 1С на БСП, расширяющем возможности интеграции, пакет полезных материалов.

1 стартмани

13.06.2017    14041    135    Davlad_A    16       

"Конвертация данных" + Git. Решение проблемы различий в файлах 112

Инструменты и обработки Программист Конфигурация (md, cf) v8 КД Абонемент ($m) Инструментарий разработчика Обмен через XML

Как известно, типовая конфигурация «Конвертация данных» обладает одним недостатком, мешающим работать с ней в Git-е. Если выгруженные из нее правила обмена загрузить в другую КД, а потом снова выгрузить, то полученные два файла будут очень сильно отличаться друг от друга, и при сравнении (diff) доработок будет невозможно провести код-ревью, равно как найти сами изменения, которые закоммитил разработчик.

1 стартмани

08.06.2017    16464    30    stas_ganiev    13       

Пообъектный разбор разметки 17

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 Абонемент ($m) Инструментарий разработчика Обмен через XML

Обработка облегчает разбор разметки XML и позволяет обращаться с узлами (элементами, тэгами) почти как с объектами, не привлекая XDTO и не описывая формат предварительно. При этом обходится без загрузки всего файла в оперативную память, что позволяет читать файлы любого размера.

1 стартмани

26.04.2017    6475    7    9-pm    8       

XMPP(jabber) на чистом 1С 43

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Обмен через XML

На сайте infostart, есть несколько реализаций работы 1С с протоколом XMPP (jabber), но в основном они на использование сторонних библиотек (нативных), которые надо регистрировать в операционке (и только в винде), или на основе других систем - php, python и т.п. Предлагаю пример реализации отправки сообщения через этот протокол только средствами 1С.

1 стартмани

26.12.2016    11596    13    kodnik    8       

Загрузка XML в дерево значений 54

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Обмен через XML

Случайно наткнулся на статью с алгоритмом загрузки XML-строки в дерево значений и подумал, а не проще ли сделать это через механизм XDTO рекурсивно. На мой взгляд, решение получилось неплохое - даже атрибуты грузит..

1 стартмани

17.11.2016    18624    44    starik-2005    24       

Обмен данными онлайн через Веб-сервис с использованием обработки "Универсальный обмен данными XML" 186

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Обмен через XML

Доработка позволяет организовать двухсторонний обмен данными в режиме реального времени между любыми конфигурациями (типовые, самописные, обычные формы, управляемые формы). Также предлагается вариант в виде расширения конфигурации (.cfe) для конфигураций стоящих на поддержке без возможности изменения. В обмене может участвовать любое количество баз. Правила обмена подготавливаются с использованием конфигурации "Конвертация данных".

2 стартмани

28.10.2016    32083    209    linkov    33       

Использование SoapUi для работы с веб-сервисами. Часть1 118

Статья Программист Архив с данными v8 Абонемент ($m) Практика программирования Обмен через XML

Как работать с SoapUi для тестирования веб-сервисов .

1 стартмани

30.09.2016    102725    35    kiv1c    28       

Редактор движений документа. Сохранение в XML, обмен между базами, замена регистратора. 23

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Обработка документов Универсальные обработки Обмен через XML

Редактор набора записей движений документа. Позволяет сохранить набор записей в XML, в настройки пользователя, прочитать сохраненный XML в другой идентичной базе, заменить регистратор. Можно изменять порядок записей, менять активность, как массово, так и по одной и др. Тонкий клиент, управляемые формы.

1 стартмани

07.09.2016    27484    146    Aphanas    4       

Загрузка файлов грузовых таможенных деклараций из файлов ФТС формата xml (Альта софт, Сигма софт, Декларант +) 16

Инструменты и обработки Программист Бухгалтер Внешняя обработка (ert,epf) v8 v8::БУ БП3.0 Россия БУ Windows Внешнеэкономическая деятельность (ВЭД) Абонемент ($m) Обмен через XML

Федеральная таможенная служба России давно поддерживает унифицированный формат электронных документов для обмена с информационными системами предприятий. xmlns="urn:customs.ru:Information:ExchangeDocuments:" если что. Структура, утвержденная комиссией Таможенного союза. Осталось только сделать загрузку в 1С из этого формата. На выходе - два документа ГТД по импорту и Поступление (акты, накладные)

5 стартмани

09.08.2016    35770    145    capitan    232       

1С. Перенос контактной информации из БП 2.0 в БП 3.0 (УХ 1.2)  (Из регистра в табличную часть) 15

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 БП2.0 БП3.0 УХ Россия Windows Абонемент ($m) Обмен через XML Перенос данных из 1C8 в 1C8

Пример переноса контактной информации из БП 2.0 в БП 3.0 (или др..)  (Из регистра в табличную часть). Задача: Перенести контактную информацию из БП 2.0 в БП 3.0 (в моем случае в УХ 1.2). Контактная информация в БП 2.0 хранится в регистре сведений: КонтактнаяИнформация Контактная информация в БП 3.0 хранится в табличных частях соответствующих справочников.

1 стартмани

04.08.2016    15279    96    Voffffka    1       

Обмен документами по правилам КД 2.0 с помощью внешней обработки 14

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Обмен через XML

Вам нужно разово выгрузить документ? Настроить периодическую выгрузку, не снимая конфигурацию с поддержки? Вы написали правила на КД 2.0 и думаете, как лучше дальше поступить? Тогда эта обработка для Вас.

1 стартмани

09.03.2016    8580    55    Ifboop_Figure    10       

Разбор XML Документа с помощью XDTO, без использования XDTO-пакетов и XML-схем (для очень ленивых) 45

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Обмен через XML

Как разобрать XML Документ с помощью XDTO без изменений в конфигурации, без XML-схем данных, и при этом не выпасть с ошибкой "не достаточно памяти" ? Тем более что вам этот XML Документ нужно считать разово.

1 стартмани

14.11.2015    18281    39    TESL    8       

Пример обработки загрузки данных из XML-файла в облаке 1С:Fresh 27

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 УНФ Абонемент ($m) Практика программирования Обмен через XML

Внешняя обработка, адаптированная для работы в УНФ, размещенной в облаке 1С:Fresh (легко редактируется под любую другую конфигурацию) В обработке использованы следующие механизмы (их варианты при работе в безопасном режиме): 1. Механизм выполнения сценариев дополнительных обработок. 2. Механизм отложенной записи объектов. 3. Механизм клиент-серверной передачи файлов. 4. Механизм чтения XML в безопасном режиме. 5. Механизм создания и поиска элементов с помощью UID.

1 стартмани

20.10.2015    15617    55    laperuz    18       

Преобразование XML в объекты 1С 62

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Обмен через XML

Преобразование XML в типовые объекты 1С всего лишь парой строк кода.

1 стартмани

17.10.2015    19539    96    PrinzOfMunchen    30       

Инструментарий ЕГАИС УТМ 23

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Оптовая торговля, дистрибуция, логистика Россия Windows Оптовая торговля Абонемент ($m) Инструментарий разработчика Внешние источники данных Обмен через XML

Это не готовое решение!!! Модуль объекта этой обработки - это набор рабочих методов работы с документами ЕГАИС через УТМ. Через "это" можно загрузить произвольный xml файл с диска в УТМ. Посмотреть входящие и исходящие. Отправить запрос на контрагента... отследить ответ по специальному идентификатору УТМ.

1 стартмани

24.09.2015    41484    243    Terrain25    41       

Штатный перенос данных ЗУП 2.5 -> ЗУП 3.0 в режиме отладки 22

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 ЗУП2.5 ЗУП3.x Windows Зарплата Управление персоналом (HRM) Абонемент ($m) Обмен через XML Перенос данных из 1C8 в 1C8

Штатный переход ЗУП 2.5 -> ЗУП 3.0 завершается при наличии ошибок в конвертации данных. Если механизм немного подправить, то можно обойти это ограничение. Назовем это режимом отладки. В итоге получим внешнюю обработку которая осуществит переход и просто сообщит о наличии ошибок конвертации данных.

1 стартмани

24.09.2015    18958    67    duhh    4       

Усовершенствованный редактор правил обмена КД2 146

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 КД Абонемент ($m) Обмен через XML

РПО-2М – мощный редактор правил обмена для КД 2. Позволяет ускорить свою разработку и ознакомление/доработку чужих правил обмена. Превосходство над встроенным редактором достигается за счет удобного функционального интерфейса, применения шаблонизации кода правил, богатого инструментария, упрощающего разработку, и интеграции с Инструментами Разработчика.

3 стартмани

16.09.2015    30687    174    Lem0n    39