Простой способ перенсти данные объектов из одной конфигурации в другую
Пример переноса объектов через xml между 1с
Бывают случаи когда нужно перенести один-два объекта из одной конфигурации в другую и если метаданные переносимых объектов совпадают в обоих конфигурациях, то можно использовать следующий способ.
Выгрузка элементов справочника в файл XML
Процедура ВыгрузитьОбъектыВXML(Кнопка)
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.ОткрытьФайл("c:\obmen.xml");
ЗаписьXML.ЗаписатьНачалоЭлемента("Spravohniki");
ЗаписьXML.ЗаписатьНачалоЭлемента("Валюты");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Валюты.Ссылка
|ИЗ
| Справочник.Валюты КАК Валюты";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ТекущийСправочник = Выборка.Ссылка.ПолучитьОбъект();
ЗаписатьXML(ЗаписьXML,ТекущийСправочник);
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();
КонецПроцедуры
По такому же принципу можно выгружать и документы. Причем можно выгрузить один объект, для этого нужно передать вторым параметром метода "ЗаписатьXML" необходимый объект.
В итоге при выполнении этой процедуры сформируется файл со следующим содержанием:
Текст XML файла
<Spravohniki>
<Валюты>
<CatalogObject.Валюты>
<Ref>bd72d8f9-55bc-11d9-848a-00112f43529a</Ref>
<DeletionMark>false</DeletionMark>
<Code>643</Code>
<Description>руб.</Description>
<НаименованиеПолное>Российский рубль</НаименованиеПолное>
<ПараметрыПрописиНаРусском>рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2</ПараметрыПрописиНаРусском>
</CatalogObject.Валюты>
<CatalogObject.Валюты>
<Ref>bd72d8fa-55bc-11d9-848a-00112f43529a</Ref>
<DeletionMark>false</DeletionMark>
<Code>840</Code>
<Description>USD</Description>
<НаименованиеПолное>Доллар США</НаименованиеПолное>
<ПараметрыПрописиНаРусском>доллар, доллара, долларов, м, цент, цента, центов, м, 2</ПараметрыПрописиНаРусском>
</CatalogObject.Валюты>
<CatalogObject.Валюты>
<Ref>cbcf4923-55bc-11d9-848a-00112f43529a</Ref>
<DeletionMark>false</DeletionMark>
<Code>978</Code>
<Description>EUR</Description>
<НаименованиеПолное>ЕВРО</НаименованиеПолное>
<ПараметрыПрописиНаРусском>евро, евро, евро, м, цент, цента, центов, м, 2</ПараметрыПрописиНаРусском>
</CatalogObject.Валюты>
<CatalogObject.Валюты>
<Ref>0e617614-55bd-11d9-848a-00112f43529a</Ref>
<DeletionMark>false</DeletionMark>
<Code>792</Code>
<Description>TRL</Description>
<НаименованиеПолное>Турецкая лира</НаименованиеПолное>
<ПараметрыПрописиНаРусском/>
</CatalogObject.Валюты>
<CatalogObject.Валюты>
<Ref>0e617615-55bd-11d9-848a-00112f43529a</Ref>
<DeletionMark>false</DeletionMark>
<Code>001</Code>
<Description>у.е.</Description>
<НаименованиеПолное>Условная единица</НаименованиеПолное>
<ПараметрыПрописиНаРусском>условная единица, условные единицы, условных единиц, ж, цент, цента, центов, м, 2</ПараметрыПрописиНаРусском>
</CatalogObject.Валюты>
</Валюты>
</Spravohniki>
Корень ХМЛ-файла "Spravohniki" и ветка "Валюты" сделаны для пояснения содержимого XML файла, можно обойтись без них. Но в файле обязательно должен быть корень дерева, т.е. перед записью данных нужно обязательно написать "ЗаписатьНачалоЭлемента".
Загрузка объектов из XML
Процедура ЗагрузитьОбъектыИзXML(Кнопка)
ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.ОткрытьФайл("c:\obmen.xml");
Пока ЧтениеXML.Прочитать() Цикл
Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
ТекущийОбъект = ПрочитатьXML(ЧтениеXML);
ТекущийОбъект.Записать();
КонецЦикла;
КонецЦикла;
ЧтениеXML.Закрыть();
КонецПроцедуры
Как Вы видите программа сама определяет тип объекта и все его свойства методом "ПрочитатьXML". Здесь только стоит упомянуть, что при загрузке программа ищет наличие этого объекта по Уникальному идентификатору, поэтому если у Вас уже есть такой объект, то программа перезапишет его заменив данными из файла. И наоборот при попытке загрузить объект с другим идентификатором, но такими же данными программа сообщить, что объект с таким кодом(номером) уже существует.