Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2017, 20:02
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Загрузка выгрузка с xml в 1с  (Прочитано 5156 раз)

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

Оффлайн edzie

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-03-31
  • Сайт: 
  • Профессия: Ученик 1С
Здравствуйте, помогите доделать работу :( как сделать чтобы сохраненные в 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С прошла успешно");
КонецПроцедуры


 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
157 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
48 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
BuhRust
33 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 231
  • Точка Скрытых: 0
  • Точка Пользователей: 6
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal