helpf.pro
Регистрация
 0 
Распечатать

Как можно сформировать XML-документ произвольной структуры?

Используется модель последовательного доступа (работа осуществляется только с одним текущим узлом):
Код 1C v 8.х
 Запись = Новый ЗаписьXML;
//Путь к формируемому XML-документу указан в переменной ПутьКФайлу
Запись.ОткрытьФайл(ПутьКФайлу);

Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Корневой");
Запись.ЗаписатьАтрибут("Справочник", "Номенклатура");
Запись.ЗаписатьКомментарий("Краткая информация о номенклатуре");

Выборка = Справочники.Номенклатура.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
Запись.ЗаписатьНачалоЭлемента("Элемент");
Запись.ЗаписатьАтрибут("Код", Строка(Выборка.Код));
Запись.ЗаписатьАтрибут("Артикул", Строка(Выборка.Артикул));
Запись.ЗаписатьТекст(Выборка.Наименование);
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;

Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();


В результате будет получен файл вида
Код
<НачалоЭлемента
ИмяАтрибута = Значение ИмяАтрибута = Значение......>
Текст
<КонецЭлемента>

Создание XML-документа с помощью объекта ЗаписьXML производится путем помещения в строгой последовательности (иначе будет нарушена структура) «частей» узлов.
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 10783
 0 
Распечатать
Возможно, вас также заинтересует
10060 (0x0000274C): Попытка установить соединение была безуспешной 0
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через...
1C и Google Maps 12
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во...
1C медленно работает по сети с базой на SQL Server 8
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для...
1C: Enterprise Development Tools 35
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем
1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 2
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р,...
Посмотреть все результаты поиска похожих
Комментарии
IKSparrow
12.01.2010 21:21Комментарий: 7
IKSparrow
E_Migachev, стандартные правила страдают избыточностью кода и смысловой перегруженностью. Точно так же как и код штатных конфигураций от 1С. Любую такую конфу можно рассматривать как учебное пособие над изучением которого можно посидеть в неспешном порядке. Но, чтобы сделать из такой лаконичный и качественный продукт придётся ой как попотеть. Особенно когда стоит вопрос времени. Конфигурация ЗиК у нас нестандартная. Совсем нестандартная. И вот задача её соединить со стандартным ЗУПом. И организовать двухстороннюю связь.
За подсказки спасибо, пожалуй заброшу идею писания своей обработки и пойду читать литературу по Конвертации данных - надо же когда то ей учиться )
E_Migachev
12.01.2010 18:16Комментарий: 6
E_Migachev
IKSparrow, раздел создам, спасибо.
А по поводу переноса данных, есть же стандартные правила, да и куча обработок в инете, или у вас очень сильно переписанные конфигурации? Хотя можно грузить и старыми способоми - через DBF, MXL, XLS, TXT. Но все же, при больших объемах данных лучше XML.
IKSparrow
12.01.2010 17:33Комментарий: 5
IKSparrow
Кстати, подсказываю - открой у себя раздел о конфе "Конвертация данных". Приток вопросов гарантирую *06 По крайней мере от себя. Ну и если найду какое-то решение интересное - тоже кину )
IKSparrow
12.01.2010 17:27Комментарий: 4
IKSparrow
E_Migachev, конфигурация "Конвертация данных", работу конечно значительно облегчает. Но если в её семёрочном варианте это был простой и понятный инструмент, то в варианте восьмёрочном это стал малоизученный и малопонятный монстр с кучей настроек. И вроде общие принципы не изменились но работа стала очень замороченной. На Мисте практически каждый день вопли раздаются по поводу "прошу помощи" с этой конфой. А у меня так вообще задача стоит нетривиальная - подружить разнотипные конфигурации 1С 7.7 и 1С 8.1 - перебрасывать данные между ЗиК и ЗУП. Для начала, хотя бы кадровые. *11
E_Migachev
12.01.2010 16:58Комментарий: 3
E_Migachev
IKSparrow, да, значение только типа строка.
По сути ты все правильно понял, труд просто огромный.
Для примера можешь взять какой нибудь XML editor и посмотреть файл какой-нибудь выгрузки из 1С, посмотри как там все устроенно (расписано досконально, включая тип каждого значения и уникальный идентификатор).

А для обмена данными, я через конфу Конвертация данных, создаю правила, и выгружаю/загружаю через стандартную 1С-овскую XML обработку.
IKSparrow
12.01.2010 14:10Комментарий: 2
IKSparrow
Получается, что согласно этой технологии я должен взять метаобъект конфигурации, разложить его до простых данных, привести эти данные к типу "строка", дотянуться по ссылкам к составным объектам, расчленить в свою очередь их, и так далее и тому подобное... Труд для кодера не слабый получается. В чём кайф этой технологии? Я что-то его не нахожу.
У меня код для записи в XML простейшего документа (но атрибуты которого состоят из сложных объектов - справочников, перечислений, других документов) уже достиг дикого размера.
IKSparrow
12.01.2010 14:00Комментарий: 1
IKSparrow
Я сейчас задам идиотский вопрос (сразу предупреждаю - ИТС под рукой нет, книг по XML тоже и ещё - XML для меня новая технология) *01 А вообще обмен данными через XML подразумевает, что данные там могут содержаться только приведённые к типу "строка"? Т.е. конструкция:
у меня не работает и выдаёт ошибку не потому, что у меня руки кривые?
Код 1C v 8.х
 Запись.ЗаписатьАтрибут("ДатаДокумента",ДокументСсылка.Дата);    

а потому, что надо использовать эту конструкцию?
Код 1C v 8.х
 Запись.ЗаписатьАтрибут("ДатаДокумента", Строка(ДокументСсылка.Дата));    
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.