|
создание документов из xml файла | ☑ | ||
---|---|---|---|---|
0
Sniper9mm
22.09.11
✎
10:30
|
Пытаюсь с помощью xml такого вида создать документы…………
- <V8Exch:Data> - <DocumentObject.ПоступлениеТоваровУслуг> <Контрагент>000001193</Контрагент> - <Услуги> - <Row> <Номенклатура>00004444</Номенклатура> </Row> </Услуги> </DocumentObject.ПоступлениеТоваровУслуг> - <DocumentObject.ПоступлениеТоваровУслуг> <Контрагент>000001194</Контрагент> - <Услуги> - <Row> <Номенклатура>00004443</Номенклатура> </Row> </Услуги> </DocumentObject.ПоступлениеТоваровУслуг> </V8Exch:Data> Делаю так….. Процедура КнопкаВыполнитьНажатие(Кнопка) Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл("D:\ХМЛ\1.xml"); Имя = Чтение.Имя; Массив = Новый Структура(Имя); Пока Чтение.Прочитать() Цикл ПолучитьXMLТип(Чтение); Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Имя = Чтение.Имя; Пока Чтение.ПрочитатьАтрибут() Цикл Атрибут = Чтение.Значение; КонецЦикла; КонецЕсли; Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда Массив.Вставить(Имя,Чтение.Значение); Сообщить(Чтение.Значение); КонецЕсли; Если Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента и Чтение.Имя = "DocumentObject.ПоступлениеТоваровУслуг" тогда ДобавитьЭлемент(Массив); Сообщить(Имя); КонецЕсли; КонецЦикла КонецПроцедуры Процедура ДобавитьЭлемент(Массив) НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); НовыйДокумент = Документы.ПоступлениеТоваровУслуг.ПолучитьФормуНовогоДокумента(); НовыйДокумент.Контрагент = Справочники.Контрагенты.НайтиПоКоду(Массив.Контрагент); НовыйДокумент.Открыть(); КонецПроцедуры В чём ошибка подскажите…. Или подскажите пример, немного не разберусь. |
|||
1
Maxus43
22.09.11
✎
10:40
|
Пока Чтение.ПрочитатьАтрибут() Цикл
Атрибут = Чтение.Значение; КонецЦикла; и где он используется потом? Что в Массиве то в итоге? |
|||
2
Sniper9mm
22.09.11
✎
11:07
|
Атрибут не определён. ни где.
в массиве в итоге: Контрагент Номенклатура |
|||
3
Maxus43
22.09.11
✎
11:09
|
Массив.Контрагент
думаеш так к массиву обращаться надо? |
|||
4
Maxus43
22.09.11
✎
11:09
|
(3) + тьфу, вот что значит неолднозначные названия переменных)
|
|||
5
Sniper9mm
22.09.11
✎
11:12
|
документ то он вроде создаёт, вот тока 1 , а нужно 2.... нужно обратится думаю к Чтение.Имя = "DocumentObject.ПоступлениеТоваровУслуг" , тока как
|
|||
6
Maxus43
22.09.11
✎
11:22
|
НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
НовыйДокумент.Контрагент = Справочники.Контрагенты.НайтиПоКоду(Массив.Контрагент); НовыйДокумент.Записать(); НовыйДокумент.ПолучитьФормуЭлемента().Открыть(); |
|||
7
Sniper9mm
22.09.11
✎
11:43
|
блинн я чёт не понял ... почему так. поставил НовыйДокумент.Записать(); начало 2 документа формироваться.
понять не мог ведь сообщения 2 выходит.... почему тока один документ открывался |
|||
8
Sniper9mm
22.09.11
✎
11:47
|
Maxus43 спасибо!!!!
|
|||
9
Maxus43
22.09.11
✎
11:50
|
надо записывать их в базу то вобще?
|
|||
10
Sniper9mm
22.09.11
✎
11:53
|
да
|
|||
11
Maxus43
22.09.11
✎
11:53
|
ну тогда ок
|
|||
12
Sniper9mm
22.09.11
✎
13:14
|
Не ругайтесь сильно… пытаюсь в табличную часть записать… не пишет.
Чтение.Имя = "Row" отладчиком смотрю походу всегда лож , как тут быть?? Пока Чтение.Прочитать() Цикл ПолучитьXMLТип(Чтение); Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Имя = Чтение.Имя; Сообщить(Имя); Пока Чтение.ПрочитатьАтрибут() Цикл Атрибут = Чтение.Значение; КонецЦикла; КонецЕсли; Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда Массив.Вставить(Имя,Чтение.Значение); Сообщить(Чтение.Значение); КонецЕсли; Если Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента и Чтение.Имя = "DocumentObject.ПоступлениеТоваровУслуг" тогда ////////////////////////////////////////////////////////////////////////// НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); НовыйДокумент = Документы.ПоступлениеТоваровУслуг.ПолучитьФормуНовогоДокумента(); НовыйДокумент.Контрагент = Справочники.Контрагенты.НайтиПоКоду(Массив.Контрагент); НовыйДокумент.Дата = НачалоМЕсяца(ТекущаяДата()); Пока Чтение.Имя = "Row" Цикл Чтение.Прочитать(); НоваяСтрока= НовыйДокумент.Услуги.Добавить(); НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(Массив.Номенклатура); КонецЦикла; НовыйДокумент.Записать(); НовыйДокумент.Открыть(); ////////////////////////////////////////////////////////////////////////// Сообщить(Имя); КонецЕсли; КонецЦикла; |
|||
13
Sniper9mm
22.09.11
✎
14:03
|
или вообще не так делаю??
|
|||
14
Sniper9mm
22.09.11
✎
14:47
|
Подскажите плизз , как записать каждую строку… а то тока одна записывается
- <Документ> - <DocumentObject.ПоступлениеТоваровУслуг> <Контрагент>000001193</Контрагент> - <Услуги> - <Row> <Номенклатура>00000040346</Номенклатура> </Row> - <Row> <Номенклатура>00000026714</Номенклатура> </Row> </Услуги> </DocumentObject.ПоступлениеТоваровУслуг> </Документ> Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл("D:\ХМЛ\1.xml"); Имя = Чтение.Имя; Массив = Новый Структура(Имя); Пока Чтение.Прочитать() Цикл ПолучитьXMLТип(Чтение); Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Имя = Чтение.Имя; Сообщить(Имя); Пока Чтение.ПрочитатьАтрибут() Цикл Атрибут = Чтение.Значение; КонецЦикла; КонецЕсли; Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда Массив.Вставить(Имя,Чтение.Значение); Сообщить(Чтение.Значение); КонецЕсли; Если Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента и Чтение.Имя = "DocumentObject.ПоступлениеТоваровУслуг" тогда ////////////////////////////////////////////////////////////////////////// НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); НовыйДокумент = Документы.ПоступлениеТоваровУслуг.ПолучитьФормуНовогоДокумента(); НовыйДокумент.Контрагент = Справочники.Контрагенты.НайтиПоКоду(Массив.Контрагент); НовыйДокумент.Дата = НачалоМЕсяца(ТекущаяДата()); НоваяСтрока= НовыйДокумент.Услуги.Добавить(); НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(Массив.Номенклатура); Чтение.Прочитать(); НовыйДокумент.Записать(); НовыйДокумент.Открыть(); ////////////////////////////////////////////////////////////////////////// Сообщить(Имя); КонецЕсли; КонецЦикла; |
|||
15
Sniper9mm
22.09.11
✎
15:50
|
хоть подскажите так правильно???
Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл("D:\ХМЛ\1.xml"); Имя = Чтение.Имя; Массив = Новый Структура(Имя); Пока Чтение.Прочитать() Цикл ПолучитьXMLТип(Чтение); Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Имя = Чтение.Имя; Сообщить(Имя); Пока Чтение.ПрочитатьАтрибут() Цикл Атрибут = Чтение.Значение; КонецЦикла; КонецЕсли; Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда Массив.Вставить(Имя,Чтение.Значение); Сообщить(Чтение.Значение); КонецЕсли; Если Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента тогда ////////////////////////////////////////////////////////////////////////// Если Чтение.Имя = "DocumentObject.ПоступлениеТоваровУслуг" тогда НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); НовыйДокумент = Документы.ПоступлениеТоваровУслуг.ПолучитьФормуНовогоДокумента(); НовыйДокумент.Контрагент = Справочники.Контрагенты.НайтиПоКоду(Массив.Контрагент); НовыйДокумент.Дата = НачалоМЕсяца(ТекущаяДата()); НовыйДокумент.Записать(); НовыйДокумент.Открыть(); КонецЕсли; Если Чтение.Имя= "Row" тогда НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); НовыйДокумент = Документы.ПоступлениеТоваровУслуг.ПолучитьФормуНовогоДокумента(); НоваяСтрока= НовыйДокумент.Услуги.Добавить(); НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(Массив.Номенклатура); НоваяСтрока.Количество = Массив.Количество; НовыйДокумент.Открыть(); КонецЕсли; ////////////////////////////////////////////////////////////////////////// Сообщить(Имя); КонецЕсли; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |