helpf.pro
Регистрация

v7: XML

ad82117
12.06.2012 19:00Прочитано: 3973
Доброго времени суток, товарищи!
подскажите, пожалуйста, голову сломал
есть задача - выгрузить из ТиС 7.7 для Яндекс.Маркет данные в xml
Взял за основу статью http://kb.mista.ru/article.php?id=73, но не могу с её помощью сделать следующий момент
<?xml version="1.0" encoding="WINDOWS-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
-<yml_catalog date="2011-07-27 13:50>
-<shop>
<name>lol.ru</name>
<company>lol</company>
<url>http://www.lol.mags.ru</url>
-<currencies>
<currency rate="1" id="RUR"/>
<currency rate="29" id="USD"/>
</currencies>
-<categories>
<category id="6184">Видеокарты</category>
<category id="265">Беспроводное оборудование Wi-Fi</category>
<category id="335">Блоки бесперебойного питания, сетевые фильтры</category>
и т.д.

как "закрыть" "shop" знаком ">", т.к. сейчас только получается сделать (кусок из сформировавшегося файла xml)

<shop
<name>lol.ru</name>
<company>LOL</company>
<url>http://www.LOL.mags.ru</url>>

вот таким кодом
//shop
xml_ЗаписатьНачалоЭлемента("<shop>");

xml_file.WriteBlankLines(1);
xml_file.Write("<name>lol.ru</name>");
xml_file.WriteBlankLines(1);
xml_file.Write("<company>LOL</company>");
xml_file.WriteBlankLines(1);
xml_file.Write("<url>http://www.lol.mags.ru</url>");
Изменено 13.06.12 15:51:31
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
13.06.2012 00:32Ответ № 1
(0) ad82117, вот пример для 7.7, делай по аналогии:
Код 1C v 7.x
  Процедура Выполнить()
Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+"v7plus.dll")<>1 Тогда
Предупреждение("Компонента не обнаружена");
Возврат;
КонецЕсли;
Анализатор=СоздатьОбъект("AddIn.XMLParser");
Корень=Анализатор.СоздатьДокумент();
План=Корень.СоздатьПодчиненныйЭлемент("ПланСчетов");
Счет=СоздатьОбъект("Счет.Основной");
Родитель=СоздатьОбъект("Счет.Основной");
Счет.ВыбратьСчета();
Пока Счет.ПолучитьСчет()=1 Цикл
// если это счет, а не субсчет
Если Счет.Уровень()=1 Тогда
Родитель.НайтиПоКоду(Счет.Код);
СчетXML=План.СоздатьПодчиненныйЭлемент("Счет");
СчетXML.УстановитьАтрибут("Код", Счет.Код);
СчетXML.УстановитьАтрибут("Валютный", Счет.Валютный);
СчетXML.УстановитьАтрибут("Количественный", Счет.Количественный);
СчетXML.УстановитьАтрибут("Забалансовый", Счет.Забалансовый);
Если Счет.Активный=1 Тогда
СчетXML.УстановитьАтрибут("вид","активный");
ИначеЕсли Счет.Активный=2 Тогда
СчетXML.УстановитьАтрибут("вид","пассивный");
Иначе
СчетXML.УстановитьАтрибут("вид","активно-пассивный");
КонецЕсли;
СчетXML.Значение=Счет.Наименование;
Иначе
Если Счет.ПринадлежитГруппе(Родитель)=1 Тогда
СубсчетXML=СчетXML.СоздатьПодчиненныйЭлемент("Субсчет");
СубсчетXML.УстановитьАтрибут("Код", Счет.Код);
// аналогично устанавливаем все атрибуты на элемент СубсчетXML
СубсчетXML.Значение=Счет.Наименование;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Корень.Записать(КаталогПрограммы()+"plan.xml");
КонецПроцедуры

В результате будет получен файл, вот его фрагмент:
Код
<?xml version="1.0" encoding="windows-12Sl" ?> - <ПланСчетов>
<Счет Код="00" Валютный="0" Количественный="0" Забалансовый="0" вид="активно-пассивный">Вспомогательный</Счет>
- <Счет Код="01" Валютный="0" Количественный="0" Забалансовый="0" вид="активный">
Основные средства
<Субсчет Код="01.1" Валютный="0" Количественный="0" Забалансовый="0"
вид="активный">ОС в организации</Субсчет> <Субсчет Код="01.2" Валютный="0" Количественный="0" Забалансовый="0"
вид="активный">Выбытие ОС</Субсчет> </Счет>
- <Счет Код="02" Валютный="0" Количественный="0" Забалансовый="0" вид="пассивный">
Амортизация ОС


Обрати внимание на
Код 1C v 7.x
 План=Корень.СоздатьПодчиненныйЭлемент("ПланСчетов");
в результате - <ПланСчетов>
ad82117
13.06.2012 15:01Ответ № 2
спасибо, Евгений! буду пробовать, а как сделать строку?
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
ad82117
13.06.2012 17:31Ответ № 3
не получается собрать строку "-<yml_catalog date="2011-07-27 13:50">" если пытаться СоздатьПодчинённыйДокумент() - выдаётся ошибка "Ошибка создания нового узла", т.к. в строке присутствуют пробелы.
Подсказка: Для редактирования своего ответа щелкните по значку (справа)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.