Текущее время: Пт, апр 26 2024, 09:56

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Вопрос начинающего: как создание агрегированного iDoc
СообщениеДобавлено: Пт, сен 09 2011, 14:20 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 08:54
Сообщения: 318
Откуда: Владивосток, Россия
Пол: Мужской
А поподробнее можно ? :-)

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос начинающего: как создание агрегированного iDoc
СообщениеДобавлено: Пт, сен 09 2011, 14:41 
Директор
Директор

Зарегистрирован:
Вт, июл 18 2006, 17:44
Сообщения: 1001
Откуда: что и все
Пол: Мужской
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1>
<ns1:MT_1C_BXY_M xmlns:ns1="urn:namespace_1C_SAP_OLD">
<ONE>
<FIO>ALICE</FIO>
<ID>00001</ID>
<TOV>
<FRID>BULKA</FRID>
<SUM>100</SUM>
<KOL>100</KOL>
</TOV>
<TOV>
<FRID>SALO</FRID>
<SUM>50</SUM>
<KOL>20</KOL>
</TOV>
<TOV>
<FRID>SALO</FRID>
<SUM>350</SUM>
<KOL>220</KOL>
</TOV>
<TOV>
<FRID>BULKA</FRID>
<SUM>100</SUM>
<KOL>100</KOL>
</TOV>
<TOV>
<FRID>HREN</FRID>
<SUM>33</SUM>
<KOL>55</KOL>
</TOV>
<TOV>
<FRID>COFE</FRID>
<SUM>12</SUM>
<KOL>11</KOL>
</TOV>
</ONE>
</ns1:MT_1C_BXY_M>
</ns0:Message1>
</ns0:Messages>

и


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sm="http://sap.com/xi/XI/SplitAndMerge"
xmlns:c1="urn:namespace_1C_SAP_OLD"
exclude-result-prefixes="xs sm c1"
version="1.0">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="/sm:Messages">
<xsl:copy><xsl:apply-templates select="sm:Message1"/></xsl:copy>
</xsl:template>

<xsl:template match="/sm:Messages/sm:Message1/c1:MT_1C_BXY_M"
><sm:Message1><c1:MT_1C_BXY_M>
<xsl:apply-templates select="ONE"/>
</c1:MT_1C_BXY_M></sm:Message1>
</xsl:template>

<xsl:template match="ONE">
<ONE>
<xsl:copy-of select="FIO|ID" />
<xsl:for-each select="TOV/FRID[
not(text()=preceding::text())
]"><xsl:variable name="f" select="current()/text()"/>
<TOV>
<FRID><xsl:value-of select="current()"/></FRID>
<SUM><xsl:value-of select="sum(parent::TOV/parent::ONE/TOV[FRID=$f]/SUM)"/></SUM>
<KOL><xsl:value-of select="sum(parent::TOV/parent::ONE/TOV[FRID=$f]/KOL)"/></KOL>
</TOV>
</xsl:for-each>
</ONE>
</xsl:template>

<xsl:template match="TOV[count(preceding-sibling::FRID/text())=0]">
<FRID><xsl:value-of select="FRID"/></FRID>
</xsl:template>
<xsl:template match="TOV"/>

</xsl:stylesheet>


делает

<?xml version="1.0" encoding="utf-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">

<sm:Message1 xmlns:sm="http://sap.com/xi/XI/SplitAndMerge">
<c1:MT_1C_BXY_M xmlns:c1="urn:namespace_1C_SAP_OLD">
<ONE>
<FIO xmlns:ns1="urn:namespace_1C_SAP_OLD">ALICE</FIO>
<ID xmlns:ns1="urn:namespace_1C_SAP_OLD">00001</ID>
<TOV>
<FRID>BULKA</FRID>
<SUM>200</SUM>
<KOL>200</KOL>
</TOV>
<TOV>
<FRID>SALO</FRID>
<SUM>400</SUM>
<KOL>240</KOL>
</TOV>
<TOV>
<FRID>HREN</FRID>
<SUM>33</SUM>
<KOL>55</KOL>
</TOV>
<TOV>
<FRID>COFE</FRID>
<SUM>12</SUM>
<KOL>11</KOL>
</TOV>
</ONE>
</c1:MT_1C_BXY_M>
</sm:Message1>
</ns0:Messages>

это не то что вы просили но неясно сколько выходных элементов должно быть. Столько, сколько TOV ? напишите пример по данному исходному.

_________________
Telegram-chat: PO, CPI-PI, java, groovy


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос начинающего: как создание агрегированного iDoc
СообщениеДобавлено: Пн, сен 12 2011, 07:19 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 08:54
Сообщения: 318
Откуда: Владивосток, Россия
Пол: Мужской
Здравствуйте! Извините за задержку с ответом.

Фрагмент оригинального сообщения:
Code:
<ONE>
<FIO>Ivanov</FIO>
<ID>00001</ID>
<TOV>
<FRID>FR01</FRID>
<MATCODE>0000000001</MATCODE>
<SUM>100</SUM>
<KOL>100</KOL>
</TOV>
<TOV>
<FRID></FRID>
<MATCODE>0000000002</MATCODE>
<SUM>50</SUM>
<KOL>100</KOL>
</TOV>
<TOV>
<FRID>FR02</FRID>
<MATCODE>0000000003</MATCODE>
<SUM>70</SUM>
<KOL>15</KOL>
</TOV>
<TOV>
<FRID>FR01</FRID>
<MATCODE>0000000004</MATCODE>
<SUM>160</SUM>
<KOL>3</KOL>
</TOV>
</ONE>


В результате из этого сообщения должны родиться два документа:
1:
Code:
<ONE>
<FIO>Ivanov</FIO>
<ID>00001</ID>
<FRID>FR01</FRID>
<TOV>
<MATCODE>0000000001</MATCODE>
<SUM>100</SUM>
<KOL>100</KOL>
</TOV>
<TOV>
<MATCODE>0000000004</MATCODE>
<SUM>160</SUM>
<KOL>3</KOL>
</TOV>
</ONE>


2:
Code:
<ONE>
<FIO>Ivanov</FIO>
<ID>00001</ID>
<FRID>FR02</FRID>
<TOV>
<MATCODE>0000000003</MATCODE>
<SUM>70</SUM>
<KOL>15</KOL>
</TOV>
</ONE>

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос начинающего: как создание агрегированного iDoc
СообщениеДобавлено: Пн, сен 12 2011, 09:54 
Директор
Директор

Зарегистрирован:
Вт, июл 18 2006, 17:44
Сообщения: 1001
Откуда: что и все
Пол: Мужской
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sm="http://sap.com/xi/XI/SplitAndMerge"
xmlns:c1="urn:namespace_1C_SAP_OLD"
exclude-result-prefixes="xs sm c1"
version="1.0">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="/sm:Messages"
><xsl:copy><xsl:apply-templates select="sm:Message1"/></xsl:copy>
</xsl:template>

<xsl:template match="/sm:Messages/sm:Message1/c1:MT_1C_BXY_M"
><xsl:apply-templates select="ONE/TOV/FRID[text()]"/>
</xsl:template>

<xsl:template match="FRID[not(text()=preceding::text() )]">
<xsl:variable name="fr" select="current()"/>
<sm:Message1><c1:MT_1C_BXY_M><ONE>
<FIO><xsl:value-of select="../../FIO"/></FIO>
<ID><xsl:value-of select="../../ID"/></ID>
<FRID><xsl:value-of select="text()"/></FRID>
<xsl:for-each select="../../TOV[FRID/text()=$fr]"><TOV>
<MATCODE><xsl:value-of select="MATCODE"/></MATCODE>
<SUM><xsl:value-of select="SUM"/></SUM>
<KOL><xsl:value-of select="KOL"/></KOL>
</TOV></xsl:for-each>
</ONE></c1:MT_1C_BXY_M></sm:Message1>
</xsl:template>
<xsl:template match="FRID"/>

</xsl:stylesheet>

_________________
Telegram-chat: PO, CPI-PI, java, groovy


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос начинающего: как создание агрегированного iDoc
СообщениеДобавлено: Ср, сен 14 2011, 04:01 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 08:54
Сообщения: 318
Откуда: Владивосток, Россия
Пол: Мужской
Спасибо!
Буду пробовать.

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB