Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
03 дек 2024, 21:50

Загрузка выгрузка с xml в 1с

Автор edzie, 11 апр 2013, 16:55

0 Пользователей и 1 гость просматривают эту тему.

edzie

Здравствуйте, помогите доделать работу :( как сделать чтобы сохраненные в xml организации сотрудника загружались в справочник? и как
сделать так, чтобы одинаковые записи не появлялись?
Процедура ЗаписьXML(файл)
// Выгрузить в файл xml
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(файл, "UTF-8");

// Записать директиву
Запись.ЗаписатьОбъявлениеXML();

// Записать начало корневого элемента
Запись.ЗаписатьНачалоЭлемента("Запись_Данных");
Выборка = Справочники.Организации.Выбрать();
Запись.ЗаписатьНачалоЭлемента("Организации");
пока Выборка.Следующий() цикл

// Записать начало корневого элемента
Запись.ЗаписатьНачалоЭлемента("Организация");

// Записать атрибут корневого элемента
Запись.ЗаписатьАтрибут("Код",Строка(Выборка.Код));
Запись.ЗаписатьАтрибут("Наименование",Строка(Выборка.Наименование));
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();

Выборка = Справочники.Сотрудники.Выбрать();
Запись.ЗаписатьНачалоЭлемента("Сотрудники");
пока Выборка.Следующий() цикл
Запись.ЗаписатьНачалоЭлемента("Сотрудник");
Запись.ЗаписатьАтрибут("Код",Строка(Выборка.Код));
Запись.ЗаписатьАтрибут("Наименование",Строка(Выборка.Наименование));
Запись.ЗаписатьАтрибут("Паспорт",Строка(Выборка.паспорт));
ВыбОрг = Выборка.Организации.Количество();                   
Если ВыбОрг > 0 Тогда
          Запись.ЗаписатьНачалоЭлемента("Место_работы");
Для сч=0 по ВыбОрг-1 цикл
Запись.ЗаписатьНачалоЭлемента("Место_работы");
Запись.ЗаписатьАтрибут("Организация",Формат(Выборка.Организации.Получить(сч).Организация.Код, "ЧГ=0"));
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
КонецЕсли;

ВыбОрг = Выборка.Адрес.Количество(); 
Если ВыбОрг > 0 Тогда
Запись.ЗаписатьНачалоЭлемента("Контакты");
Для сч=0 по ВыбОрг-1 цикл
Запись.ЗаписатьНачалоЭлемента("Контакты");
Запись.ЗаписатьАтрибут("Адрес",Выборка.Адрес.Получить(сч).адрес);
Запись.ЗаписатьАтрибут("Телефон",Выборка.Адрес.Получить(сч).телефон);
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
КонецЕсли;
Запись.ЗаписатьКонецЭлемента();

КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
Сообщить("Выгрузка данных из 1С прошла успешно");
КонецПроцедуры


Процедура ЗагрузитьXML(файл)
СпрОрг = Справочники.Организации;
СпрСот = Справочники.Сотрудники;

// ВыборкаИзСотрудников = СпрСот.Выбрать();
// Пока ВыборкаИзСотрудников.Следующий() Цикл
// del = ВыборкаИзСотрудников.ПолучитьОбъект();
// del.Удалить();
// КонецЦикла;

// ВыборкаИзОрганизаций = СпрОрг.Выбрать();
// Пока ВыборкаИзОрганизаций.Следующий() Цикл
// del = ВыборкаИзОрганизаций.ПолучитьОбъект();
// del.Удалить();
// КонецЦикла;

загXML = Новый ЧтениеXML;
загXML.ОткрытьФайл(файл);
НовыйОбъектОрганизации = NULL;

// Прочитать фрагменты элемента
Пока загXML.Прочитать() Цикл

    // После чтения проверить тип уза
Если загXML.Имя = "Организация" И загXML.ТипУзла = ТипУзлаXML.НачалоЭлемента тогда
РезультатПоиска = СпрОрг.НайтиПоКоду(загXML.ПолучитьАтрибут("Организация Код"));
Если РезультатПоиска.Пустая() Тогда
НовыйОбъектОрганизации = СпрОрг.СоздатьЭлемент();
НовыйОбъектОрганизации.Код = загXML.ПолучитьАтрибут("Организация Код");
НовыйОбъектОрганизации.Наименование = загXML.ПолучитьАтрибут("Наименование");
НовыйОбъектОрганизации.Записать();
КонецЕсли;

НовыйОбъектСотрудника = NULL;
ИначеЕсли загXML.Имя = "Сотрудник" И загXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
РезультатПоиска = СпрСот.НайтиПоКоду(загXML.ПолучитьАтрибут("Сотрудник Код"));
Если РезультатПоиска.Пустая() Тогда
НовыйОбъектСотрудника = СпрСот.СоздатьЭлемент();
НовыйОбъектСотрудника.Код = загXML.ПолучитьАтрибут("Сотрудник Код");
НовыйОбъектСотрудника.Наименование = загXML.ПолучитьАтрибут("Наименование");
НовыйОбъектСотрудника.паспорт = загXML.ПолучитьАтрибут("Паспорт");
НовыйОбъектМестоРаботыСотрудника = НовыйОбъектСотрудника.Организации.Добавить();
НовыйОбъектМестоРаботыСотрудника.Организация = СпрОрг.НайтиПоКоду(загXML.ПолучитьАтрибут("Организация"));
НовыйОбъектКонтактыСотрудника = НовыйОбъектСотрудника.Адрес.Добавить();
НовыйОбъектКонтактыСотрудника.адрес = загXML.ПолучитьАтрибут("Адрес");
НовыйОбъектКонтактыСотрудника.телефон = загXML.ПолучитьАтрибут("Телефон");
НовыйОбъектСотрудника.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
загXML.Закрыть();
Сообщить("Загрузка данных в 1С прошла успешно");
КонецПроцедуры

Похожие темы (5)

Рейтинг@Mail.ru

Поиск