XML: подредактировать свойство вложенного узла кодом ПриВыгрузке #682255


#0 by PiotrLoginov
Здрасте всем. Создаю произвольный обмен. Проблема: внутри узла Объект узел Ссылка имеет свойство УникальныйИдентификатор без атрибутов ТипИсточника и ТипПриемника. Хочу добавить эти атрибуты кодом, вставленным в самое ближайшее к моменту выгрузки этих данных событие, а именно - ПриВыгрузке (модифицировать конфу нельзя). Вот выгружается объект - элемент справочника. Сформировался узел Ссылка (свойство УникальныйИдентификатор не имеет необходимых атрибутов) - и "превратился в строку методом Закрыть . Создается узел Объект. Строка со ссылкой "вкладывается" внутрь него методом ЗаписатьБезОбработки . И тут наступает время выполнения кода ПриВыгрузке. Как мне в этот момент обработать Объект, чтобы добавить атрибуты свойству вложенного в него узла Ссылка? Помогите плиз, третий день бьюсь.
#1 by PiotrLoginov
На момент формирования узла Объект уже заполнена переменная УзелСсылки, содержащая закрытый узел Ссылка (тип - строка), и в этом же модуле имеется функция: Собственно, вот ключевой код, выполняемый перед ПриВыгрузке: Мне советовали добавлять атрибуты методом ЗаписатьАтрибут, но я не знаю, как мне правильно "добраться" внутрь узла Объект к свойству узла Ссылка, поэтому во время ПриВыгрузке просто редактирую содержимое переменной Приемник: Увы, это не работает, т.е. Приемник в итоге содержит нужные мне данные, но дальнейшее добавление в него информации не выполняется - видимо, то, что я из него делаю, не пригодно для дальнейшей обработки.
#2 by PiotrLoginov
Подробнее: дальше после того, как мой код редактирует содержимое Приемник'а, выполняется последовательное добавление к узлу Ссылка нескольких узлов Свойство (это реквизиты выгружаемого объекта). Если добавляемый реквизит ссылочного типа, внутри него записывается узел Ссылка. Реквизиты добавляются в цикле. Поехали. Первый реквизит. Записывается свойство Родитель : выполняется ЗаписатьНачалоЭлемента("Свойство") , формируется и "подклеивается" Ссылка, а затем, и не одно - Свойство, после чего выполняется ЗаписатьКонецЭлемента . Пока все ок. Далее. Начинается выполнение аналогичного действия для реквизита Артикул, но его значение - пустая строка (реквизит не заполнен), и выполнение этого витка цикла прерывается. Далее. Начинается создание свойства НаименованиеПолное. Вот тут-то при попытке выполнить ЗаписатьНачалоЭлемента("Свойство") возникает Исключение. Описание ошибки: "Ошибка при вызове метода контекста (ЗаписатьНачалоЭлемента): Ошибочный порядок записи XML" Вот содержимое переменной перед попыткой ЗаписатьНачалоЭлемента (тип - ЗаписьXML, но чтобы скопировать сюда содержимое, я в отладчике выполнил Закрыть ): <Объект Нпп="1" Тип="СправочникСсылка.Номенклатура" ИмяПравила="Номенклатура"><Ссылка> Предыдущие узлы закрыты (кроме головного), ничего особенного или сверхъестественного. Что за ерунда? Порыскал в интернете. Вот тут : пишут: "... не забывайте обозначать корневой элемент". О чем речь? Что неправильно? Помогите уже кто-нибудь, пожалуйста.
#3 by Поpyчик-4
XPath не предлагать?
#4 by PiotrLoginov
Все что угодно предлагайте, у меня уже руки опускаются, все перерыл.
#5 by PiotrLoginov
В любом случае, чтобы что-то делать с Приемник'ом (тип - ЗаписьXML ) мне нужно как-то его прочитать, даже если потом я собираюсь использовать XPath . Как это сделать? Не получится же что-то типа .....
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям