|
Загрузка выгрузка с xml в 1с | ☑ | ||
---|---|---|---|---|
0
edzie
11.04.13
✎
22:46
|
Здравствуйте, помогите доделать работу. Как сделать чтобы сохраненные в xml организации сотрудника загружались в справочник? и как
сделать так, чтобы одинаковые записи не появлялись? http://rghost.ru/45218562.view http://rghost.ru/45218617.view [code]Процедура ЗаписьXML(файл) // Выгрузить в файл xml Запись = Новый ЗаписьXML; Запись.ОткрытьФайл(файл, "UTF-8"); // Записать директиву Запись.ЗаписатьОбъявлениеXML(); // Записать начало корневого элемента Запись.ЗаписатьНачалоЭлемента("Запись_Данных"); Выборка = Справочники.Организации.Выбрать(); Запись.ЗаписатьНачалоЭлемента("Организации"); пока Выборка.Следующий() цикл // Записать начало корневого элемента Запись.ЗаписатьНачалоЭлемента("Организация"); // Записать атрибут корневого элемента Запись.ЗаписатьАтрибут("Код",Строка(Выборка.Код)); Запись.ЗаписатьАтрибут("Наименование",Строка(Выборка.Наименование)); Запись.ЗаписатьКонецЭлемента(); КонецЦикла; Запись.ЗаписатьКонецЭлемента(); Выборка = Справочники.Сотрудники.Выбрать(); Запись.ЗаписатьНачалоЭлемента("Сотрудники"); пока Выборка.Следующий() цикл Запись.ЗаписатьНачалоЭлемента("Сотрудник"); Запись.ЗаписатьАтрибут("Код",Строка(Выборка.Код)); Запись.ЗаписатьАтрибут("Наименование",Строка(Выборка.Наименование)); Запись.ЗаписатьАтрибут("Паспорт",Строка(Выборка.паспорт)); ВыбОрг = Выборка.Организации.Количество(); Если ВыбОрг > 0 Тогда Запись.ЗаписатьНачалоЭлемента("Место_работы"); Для сч=0 по ВыбОрг-1 цикл Запись.ЗаписатьНачалоЭлемента("Место_работы"); Запись.ЗаписатьАтрибут("Организация",Формат(Выборка.Организации.Получить(сч).Организация.Код, "ЧГ=0")); Запись.ЗаписатьКонецЭлемента(); КонецЦикла; Запись.ЗаписатьКонецЭлемента(); КонецЕсли; ВыбОрг = Выборка.Адрес.Количество(); Если ВыбОрг > 0 Тогда Запись.ЗаписатьНачалоЭлемента("Контакты"); Для сч=0 по ВыбОрг-1 цикл Запись.ЗаписатьНачалоЭлемента("Контакты"); Запись.ЗаписатьАтрибут("Адрес",Выборка.Адрес.Получить(сч).адрес); Запись.ЗаписатьАтрибут("Телефон",Выборка.Адрес.Получить(сч).телефон); Запись.ЗаписатьКонецЭлемента(); КонецЦикла; Запись.ЗаписатьКонецЭлемента(); КонецЕсли; Запись.ЗаписатьКонецЭлемента(); КонецЦикла; Запись.ЗаписатьКонецЭлемента(); Запись.ЗаписатьКонецЭлемента(); Сообщить("Выгрузка данных из 1С прошла успешно"); КонецПроцедуры[/code] [code]Процедура Загрузить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С прошла успешно"); КонецПроцедуры [/code] |
|||
1
edzie
11.04.13
✎
22:55
|
http://rghost.ru/45218617.view как сделать чтобы при чтении xml добавляло организацию?
http://rghost.ru/45218804.view - структура xml http://rghost.ru/45218853 - сама база |
|||
2
Aleksey
11.04.13
✎
23:02
|
сдается мне что ПолучитьАтрибут("Сотрудник Код") не будет работать
|
|||
3
masenshi
12.04.13
✎
07:11
|
(0)
РезультатПоиска = СпрОрг.НайтиПоКоду(загXML.ПолучитьАтрибут("Организация Код")); а так пробовал? РезультатПоиска = СпрОрг.НайтиПоКоду(загXML.ПолучитьАтрибут("Код")); |
|||
4
masenshi
12.04.13
✎
07:17
|
(3) не то цитировал
РезультатПоиска = СпрОрг.НайтиПоКоду(загXML.ПолучитьАтрибут("Сотрудник Код")); а так пробовал? РезультатПоиска = СпрОрг.НайтиПоКоду(загXML.ПолучитьАтрибут("Код")); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |