Имя: Пароль:
1C
1С v8
xml как сделать цикл ?
0 0level
 
03.02.14
17:45
структурныйТип = ФабрикаXDTO.Тип("http://www.sample-package.org","root";);
root = ФабрикаXDTO.Создать(структурныйТип);

пока рецепт.Следующий() цикл

    
row = ФабрикаXDTO.Тип("http://www.sample-package.org","row";);
    
ЗаписьXDTO = ФабрикаXDTO.Создать(row);
         ЗаписьXDTO.nub = Строка(n);
           ЗаписьXDTO.v = "v";
           ЗаписьXDTO.gos = СТрока(gos);
            
                
        
root.row = ЗаписьXDTO;
//row.Добавить(row); ???????
конеццикла;
    
      ПутьКФайлу = Объект.Каталог+"/"+(Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy"))+".xml";
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(ПутьКФайлу);
Запись.ЗаписатьОбъявлениеXML() ;

ФабрикаXDTO.ЗаписатьXML(Запись, root);
Запись.Закрыть();


как сделать чтобы записи row не перезаписывались, а добавлялись
1 Apokalipsec
 
03.02.14
17:47
сделать список.
2 0level
 
03.02.14
17:49
эт как
3 Apokalipsec
 
03.02.14
17:51
ОбъектСписок = ФабрикаXDTO.Создать(ТипОбъектаСписок);

Вообще на инфостарте до туевой хучи уже статей по фабрике: http://infostart.ru/public/167459/
начинайте читать
4 0level
 
03.02.14
17:55
прочитал, недогнал. прошу помощи.
так как там для примера написано ОбъектСписок.Добавить(Сотрудник);
(root.Добавить.(row) не катит)
у меня этот метод не прошел, нужно больше параметров, и когда я их добавляю идут другие ошибки.
5 0level
 
04.02.14
10:46
помогите
<root>

<row>

<1></1>
<2></2>

</row>
<row>

<1></1>
<2></2>

</row>

</root>

как сделать чтобы <row> добавлялось?
6 Maxus43
 
04.02.14
10:52
сделай свой XTDO пакет в пофигураторе, потом (3) и будет красиво
7 0level
 
04.02.14
10:54
он уже сделан
8 Maxus43
 
04.02.14
10:54
а, уже есть? в свойствах у row у тебя указано что несколько раз может быть? по умолчанию 1 строка тока
9 0level
 
04.02.14
10:55
все уже написано, нужна помощь в одной строчке кода. как добавить блок row и все! помогите
10 Maxus43
 
04.02.14
10:56
так в идеале должна схема быть составлена, блок rows с типом row. Может он есть? ищи

root.rows.Добавить(row);
11 Maxus43
 
04.02.14
10:56
схему вышли, я не вижу что там
12 Сильфон
 
04.02.14
10:59
(0) ЗаписьXDTO["root"].Добавить(row);
13 Сильфон
 
04.02.14
11:02
Ой, не так. Запутался в твоих переменных
14 0level
 
04.02.14
11:02
Поле объекта не обнаружено (root)
        ЗаписьXDTO["root"].Добавить(row);
15 Сильфон
 
04.02.14
11:06
(0) root["row"].Добавить(row)
16 0level
 
04.02.14
11:08
(15) Недостаточно фактических параметров
         root["row"].Добавить(row);
17 0level
 
04.02.14
11:15
вот схема http://yadi.sk/d/rTJfhrGzHGq53
18 Maxus43
 
04.02.14
11:18
а щас пеерчитай (8), у тебя она может быть только одна в схеме
19 musdust
 
04.02.14
11:18
(0) Так надо: root["row"].Добавить(ЗаписьXDTO)
20 0level
 
04.02.14
11:21
(18) ноль нужно поставить чтоб не ограничено?
21 musdust
 
04.02.14
11:22
(18) По схеме она может быть сколько угодно раз.
22 musdust
 
04.02.14
11:23
maxOccurs="unbounded"

уже стоит так как должно быть.
23 0level
 
04.02.14
11:24
(19) : Недостаточно фактических параметров
            root["row"].Добавить(ЗаписьXDTO);
24 musdust
 
04.02.14
11:24
поставь так  minOccurs="0" maxOccurs="unbounded"
25 Maxus43
 
04.02.14
11:24
структурныйТип = ФабрикаXDTO.Тип("http://www.sample-package.org","root";);
    
    root = ФабрикаXDTO.Создать(структурныйТип);
    row = ФабрикаXDTO.Тип("http://www.sample-package.org","row";);
    
    ЗаписьXDTO = ФабрикаXDTO.Создать(row);
    ЗаписьXDTO.prepar_name = "1";
    
    root.row.Добавить(ЗаписьXDTO);
    ЗаписьXDTO.prepar_name = "2";
    root.row.Добавить(ЗаписьXDTO);

у меня так работает, переделывай схему

(21) ага, щас... min max стоит в 1
26 musdust
 
04.02.14
11:28
Что так
root["row"].Добавить(ЗаписьXDTO);
что так
root.row.Добавить(ЗаписьXDTO);

одинаково.


Есть ошибка: ЗаписьXDTO = ФабрикаXDTO.Создать(row);

Надо сделать так:
ЗаписьXDTO = новый массив();
Цикл
   ЗаписьXDTO[i] = ФабрикаXDTO.Создать(row);
   root.row.Добавить(ЗаписьXDTO[i]);
КонецЦикла
27 musdust
 
04.02.14
11:30
row = ФабрикаXDTO.Тип("http://www.sample-package.org","row""; target="_blank" rel="nofollow" class="extralink">http://www.sample-package.org","row";;);

можно вынести за цикл
28 Maxus43
 
04.02.14
11:34
http://i33.fastpic.ru/big/2014/0204/ea/a6a9d9cc2637be41e31aa72d91a3f2ea.png

вот рабочий вариант с пруфами, СписокXDTO должен быть
29 0level
 
04.02.14
11:39
(28) и как его сделать?
30 musdust
 
04.02.14
11:42
он и так создается если сделаешь как я написал
31 musdust
 
04.02.14
11:43
(24) (26)
32 Maxus43
 
04.02.14
11:46
конечно сам создаётся, если схема правильная
33 Maxus43
 
04.02.14
11:47
а нахрена всякие массивы и т.д. - непонимать, зачем усложнять элементарные вещи?
34 0level
 
04.02.14
11:49
(32) у меня схема правильная или что и где поправить?
35 Maxus43
 
04.02.14
11:51
(34) вникни в 2 слова - minOccurs и maxOccurs, в пофигураторе - минимальное и максимальное количество. у тебя там стоит везде 1
36 musdust
 
04.02.14
11:51
(33) А нахрена ЗаписьXDTO.prepar_name = "2"; и т.д. - непонимать, зачем усложнять элементарные вещи?

(34) <xs:element name="row" type="tns:row" minOccurs="0" maxOccurs="unbounded"/>
37 Maxus43
 
04.02.14
11:52
(36) это заполнение уже самого элемента, данные для примера, не относящиеся к логике работы.
Или ты думаешь заполнять ничего не надо, а просто пустые элементы подабавлять?)
38 musdust
 
04.02.14
11:55
(37) Заполнять можно в любое время потом, в моем варианте. А в твоем это сделать будет не возможно, так как переменная ЗаписьXDTO пересоздалась.
39 Maxus43
 
04.02.14
11:56
(38) гениально
40 0level
 
04.02.14
12:02
Спасибо Вам musdust  Maxus43!!!

Буду еще "раскуривать" ваши советы, по-быстрому помогло исправить в свойствах row значение "максимальное количество" на 99999999999 поумолчанию стояло 1.
Хотя в схеме реально ограничений я не ставил.
Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс