|
|
|
|
#1 |
|
Участник
|
Привет, я меня тоже есть вопрос, надеюсь получить ответ, а может мой вопрос перенесут/переадресуют куда надо, я здесь новичок, так что сорри
Вопрос про импорт из Аксапты в XML-файл, а этот файл дальше попадает в какую-то налоговую прогу вот например строки из Аксапты this.xmlSetPageAttr('osn', 0); this.xmlSetPageAttr('corr', 1); this.xmlSetPageAttr('uved', 0); this.xmlSetPageAttr('n_uved/' ????); this.xmlSetPageAttr('d_uved/' ????); В XML-файле это выглядит так: <osn>0</osn> <corr>1</corr> <uved></uved> <n_uved/> <d_uved/> <> </>- это открывающий и закрывающий тег, а вот что значит этот <n_uved/> and <d_uved/>???? что написать после кавычки вместо знака вопроса Мне сказали что это единичный тег, а как его написать чтобы он преобразовался из this.xmlSetPageAttr('n_uved/' ?) в <n_uved/> Большая просьба- ответить в кратчайшие сроки, плиз |
|
|
|
|
#2 |
|
Участник
|
Совет - обоим.
Посмотрите класс RPayNDFL2File . Это выгрузка справки 2НФЛ в XML . Запускается из реестра сведений о доходах - формы RpayTaxListTable. Там уж наверняка в том формате который вам нужен . А еще лучше поиграться с классом и глазками посмотреть на то что он выгружает . Думаю все вопросы сами собой отпадут |
|
|
|
|
#3 |
|
Участник
|
Особенно пристально обратить внимание на метод
protected XMLElement appendXMLElement(XMLElement _toXmlElement, str _elementName, str _elementValue) { XMLElement xmlElement; XMLText xmlText; ; xmlElement = xmlDoc.createElement(_elementName); xmlText = xmlDoc.createTextNode(_elementValue); xmlElement.appendChild(xmlText); _toXmlElement.appendChild(xmlElement); _toXmlElement.appendChild(xmlDoc.createTextNode(#delimiterEnter)); return xmlElement; } где #define.delimiterEnter('\n') - видимо как раз то что нужно Ivanhoe |
|
|
|
|
#4 |
|
Участник
|
Какой-то закат солнца вручную.
А можно что-нибудь замутить с xmlNode.prefix, xmlNode.InserAfter, xmlDoc.createSignificantWhitespace, xmlDoc.preserveWhitespace? примеров кода не могу найти. |
|
|
|
|
#5 |
|
Участник
|
Угу. Пока не понял до конца.
Но использовать XMLelement и XMLdocument для форматирования вывода - закат солнца вручную. xmlDocument, xmlNode, xmlElement - это для хранения разобранного XML в памяти (!) и для работы с ним. Для вывода нужно пользоваться классом xmlWriter, который просто выводит в планарный неразобранный текст. См. перекрестные ссылки, чтобы посмотреть пример использования. Ну и про экранирование спец.символов - ура! - оно экранирует. Для записи спецсимволов используется слэш-нотация '\n', '\r', '\t' и т.д. |
|
|
|
|
#6 |
|
Участник
|
Разобрался.
Можно и xmlDocument выводить. Выложу пример кода, чтобы потом самому не вспоминать X++: static void Job1(Args _args) { XmlDocument doc = XmlDocument::newBlank(); XmlElement root; XmlElement channel; XMLWriterSettings xmlWriterSettings = new XMLwriterSettings(); XMLWriter xml; root = doc.appendChild(doc.createElement("rss")); root.setAttribute("version","2.0"); channel = root.appendChild(doc.createElement("channel")); channel.appendChild(doc.createElement("title")).innerText("Text for title"); channel.appendChild(doc.createElement("description")).innerText("Text for description"); channel.appendChild(doc.createElement("link")).innerText("http://mySuperLink"); xmlWriterSettings.indent(true); //xmlWriterSettings.indentChars(' '); // можно и не указывать xml = XMLwriter::newXml(xmlWriterSettings); doc.writeTo(xml); xml.flush(); info(xml.writeToString()); } Но вообще говоря, xmlDocument - это избыточно, если нужно всего-лишь вывести генерируемый на лету xml. Если xml только выводится, то вполне достаточно следующего кода X++: xml.writeStartDocument(); xml.writeStartElement("rss"); xml.writeAttributeString("version","2.0"); xml.writeStartElement("channel"); ... xml.writeEndElement(); xml.writeEndElement(); xml.writeEndDocument(); Во writerSettings можно задавать и символы перевода строки, и строку для отступов и т.п. |
|
|
|
| За это сообщение автора поблагодарили: Maxim Gorbunov (3), alex55 (1). | |
|
|
#7 |
|
Участник
|
Спасибо, добрый человек, _scorp_, что послал к источнику знаний - MSDN
![]() в общем, в Аксапте реализована обертка к .net классу System.Xml.XmlWriter Документация здесь http://msdn.microsoft.com/ru-ru/libr...xmlwriter.aspx краткое описание http://msdn.microsoft.com/ru-ru/library/4d1k42hb.aspx документация на system.xml.xmlwritersettings http://msdn.microsoft.com/ru-ru/libr...rsettings.aspx документация на system.xml.xmldocument http://msdn.microsoft.com/ru-ru/libr...ldocument.aspx документация на System.Xml.XmlNode http://msdn.microsoft.com/ru-ru/libr...l.xmlnode.aspx Ну, и так далее... ![]() Кроме того, интересное описание реализации похожей штуки http://ru2.php.net/manual/ru/book.xmlwriter.php В общем, не надо выполнять "закат солнца вручную". Надо просто доку поискать.
|
|
|
|
| За это сообщение автора поблагодарили: Asterisk (1). | |
| Теги |
| excel, xml, отчет, форматирование |
|
|
|