Имя: Пароль:
1C
1С v8
Перенос Xml
0 pavvlyk
 
23.04.12
08:23
Хочу из одной базы выгрузить Контрагентов с ИНН , в другой сравнить если есть такие же контрагенты то подставлять им ИНН из файла. Только вот не могу сообразить как это сделать.
Выгрузить вроде выгрузил, а вот как дальше делать...

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
ЗаписьXML=Новый ЗаписьXML();
ЗаписьXML.ОткрытьФайл("d:\doc.xml");
   Запрос = Новый Запрос();
   Запрос.Текст =
          "ВЫБРАТЬ
          |    Контрагенты.Ссылка КАК Контрагент
          |ИЗ
          |    Справочник.Контрагенты КАК Контрагенты";    
   
   Выборка = Запрос.Выполнить().Выбрать();

   Пока Выборка.Следующий () Цикл
       ЗаписьXML.ЗаписатьНачалоЭлемента("ГруппаОбъектов");
       ЗаписьXML.ЗаписатьНачалоЭлемента("Контрагент");
       ЗаписатьXML(ЗаписьXML, Выборка.Контрагент.ПолучитьОбъект());
       ЗаписьXML.ЗаписатьКонецЭлемента();
       
        ЗаписьXML.ЗаписатьНачалоЭлемента("ИНН");
ЗаписатьXML(ЗаписьXML, Выборка.Контрагент.ИНН);
ЗаписьXML.ЗаписатьКонецЭлемента();

   КонецЦикла;
КонецПроцедуры
1 pavvlyk
 
23.04.12
08:23
Процедура Кнопка1Нажатие(Элемент)
   
   ЧтениеXML = Новый ЧтениеXML;
   ЧтениеXML.ОткрытьФайл("D:\doc.xml");
   
   ЧтениеXML.Прочитать();
   Сообщить(ЧтениеXML.Имя);  


   Пока ЧтениеXML.Прочитать() Цикл
   Если ВозможностьЧтенияXML(ЧтениеXML) Тогда
       Сообщить(ПрочитатьXML(ЧтениеXML));
   КонецЕсли;
   
   ЧтениеXML.Закрыть();
   КонецЦикла;
КонецПроцедуры
2 pavvlyk
 
23.04.12
08:24
Только вот ВозможностьЧтенияXML(ЧтениеXML) возвращает мне ЛОЖЬ почему то....
3 Trance_1C
 
23.04.12
08:26
Есть очень удобное решение Конвертация данных, как раз для такого случая.
4 butterbean
 
23.04.12
08:29
конфигурации одинаковые??
5 pavvlyk
 
23.04.12
08:34
Да конфигурации одинаковые. Да я знаю про КД , это не "рабочая" задача, я просто сам хочу разобраться как написать такой код, просто для себя. Учусь программированию так вот =)
6 Wobland
 
23.04.12
08:35
(5) вот так учился я:

Процедура ОсновныеДействияФормыВыгрузить(Кнопка)
   ЗаписьXML=Новый ЗаписьXML;
   ЗаписьXML.ОткрытьФайл(ИмяФайла);
   ЗаписьXML.ЗаписатьНачалоЭлемента("body");
   
   Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |    ЧекККМ.Ссылка
   |ИЗ
   |    Документ.ЧекККМ КАК ЧекККМ
   |ГДЕ
   |    ЧекККМ.Дата МЕЖДУ &ДатаС И &ДатаПо
   |    И ЧекККМ.КассаККМ = &КассаККМ
   |
   |УПОРЯДОЧИТЬ ПО
   |    ЧекККМ.Дата";
   Запрос.УстановитьПараметр("ДатаС", ДатаС);
   Запрос.УстановитьПараметр("ДатаПо", ДатаПо);
   Запрос.УстановитьПараметр("КассаККМ", Касса);
   Выборка=Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       ЗаписатьXML(ЗаписьXML, Выборка.Ссылка.ПолучитьОбъект());
   КонецЦикла;
   ЗаписьXML.ЗаписатьКонецЭлемента();
   ЗаписьXML.Закрыть();
КонецПроцедуры

Процедура ОсновныеДействияФормыЗагрузить(Кнопка)
   Чтение=Новый ЧтениеXML;
   Чтение.ОткрытьФайл(Имяфайла);
   Чтение.Прочитать();
   Чтение.Прочитать();
   Пока Истина Цикл
       Попытка
           мОбъект=ПрочитатьXML(Чтение);
       Исключение
           Возврат;
       КонецПопытки;
       мОбъект.ОбменДанными.Загрузка=Истина;
       мОбъект.Записать();
   КонецЦикла;
КонецПроцедуры
7 pavvlyk
 
23.04.12
08:38
Он почему то мне возвращает ВозможностьЧтенияXML(ЧтениеXML) Ложь, ну да ладно с этим разберусь.
А как потом обратиться к прочитанным данным чтобы сравнить если у меня есть такой же контрагент например, и подставлять ему ИНН из файла?
Закон Брукера: Даже маленькая практика стоит большой теории.