Здравствуйте, помогите доделать работу. Как сделать чтобы сохраненные в xml организации сотрудника загружались в справочник? и как сделать так, чтобы одинаковые записи не появлялись? http://rghost.ru/45218617.view как сделать чтобы при чтении xml добавляло организацию? http://rghost.ru/45218804.view - структура xml http://rghost.ru/45218853 - сама база Код | Процедура Запись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С прошла успешно"); КонецПроцедуры
|
|