v8: Запись xml документа через DOM ЗаписьУзловDOM #626447


#0 by kai17
Подвернулась задача выгрузки XML  файла из 1с во внешний файл . По описанию  для построения документа  вполне  подходит ДокументDOM . Читаю справку пользователя и рождается примерный код : Однако  несмотря на все ухищрения  в итоге файл XML  формируется пустой . Проблема в объекте ЗаписьУзловDOM , который успешно выполняет все  методы ,  не трогая при этом ДокументDOM . Как можно  заставить  ЗаписьУзловDOM   перенести  изменения в  объект   ДокDOM ? Может  метод какой нужен ? PS 1С:Предприятие 8.2 (8.2.15.318)
#1 by kai17
up
#2 by andrewks
я не вижу, где ты тут файл пишешь. у тебя в строку выводится
#3 by andrewks
в коде винегрет. вот пример рабочего кода
#4 by kai17
Есть пример добавления  элемента через  объект ЗаписьУзловDOM  ? При добавлениия элементов непосредственно  через   ДокументDOM  проблем нет .  винегрет в строке Сообщить(СтрокаXML) ;  читать как вывод  в окно сообщения ,а не файл .
#5 by andrewks
про файл это я уже понял, ты, видимо, сначала писал в файл, а потом переделал на вывод в сообщения, так? по поводу конкретно записи через ЗаписьУзловDOM  - щас у себя проверю
#6 by kai17
изначально действительно в коде  был вывод в файл , затем   был  сформирован код для демонстрации проблемного  места, максимально упрощенный . ЗаписьУзловDOM   понадобился так как в коде  записи  используется ФабрикаXDTO ,  вот она  производит запись ДокументDOM только через объект ЗаписьУзловDOM .
#7 by andrewks
у меня код из ведёт себя так же. рабочего примера с ЗаписьУзловDOM   у меня нет, т.к. не пользовался. в любом случае, через ДокументDOM ты можешь сформировать любой xml-документ, в т.ч. с ns
#8 by andrewks
но там через чтение/записьхмл
#9 by andrewks
вообще, некоторые объекты касательно хмл в 1С просто тупо не работают (по крайней мере, при проверке с пол-года назад не работали), например, КаноническаяЗаписьXML, чтение/запись FastInfoSet
#10 by andrewks
если подавать запись узлов на запись хмл (до ЗаписьУзлов.Закрыть; ), тогда пишет:
#11 by andrewks
но пишет только этот фрагмент
#12 by kai17
вот как перенести ЗаписьУзлов.УзелDOM  в ДокументDOM  непонятно .   Если перенос не осуществляется , зачем тогда ЗаписьУзлов.Открыть(ДокDOM) делать ? Логика работы этого объекта совершенно непонятна . примеров работы с ЗаписьУзловDOM на знает даже гугл .
#13 by andrewks
вопрос уже задавался на оф.форум 1с  - ответа нет
#14 by andrewks
если есть желание и время - напиши в поддержку
#15 by kai17
написал  на  партнерском форуме тут есть фрагмент кода к сожалению тоже нерабочий .
#16 by andrewks
отпиши потом здесь, если ответят что-то внятное, а то доступ на партнёрский не у всех есть
#17 by andrewks
логика работы понятна, но ровно до момента вызова ЗаписьУзлов.Закрыть;   ;-)
#18 by kai17
Ответ  от разработчиков: Экземпляр документа DOM, передаваемый в конструктор объекта ЗаписьУзловDOM, используется только для создания создаваемых в процессе записи узлов. Сами узлы не добавляются в документ. Сфомированный при записи фрагмент документа DOM доступен через свойство УзелDOM объекта ЗаписьУзловDOM. Если необходимо, его можно добавить к существующему элементу (или установив в качестве корневого) документа DOM, получив требуемую структуру документа.
#19 by andrewks
нифига не добавляется,  пробовал уже.
#20 by kai17
Заработало вот так :
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С