Back to top

Простой способ перенсти данные объектов из одной конфигурации в другую

Опубликовано e-1c@mail.ru - ср, 03/29/2017 - 16:24

Пример переноса объектов через xml между 1с

Бывают случаи когда нужно перенести один-два объекта из одной конфигурации в другую и если метаданные переносимых объектов совпадают в обоих конфигурациях, то можно использовать следующий способ.

Выгрузка элементов справочника в файл XML

Процедура ВыгрузитьОбъектыВXML(Кнопка)
 
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.ОткрытьФайл("c:\obmen.xml");
ЗаписьXML.ЗаписатьНачалоЭлемента("Spravohniki");
ЗаписьXML.ЗаписатьНачалоЭлемента("Валюты");
 
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|	Валюты.Ссылка
|ИЗ
|	Справочник.Валюты КАК Валюты";
 
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
	ТекущийСправочник = Выборка.Ссылка.ПолучитьОбъект();
	ЗаписатьXML(ЗаписьXML,ТекущийСправочник);
КонецЦикла;
 
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьКонецЭлемента();
 
ЗаписьXML.Закрыть();   
 
КонецПроцедуры

По такому же принципу можно выгружать и документы. Причем можно выгрузить один объект, для этого нужно передать вторым параметром метода "ЗаписатьXML" необходимый объект.

В итоге при выполнении этой процедуры сформируется файл со следующим содержанием:

Текст XML файла


 <Валюты>
 
 bd72d8f9-55bc-11d9-848a-00112f43529a
 false
 643
 руб.
 <НаименованиеПолное>Российский рубль
 <ПараметрыПрописиНаРусском>рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2
 
 
 bd72d8fa-55bc-11d9-848a-00112f43529a
 false
 840
 USD
 <НаименованиеПолное>Доллар США
 <ПараметрыПрописиНаРусском>доллар, доллара, долларов, м, цент, цента, центов, м, 2
 
 
 cbcf4923-55bc-11d9-848a-00112f43529a
 false
 978
 EUR
 <НаименованиеПолное>ЕВРО
 <ПараметрыПрописиНаРусском>евро, евро, евро, м, цент, цента, центов, м, 2
 
 
 0e617614-55bd-11d9-848a-00112f43529a
 false
 792
 TRL
 <НаименованиеПолное>Турецкая лира
 <ПараметрыПрописиНаРусском/>
 
 
 0e617615-55bd-11d9-848a-00112f43529a
 false
 001
 у.е.
 <НаименованиеПолное>Условная единица
 <ПараметрыПрописиНаРусском>условная единица, условные единицы, условных единиц, ж, цент, цента, центов, м, 2
 
 

Корень ХМЛ-файла "Spravohniki" и ветка "Валюты" сделаны для пояснения содержимого XML файла, можно обойтись без них. Но в файле обязательно должен быть корень дерева, т.е. перед записью данных нужно обязательно написать "ЗаписатьНачалоЭлемента".

Загрузка объектов из XML

Процедура ЗагрузитьОбъектыИзXML(Кнопка)
 
ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.ОткрытьФайл("c:\obmen.xml");
 
Пока ЧтениеXML.Прочитать() Цикл
    Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл 
	ТекущийОбъект = ПрочитатьXML(ЧтениеXML);
	ТекущийОбъект.Записать();
  КонецЦикла;	
КонецЦикла;	
ЧтениеXML.Закрыть();  
 
КонецПроцедуры

Как Вы видите программа сама определяет тип объекта и все его свойства методом "ПрочитатьXML". Здесь только стоит упомянуть, что при загрузке программа ищет наличие этого объекта по Уникальному идентификатору, поэтому если у Вас уже есть такой объект, то программа перезапишет его заменив данными из файла. И наоборот при попытке загрузить объект с другим идентификатором, но такими же данными программа сообщить, что объект с таким кодом(номером) уже существует.

Теги