Имя: Пароль:
1C
1С v8
YML
0 Eeelena
 
24.12.13
11:29
Подскажите как записать в файл XML вот такой код:
<yml_catalog date="2010-04-01 17:00">
    <shop>
    ...
    </shop>
</yml_catalog>
1 sapphire
 
24.12.13
11:30
(0) легко
2 Eeelena
 
24.12.13
11:33
а конкретнее?)
3 Avganec
 
24.12.13
11:35
(0) по большому счету это уже XML. разница небольшая, так как YML это по сути XML со многими допущениями. а так, наверно надо вынести значения из тега в отдельный тег.
4 sapphire
 
24.12.13
11:36
(2) Взаимно.
Если в (0) приемник имеет xsd-схему пакета данных, то его можно импортировать и работать как с типом.

А так, можете чем угодно, это всего лишь текст.
5 sapphire
 
24.12.13
11:36
(3) Не имеет никакого значения.
6 sapphire
 
24.12.13
11:37
(3) собственно в (0) xml без директив
7 Eeelena
 
24.12.13
11:38
я просто думаю если я запишу через Запись.ЗаписатьБезОбработки(""); то это может сделать XML-документ синтаксически некорректным.
8 Avganec
 
24.12.13
11:39
(6) в грубом виде да, но мы не знаем, что там в середине.
9 Avganec
 
24.12.13
11:40
(7) попробуй без изменений сделать, может получится без муений...
10 Avganec
 
24.12.13
11:40
*мучений
11 sapphire
 
24.12.13
11:42
(7) Лен, ну в (0) вообще формат не ясен.
Можешь писать просто как текст, важно соблюсти формат и всё.
12 Eeelena
 
24.12.13
11:48
По идее передо мной стоит задача выгрузить каталог товаров в формате YML. И к сожалению я не знаю как правильно записать вот эту строку <yml_catalog date="2010-04-01 17:00"> Атрибут date элемента < yml_catalog> должен соответствовать дате и времени генерации YML-файла, как записать это правильно пока не могу разобраться. Надеюсь вы меня поняли.
13 Eeelena
 
24.12.13
11:50
Попытка
        Файл_XML = Новый ЗаписьXML();
        Файл_XML.ОткрытьФайл(XML_Путь, "windows-1251");
        
      
    Исключение
        Сообщить("Ошибка при создание XML файла! " + Символы.ПС + ОписаниеОшибки());
    КонецПопытки;  
    Файл_XML.ЗаписатьОбъявлениеXML();
     Файл_XML.ЗаписатьТипДокумента("yml_catalog","shops.dtd","");
    Файл_XML.ЗаписатьКонецЭлемента();
    Файл_XML.Закрыть();


Написала пока так в файлике выгрузки формируется  код:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
14 Eeelena
 
24.12.13
11:51
может кто-то сталкивался с такой задачей? может у кого есть пример?
15 sapphire
 
24.12.13
11:58
(0)
ДокументDOM=Новый ДокументDOM("","yml_catalog",Новый ОпределениеТипаДокументаDOM("") );
  
  ЗаписьXML=Новый ЗаписьXML();
  ЗаписьXML.УстановитьСтроку();
  
  ЗаписьXML.ЗаписатьНачалоЭлемента("yml_catalog");
  ЗаписьXML.ЗаписатьАтрибут("date", Формат(ТекущаяДата(),"ДФ=yyyy-mm-dd HH:mm:ss"));
      
      ЗаписьXML.ЗаписатьНачалоЭлемента("shop");
          ЗаписьXML.ЗаписатьТекст("....");
      ЗаписьXML.ЗаписатьКонецЭлемента();
  ЗаписьXML.ЗаписатьКонецЭлемента();
  
  СтрокаXML=ЗаписьXML.Закрыть();
  
  Сообщить(СтрокаXML);
16 sapphire
 
24.12.13
11:59
+ в (15) первая строка лишняя.
17 sapphire
 
24.12.13
12:02
Во .. совсем так:
ЗаписьXML=Новый ЗаписьXML();
  ЗаписьXML.УстановитьСтроку();
  
  ЗаписьXML.ЗаписатьНачалоЭлемента("yml_catalog");
  ЗаписьXML.ЗаписатьАтрибут("date", Формат(ТекущаяДата(),"ДФ='yyyy-MM-dd HH:mm:ss'"));
      
      ЗаписьXML.ЗаписатьНачалоЭлемента("shop");
          ЗаписьXML.ЗаписатьТекст("....");
      ЗаписьXML.ЗаписатьКонецЭлемента();
  ЗаписьXML.ЗаписатьКонецЭлемента();
  
  СтрокаXML=ЗаписьXML.Закрыть();
  
  Сообщить(СтрокаXML);
18 sapphire
 
24.12.13
12:06
(14) Короче, разберешься с объектом ЗаписьXML ?
19 Eeelena
 
24.12.13
12:06
да, спасибо)))
20 sapphire
 
24.12.13
12:07
(19)  Посмотрела (17)?
Оно выдает то же, что и в (0).
21 sapphire
 
24.12.13
12:13
добавление узла:
ЗаписьXML.ЗаписатьНачалоЭлемента({Имя узла});

для атрибутов текущего узла:
ЗаписьXML.ЗаписатьАтрибут({Имя},{Значение});

для текстовых значений узла:
ЗаписьXML.ЗаписатьТекст({Значение});

закрытие текущего узла:
ЗаписьXML.ЗаписатьКонецЭлемента();
22 sapphire
 
24.12.13
12:24
Ну и более сложное, но более логичное решение заключается в использовании XSLT т.к. в этом случае поток выгружаемых данных , как правило сериализуется и его можно сразу получить в виде xml не бегая по выборке.
23 grayshadow
 
24.12.13
12:32
купить битрикс, выгрузить туда товар, оттуда выгрузить yml:)
если планируется постоянный обмен
24 badboychik
 
24.12.13
12:37
а причем тут YML если вы про XML говорите
25 Fragster
 
гуру
24.12.13
12:39
а что, яндекс xsd не предоставляет, чтобы через XDTO заполнить по нормальному?
26 badboychik
 
24.12.13
12:44
ааа, я перепутал YML с YAML )
27 sapphire
 
24.12.13
12:46
28 Eeelena
 
24.12.13
13:03
sapphire заходила туда, для меня более проблематично как это в 1с организовать все
29 sapphire
 
24.12.13
13:15
(28) Лен, в чем именно состоит проблема?

в (21) написано как писать узлы и атрибуты.
Есть DTD схема на яндексе.
30 sapphire
 
24.12.13
13:16
(28) Для начала нужно понять что выгружать и к чему привязывать (наличие собственного ИМ).

Далее ничего особо сложного.
31 Eeelena
 
24.12.13
13:39
sapphire ИМ это что?
sapphire в этом тоже проблема, не пойму как выгрузить всю сразу номенклатуру или по группам, ведь нужно указывать как то URL страницы товара, а какой URL у кого товара не известно. может я из мухи делаю слона из за непонимания и все гораздо проще.
32 sapphire
 
24.12.13
14:02
(31) ИМ = интернет-магазин, собственный.
URL страницы товара - необязательный параметр вроде как.
как выгрузить всю сразу номенклатуру или по группам
- не имеет особого значения, насколько я понял.

Вообще, параметры, обязательные к выгрузке указаны в DTD - схеме.
33 Eeelena
 
24.12.13
14:23
хорошо, спасибо большое sapphire буду разбираться)
34 sapphire
 
24.12.13
14:24
(33) Незачто.