|
Не могу разобраться с XML | ☑ | ||
---|---|---|---|---|
0
yxo1987
17.05.12
✎
17:44
|
Выгрузил в XML. Загрузить не смог. Думалки не хватило))
Делал обмен между Комплексной и Торговлей и у меня в документе Установка цен номенклатуры полная лажа. Видимо, прога смотрела только на название справочников. А у нас много с одинаковыми названиями. Идея сейчас в том, что я выгрузил в XML Номера документов(Они идентичны в базах), Артикул, Название Номенклатуры. Обработка загрузки должна искать в ТЧ приемника по названию из файлика нужную номенклатуру, ищет в базе с нужным артикулом и подставляет. Короче нужно тупо дописать обработку. Кто сделает отправлю рублей 300 на телефон. Хелп ми.... Вот кусок XML: <?xml version="1.0" encoding="UTF-8"?> <Доки> <Установка Код="00000000420"> <Номенклатура Артикул="DD004H" Наименование="Ваза с цветами"/> </Установка> <Установка Код="00000000421"> <Номенклатура Артикул="DD002" Наименование="Подсвечник"/> </Установка> <Установка Код="00000000422"> <Номенклатура Артикул="DD002L" Наименование="Подсвечник"/> Вот процедура: Процедура КнопкаВыполнитьНажатие() Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл("C:\ee.xml"); Номер = 0; Пока Чтение.Прочитать() Цикл Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Если Чтение.Имя = "Установка" Тогда Пока Чтение.ПрочитатьАтрибут() Цикл Если Чтение.Имя = "Код" Тогда Номер = Чтение.Значение; Док = Документы.УстановкаЦенНоменклатуры.НайтиПоНомеру(Номер,ТекущаяДата()); оДок = Док.ПолучитьОбъект(); Если НЕ оДок.Проведен Тогда Для Каждого ТекущаяСтрока Из оДок.Товары Цикл Пока Чтение.ПрочитатьАтрибут() Цикл Если Чтение.Имя = "Номенклатура" Тогда Чтение.ПрочитатьАтрибут(); Код = Чтение.Значение; Имя = Чтение.Значение; Если ТекущаяСтрока.Номенклатура.Наименование = Имя Тогда ТекущаяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Код); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Сообщить(оДок); оДок.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
yxo1987
17.05.12
✎
17:45
|
Вот так выгружал:
Запись = Новый ЗаписьXML; Запись.ОткрытьФайл("C:\ee.xml"); Запись.ЗаписатьОбъявлениеXML(); Запись.ЗаписатьНачалоЭлемента("Доки"); Выборка = Документы.УстановкаЦенНоменклатуры.Выбрать(); Пока Выборка.Следующий() Цикл Уст = Выборка.ПолучитьОбъект(); Запись.ЗаписатьНачалоЭлемента("Установка"); Запись.ЗаписатьАтрибут("Код", Строка(Уст.Номер)); Для Каждого ТекущаяСтрока Из Уст.Товары Цикл Запись.ЗаписатьНачалоЭлемента("Номенклатура"); Запись.ЗаписатьАтрибут("Артикул",Строка(ТекущаяСтрока.Номенклатура.Артикул)); Запись.ЗаписатьАтрибут("Наименование",Строка(ТекущаяСтрока.Номенклатура.Наименование)); Запись.ЗаписатьКонецЭлемента(); КонецЦикла; Запись.ЗаписатьКонецЭлемента(); КонецЦикла; Запись.ЗаписатьКонецЭлемента(); Запись.Закрыть(); |
|||
2
yxo1987
17.05.12
✎
17:52
|
Буду завтра. Заранее спасибо.
|
|||
3
Serginio1
17.05.12
✎
18:38
|
Работай через объекты XDTO намного проще
|
|||
4
yxo1987
17.05.12
✎
20:52
|
(3) Лень думать. А эту штуку посмотрю. Позже.
|
|||
5
KarpovDeniska
17.05.12
✎
20:55
|
(0) а нумерация наверное в пределах года.....
|
|||
6
yxo1987
18.05.12
✎
08:03
|
Нумерация да. Документы были только в этом году.
|
|||
7
yxo1987
18.05.12
✎
10:20
|
Ну как? Никто?
|
|||
8
AaNnDdRrEeYy
18.05.12
✎
10:35
|
если это одноразовая операция, выгрузи в табличныйДокумент и грузи из него
нафиг с xml париться |
|||
9
yxo1987
18.05.12
✎
10:40
|
Там табличная часть есть
|
|||
10
yxo1987
18.05.12
✎
10:43
|
Спасибо! Я сам все сделал.
|
|||
11
AaNnDdRrEeYy
18.05.12
✎
10:50
|
(9) решается очень даже легко, прочитать таб док в тз, тз в запрос а там итоги - получается дерево.
табдок надо записать так реквизитШапки_1 реквизитШапки_2 строка 1 еквизитШапки_1 реквизитШапки_2 строка 2 |
|||
12
yxo1987
21.05.12
✎
11:32
|
(11) можно и так
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |