По теме из базы знаний
- 1С8:борьба - личный опыт работы с платформой 1с8
- Универсальный обмен данными XML через web-сервисы
- Как формируется GUID?
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Например, можно так записать:
Записьxml = новый ЗаписьXML;
Записьxml.ОткрытьФайл(ИмяФайла);
Записьxml.ЗаписатьОбъявлениеXML();
Записьxml.ЗаписатьНачалоЭлемента("Пример");
Записьxml.ЗаписатьТекст("Текст");
Записьxml.ЗаписатьКонецЭлемента();
//Имя справочника для примера
ИмяСправочника = "Номенклатура";
/////////////////////////////////////////////////////////////////////////
//Выгрузка
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
//записываем объявление xml файла: <?xml version="1.0"?>
Запись.ЗаписатьОбъявлениеXML();
//записываем корневой элемент, по спецификации xml он может быть только один, назовем его "Данные"
Запись.ЗаписатьНачалоЭлемента("Данные");
//для того чтобы пространства имен не объявлялись сериализатором в кажом элементе, пишем их в корневой элемент
//они будут работать на все вложеные элементы
//пространство имен по-умолчанию
Запись.ЗаписатьСоответствиеПространстваИмен("", "http://v8.1c.ru/8.1/data/enterprise/current-config");
//пространства имен остальные префиксы
Запись.ЗаписатьСоответствиеПространстваИмен("xsd", "http://www.w3.org/2001/XMLSchema");
Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
//ограничение количества выгружаемых элементов для примера
Кол = 4;
Выборка = Справочники[ИмяСправочника].Выбрать();
Пока Выборка.Следующий() Цикл
//вместо этого кода в боевой реализации выгрузки будет создание ОбъектаXDTO и его сериализация
//через ФабрикуXDTO и загруженные в нее схемы конфигурации приемника
СериализаторXDTO.ЗаписатьXML(Запись, Выборка.ПолучитьОбъект());
//
Кол = Кол - 1;
Если Кол=0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
//записываем конец корневого элемента
Запись.ЗаписатьКонецЭлемента();
//покажем что получилось
Текст = Запись.Закрыть();
Сообщить("Содержимое файла:");
Сообщить(Текст);
//а теперь загрузим это обратно
/////////////////////////////////////////////////////////////////////////
//Загрузка
Сообщить("Данные полученные при загрузке:");
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(Текст);
//прочитаем начало xml файла
Чтение.ПерейтиКСодержимому();
//прочитаем начало корневого элемента
Чтение.Прочитать();
//читаем содержимое пока текущим не станет конец корневого элемента, т.к. мы писали туда только целые элементы справочника,
//а сериализатор читает каждый из их полностью, то мы упремся именно в конец корневого
Пока Чтение.ТипУзла<>ТипУзлаXML.КонецЭлемента Цикл
//читаем очередной элемент справочника
Объект = СериализаторXDTO.ПрочитатьXML(Чтение);
//покажем что прочитали, осталось только записать объект
Сообщить(""+ТипЗнч(Объект)+" - "+Объект);
КонецЦикла;
Чтение.Закрыть();
Показать
DECLAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" это
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
xsi:noNamespaceSchemaLocation="J0210401.xsd надо описывать при помощи
ЗаписьXML.ЗаписатьАтрибут("xsi:schemaLocation", ""); - тут продумать для себя надо второй параметр
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
xsi:noNamespaceSchemaLocation="J0210401.xsd надо описывать при помощи
ЗаписьXML.ЗаписатьАтрибут("xsi:schemaLocation", ""); - тут продумать для себя надо второй параметр
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот