gifts2017

Класс "ЗаписьXML" для 1С++, аналог одноименного класса из 8.x.

Опубликовал Андрей Смирнов (curdate) в раздел Программирование - Практика программирования

Мне понадобилось перенести работающий код выгрузки данных в xml из 1С 8.2 в 7.7. Чтобы минимизировать исправления - написал класс-эмулятор класса ЗаписьXML из 8.2. Теперь при переносе кода из 1С8.2 в 7.7 количество необходимых изменений - минимально.

Мне понадобилось перенести работающий код выгрузки данных в xml из  1С 8.2 в 7.7. Чтобы минимизировать исправления - написал класс-эмулятор класса ЗаписьXML из 8.2. Теперь при переносе кода из количество необходимых изменений - минимально.

В идеальном случае нужно заменить 

ЗаписьXML = Новый ЗаписьXML;

на

ЗаписьXML = СоздатьОбъект("ЗаписьXML");

 

В результате код выгрузки с использованием класса выглядит так же, как в 8.х:

    ИмяВременногоФайла = "C:\test.xml");



   
ЗаписьXML = СоздатьОбъект("ЗаписьXML");

   
ЗаписьXML.ОткрытьФайл(ИмяВременногоФайла);

   
ЗаписьXML.ЗаписатьОбъявлениеXML();

   
ЗаписьXML.ЗаписатьНачалоЭлемента("yml_catalog");

   
ЗаписьXML.ЗаписатьАтрибут("date", "" + ТекущаяДата());



   
//Валюты

   
ЗаписьXML.ЗаписатьНачалоЭлемента("currencies");

   
ЗаписьXML.ЗаписатьНачалоЭлемента("currency");

   
ЗаписьXML.ЗаписатьАтрибут("ID", "UAH");

   
ЗаписьXML.ЗаписатьАтрибут("rate", "1");

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

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

    //

   
ЗаписьXML.ЗаписатьКонецЭлемента();//yml_catalog

   
ЗаписьXML.Закрыть();

Для работы также требуется класс "Стек" (включен в файл примера).

 

Кроме методов, присутствующих в классе ЗаписьXML, добавил дополнительные, позволяющие делать выгрузку более лаконично:

  • ЗаписатьЗначениеЭлемента(Имя, Значение) - добавляет в файл строку вида:
    <currencyId>USD</currencyId>
  • ЗаписатьПараметр(Имя, Значение) - добавляет в файл строку вида:
    <param name="Максимальный формат">А4</param>

Содержимое: МД файл с классом ЗаписьXML и Стек (в обработках), с примером выгрузки (в отчетах)

Скачать файлы

Наименование Файл Версия Размер
Конфигурация - пример 14
.rar 12,33Kb
02.11.12
14
.rar 12,33Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Епрст (Ёпрст) 29.10.12 16:58
Лень смотреть, на основе чего класс слеплен ?
Домдокумент ?
обычный текст ?
в7плюс ?
2. Андрей Смирнов (curdate) 29.10.12 17:01
3. Евгений Долиновский (Dolly_EV) 31.10.12 08:01
(1) О! Тебе же лень было через fso переписать декларацию - вот оно, готовое ))))
(0) Автору - плюс!
еще бы кто бы написал класс "1С:Предприятие8_для_77" )))
4. Alex Steiner (OrsoBear) 01.11.12 09:03
Для стартапа маловато информации.
Пока сам от начала до конца не написал загрузку-выгрузку, только тогда понял, как это дело все работает.
Хотя, можно сослаться на то, что обрабтка для знающих людей.
Но здесь чаще простые обыватели подходящие под себя обработки ищет :)

В любом случае спасибо :) Пригодилось.
5. Сергей Космачев (ksnik) 14.03.13 15:33
В обработке КлсЗаписьXML
Процедура ЗаписатьОбъявлениеXML() Экспорт
	Текст.ДобавитьСтроку("<?xml version=""1.0"" encoding=""windows-1251""?>");
КонецПроцедуры	// ЗаписатьОбъявлениеXML

тег с ошибочной кодировкой " encoding="win1251"?> вместо "windows-1251".
Кодировки "win1251" не существует. Есть "windows-1251".
6. Игорь Никик (igo1) 20.11.14 13:11
Чтобы получить заголовок файла <?xml version="1.0" encoding="windows-1251"?> пишем код.

Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку("windows-1251");
Запись.ЗаписатьОбъявлениеXML();
........
...Показать Скрыть
7. Александр Сахин (programma) 18.02.15 19:06