|
Почему не заполняется табличное поле | ☑ | ||
---|---|---|---|---|
0
Вася Чез
12.12.13
✎
15:01
|
Подскажите почему в табличном поле заполняется только одна последняя строка? Что я пропустил?
Загружаю XML в таблицу значений. А таблицу значений вывожу в табличное поле. Заполняется только последняя строка. Например: ТЗ = Новый ТаблицаЗначений; ЭлементыФормы.ТабличноеПоле.Значение = ТЗ; ТЗ.Колонки.Добавить("Счет"); ТЗ.Колонки.Добавить("Контрагент"); Стр = ТЗ.Добавить(); Для Каждого Стр Из ТЗ Цикл //Account1 несколько записей в XML Стр.Счет = Account1; КонецЦикла; Для Каждого Стр Из ТЗ Цикл //Partner1 несколько записей в XML Стр.Контрагент = Partner1; КонецЦикла; Смотрел отладчиком цикл перебирает все строки, но выводит только последнюю. |
|||
1
Fragster
модератор
12.12.13
✎
15:02
|
почему добавление строки не в цикле?
|
|||
2
George Wheels
12.12.13
✎
15:04
|
(1) Тогда будет бесконечный цикл.
|
|||
3
Вася Чез
12.12.13
✎
15:04
|
(1) будет бесконечный цикл
|
|||
4
1Сергей
12.12.13
✎
15:05
|
что-то не нашел в коде XML
|
|||
5
Ёпрст
12.12.13
✎
15:06
|
^)
дык щас всего одна строка в ТЗ.. |
|||
6
Ёпрст
12.12.13
✎
15:07
|
>>>ТЗ = Новый ТаблицаЗначений; //создали тз
>>Стр = ТЗ.Добавить();//добавили одну строку.. Какие еще строки там ? :))) |
|||
7
George Wheels
12.12.13
✎
15:07
|
Где-то заполнил ТЗ. Потом добавил в неё ещё одну строку. Потом перебор строк этой ТЗ. Че за бред?
|
|||
8
Вася Чез
12.12.13
✎
15:08
|
(6) а как надо?
|
|||
9
1Сергей
12.12.13
✎
15:10
|
(8) надо обходить XML и там уже добавлять строки в ТЗ
|
|||
10
Ёпрст
12.12.13
✎
15:11
|
(8) ну подумай..что ле
У тебя сейчас = добавлена только одна строка в ТЗ. Откуда ты еще Account1,Partner1 взял - нам отсюда не видно |
|||
11
Вася Чез
12.12.13
✎
15:12
|
(7) While Read.Read() do
NameNode = Read.Name; If Read.NodeType = XMLNodeType.StartElement Then If NameNode = "Account" then Read.Read(); Account1 = Read.Value; Для Каждого Стр Из ТЗ Цикл Стр.Счет = Account1; Сообщить(Стр.Счет); КонецЦикла; ElsIf Read.Name = "Partner" then Read.Read(); Partner1 = Read.Value; Для Каждого Стр Из ТЗ Цикл Стр.Контрагент = Partner1; Сообщить(Стр.Контрагент); КонецЦикла; EndIf; EndIf; EndDo; вот с XML |
|||
12
AaNnDdRrEeYy
12.12.13
✎
15:12
|
(8) вот так надо, вроде и палка длинная
Для Каждого Стр Из КоллекцияПрочитаннаяизХМЛ Цикл Стр = ТЗ.Добавить(); //Account1 несколько записей в XML Стр.Счет = Account1; //Partner1 несколько записей в XML Стр.Контрагент = Partner1; КонецЦикла; |
|||
13
AaNnDdRrEeYy
12.12.13
✎
15:13
|
(12) ой первой стр надо другое имя дать, копипаст не проверил
Для Каждого Стр1 Из КоллекцияПрочитаннаяизХМЛ Цикл Стр = ТЗ.Добавить(); //Account1 несколько записей в XML Стр.Счет = Стр1.Account1; //Partner1 несколько записей в XML Стр.Контрагент = Стр1.Partner1; КонецЦикла; |
|||
14
1Сергей
12.12.13
✎
15:14
|
Перестаньте экономить на буквах - давайте переменным нормальные имена
|
|||
15
Вася Чез
12.12.13
✎
15:20
|
(13) ушел в бесконечность цикл
|
|||
16
Ёпрст
12.12.13
✎
15:26
|
ну так хотя бы (хотя хз,чего там у тебя за структура в xml)
While Read.Read() do NameNode = Read.Name; If Read.NodeType = XMLNodeType.StartElement Then If NameNode = "Account" then str = ТЗ.Add(); Read.Read(); str.Счет = Read.Value;; ElsIf Read.Name = "Partner" then Read.Read(); str.Контрагент = Read.Value;; EndIf; EndIf; EndDo; |
|||
17
kvikster
12.12.13
✎
15:26
|
Как то почти так:
ТЗ = Новый ТаблицаЗначений; While Read.Read() do NameNode = Read.Name; If Read.NodeType = XMLNodeType.StartElement Then Стр = ТЗ.Добавить(); If NameNode = "Account" then Read.Read(); Account1 = Read.Value; Стр.Счет = Account1; Сообщить(Стр.Счет); ElsIf Read.Name = "Partner" then Read.Read(); Partner1 = Read.Value; Стр.Контрагент = Partner1; Сообщить(Стр.Контрагент); EndIf; EndIf; EndDo; |
|||
18
George Wheels
12.12.13
✎
15:28
|
While Read.Read() do
NameNode = Read.Name; If Read.NodeType = XMLNodeType.StartElement Then Read.Read(); If NameNode = "Account" then Стр = ТЗ.Добавить(); Стр.Счет = Read.Value; ElsIf Read.Name = "Partner" then Стр.Контрагент = Read.Value; EndIf; EndIf; EndDo; (16) не успел я |
|||
19
George Wheels
12.12.13
✎
15:29
|
А если последовательность тегов Account и Partner другая?
|
|||
20
George Wheels
12.12.13
✎
15:36
|
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "ИмяТегаЗаписи" Тогда Стр = ТЗ.Добавить(); Пока ЧтениеXML.Прочитать() Цикл Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента И ЧтениеXML.Имя = "ИмяТегаЗаписи" Тогда Прервать; КонецЕсли; Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Account" Тогда ЧтениеXML.Прочитать(); Стр.Счет = ЧтениеXML.Значение; ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Partner" Тогда ЧтениеXML.Прочитать(); Стр.Счет = ЧтениеXML.Значение; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; |
|||
21
sapphire
12.12.13
✎
15:46
|
Отчего так не любят DOM и XSL/XSLT?
|
|||
22
Вася Чез
12.12.13
✎
16:29
|
спасибо всем за помощь
|
|||
23
Вася Чез
12.12.13
✎
16:29
|
(21) скоро полюблю и это
|
|||
24
Fragster
модератор
12.12.13
✎
16:30
|
(21) потому что надо юзать XDTO :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |