Имя: Пароль:
   
1C
1С v8
Пространства имён для преобразования xml-строк 1С
0 EugeneSemyonov
 
22.09.16
15:59
Доброго дня, всем!
Подскажите, кто знает какие пространства имён XSL необходимо использовать для преобразования результатов сериализации объектов 1C?
Конкретно мне нужно из сериализованного документа удалить реквизит. Шаблон для преобразования сообщений обмена 1С у меня есть, но на сериализованном объекте он не отрабатывает.
Пример сериализованного объекта:
<DocumentObject.Заявка xmlns="http://v8.1c.ru/8.1/data/enterprise/current-config"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="DocumentObject.Заявка">
    <Ref>660325f5-80a7-11e6-941d-ac220bb7949b</Ref>
    <DeletionMark>false</DeletionMark>
    <Date>2016-09-22T12:31:55</Date>
    <Number>00ЗК-00014</Number>
    <Posted>false</Posted>
    <Фирма>00000000-0000-0000-0000-000000000000</Фирма>
    <ДатаПоставки>2016-09-21T00:00:00</ДатаПоставки>
    <Павильон>0dc7301f-359b-11e4-a3e8-bcee7b9ca45f</Павильон>
    <Газель>0dc7301f-359b-11e4-a3e8-bcee7b9ca45f</Газель>
    <Ответственный>00000000-0000-0000-0000-000000000000</Ответственный>
    <Обработана>false</Обработана>
    <Комментарий/>
    <ЗаявкаПоваров>false</ЗаявкаПоваров>
    <КонтрольнаяСумма/>
    <Состав>
        <Номенклатура>801eb422-addd-11e3-9528-00155d00c900</Номенклатура>
        <Единица>ac5c9e52-8772-11e4-8bf7-bcee7b9ca45f</Единица>
        <Количество>0</Количество>
        <Коэффициент>0.4</Коэффициент>
        <КолЗак>0</КолЗак>
        <ЕдЗак>00000000-0000-0000-0000-000000000000</ЕдЗак>
        <КоэффЗак>0</КоэффЗак>
        <Справочно>0</Справочно>
    </Состав>
</DocumentObject.Заявка>
Шаблон преобразования сообщения обмена:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xmlns:v8msg="http://v8.1c.ru/messages"; <--Здесь нужно указать правильное пространство имён -->>
    <xsl:output method="xml" encoding="UTF-8"/>
       <xsl:template match="node() | @*">
          <xsl:copy>
              <xsl:apply-templates select="@* | node()"/>
          </xsl:copy>
       </xsl:template>
    <xsl:template match=" <--Здесь нужно указать правильное пространство имён --> /DocumentObject.Заявка/КонтрольнаяСумма"/>
</xsl:stylesheet>
1 Cyberhawk
 
22.09.16
17:03
"Шаблон преобразования сообщения обмена" // Впервые слышу
2 Mauser
 
22.09.16
17:15
Вот интересно.
Какая связь между "мне нужно удалить реквизит" и "Шаблон для преобразования сообщений обмена"?

Мне холодно, у меня есть четверг, но кружка не кактус?
3 Fragster
 
22.09.16
17:35
4 EugeneSemyonov
 
23.09.16
09:54
(1) Пусть будет: "XSL с помощью которого получается преобразовывать XML-ные сообщения обмена 1С"
(2) Прикол в том что без указания правильного пространства имён строка полностью копируется без удаления ненужного мне реквизита.
(3) вставил xmlns="http://v8.1c.ru/8.1/data/enterprise/current-config"; вместо xmlns:v8msg="http://v8.1c.ru/messages";, попробовал вместе эти пространства имен оставить - результата 0. Есть у кого матчасть? Дайте ссылку.
5 Mauser
 
23.09.16
10:04
6 Fragster
 
23.09.16
10:22
(4) xmlns="" надо вставить наверх, во второй кусок надо вставить что-то, чтобы было типа ".//DocumentObject.Заявка/..."
7 Fragster
 
23.09.16
10:22
это же выражение xpath, вроде
8 EugeneSemyonov
 
26.09.16
12:24
(5) Спасибо. Гуглом я пользоваться умею. 1С-ных пространств имён в буржуйских туториалах нет и не будет.
От 1С есть у кого-нить рекомендации и примеры по использованию ПреобразованиеXSL?
9 EugeneSemyonov
 
26.09.16
12:32
(6) "не выходит каменный цветок..."
10 hhhh
 
26.09.16
12:43
есть пространство имен. А есть схема. Это две разные вещи.
11 Fragster
 
26.09.16
12:44
(10) автор хочет сделать так, чтобы из одного current-config преобразовать XML в другой current-config. подход интересный, в некоторых случаях может ускорить выгрузку-загрузку данных в десятки раз.
12 Mauser
 
26.09.16
12:50
(8) И чем 1С-ное пространство имен отличается от не 1С-ного?
Злобные 1С-ники придумали свой XML и XSLT?
13 hhhh
 
26.09.16
21:51
(12) это в 1с давно всё придумали, задолго до автора.
14 Mauser
 
26.09.16
22:00
(13) Это желтые их черти бермутят воду во пруду, все придумал Нуралиев в восемнадцатом году.
15 DrShad
 
26.09.16
22:13
да забей ты вообще на пространство имен, оно нужно для описания в схеме различных типов и для чтения практически бесполезная штука
16 Mauser
 
26.09.16
22:15
Практически бесполезная штука [x]
17 EugeneSemyonov
 
27.09.16
11:54
(15) Подскажи, пожалуйста, тогда почему реквизит не удаляется?
18 EugeneSemyonov
 
27.09.16
11:58
(12) не поверишь! именем! ;-)
19 hhhh
 
27.09.16
12:02
(17) но почему оно должно удалять? Где у вас в шаблоне этом удаление?
20 Mauser
 
27.09.16
12:03
(19) Перед тегом закрытия </xsl:stylesheet>
21 Mauser
 
27.09.16
12:04
(19) Оно создает новый документ путем копирования всех узлов и атрибутов, за исключением указанного. Для определенного элемента происходит ничего =)
22 hhhh
 
27.09.16
12:08
(21) ну а причем тут пространство имен? Может же быть 10 пространств имен в одном документе?
23 EugeneSemyonov
 
27.09.16
12:08
Миш, ты ничего не подскажешь?
24 Mauser
 
27.09.16
12:10
(22) Да. Для срабатывания шаблона производящего ничего, ему надо попасть в квалифицированное имя узла. Оно прямо зависит от пространства имен обрабатываемого документа и немного косвенно - от пространства имен по умолчанию, в котором идет обработка шаблонов. Про это подробно написано по ссылкам в (5)
25 Mauser
 
27.09.16
12:12
Но, вместо изучения матчасти, Женя ждет готового решения, потому что, дескать, пространство http://v8.1c.ru/8.1/data/enterprise/current-config - особенное
26 EugeneSemyonov
 
27.09.16
12:55
(25) Честно признаться, на данный момент, необходимость использования данного решения отпала, но я уверен - пригодится в будущем. Поэтому я не забросил тему, а попробовал сделать как советовал ещё Fragster (3) (6). Не получилось. Прямо сейчас подробно изучать XSL в мои планы не входит.
В принципе тему можно закрывать, хоть и без решения. За ссылки спасибо ;-)