|
Еще раз про конвертацию | ☑ | ||
---|---|---|---|---|
0
panzer
08.06.12
✎
06:40
|
В справке обработчика ПриВыгрузке для ПКО есть пример извлечения информации
ИнформацияОПользователе = СоздатьУзел("ИнформацияОПользователе"); УстановитьАтрибут(ИнформацияОПользователе, "АутентификацияОС", Источник.АутентификацияОС); УстановитьАтрибут(ИнформацияОПользователе, "АутентификацияСтандартная", Источник.АутентификацияСтандартная); УстановитьАтрибут(ИнформацияОПользователе, "ПоказыватьВСпискеВыбора", Источник.ПоказыватьВСпискеВыбора); УстановитьАтрибут(ИнформацияОПользователе, "ПользовательОС", Источник.ПользовательОС); УстановитьАтрибут(ИнформацияОПользователе, "ПолноеИмя", Источник.ПолноеИмя); ЧислоРолей = 1; Для Каждого Роль Из Источник.Роли Цикл УстановитьАтрибут(ИнформацияОПользователе, "Роль"+ЧислоРолей, Роль.Имя); Сообщить(Роль.Имя); ЧислоРолей = ЧислоРолей + 1; КонецЦикла; ДобавитьПодчиненный(Приемник, ИнформацияОПользователе); ПриЗагрузке ее вытаскивают Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени(СокрЛП(Объект.Код)); Если Пользователь = Неопределено Тогда Пользователь = ПользователиИнформационнойБазы.СоздатьПользователя(); Пользователь.Имя = СокрЛП(Объект.Код); Пользователь.ПолноеИмя = СокрЛП(Объект.Код); КонецЕсли; Пока ФайлОбмена.Прочитать() Цикл ИмяУзла = ФайлОбмена.ЛокальноеИмя; ТипУзла = ФайлОбмена.ТипУзла; Если ИмяУзла = "ИнформацияОПользователе" И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда Пользователь.АутентификацияОС = одАтрибут(ФайлОбмена, одТипБулево, "АутентификацияОС"); Пользователь.АутентификацияСтандартная = одАтрибут(ФайлОбмена, одТипБулево, "АутентификацияСтандартная"); Пользователь.ПоказыватьВСпискеВыбора = одАтрибут(ФайлОбмена, одТипБулево, "ПоказыватьВСпискеВыбора"); Пользователь.ПользовательОС = одАтрибут(ФайлОбмена, одТипСтрока, "ПользовательОС"); Пользователь.ПолноеИмя = одАтрибут(ФайлОбмена, одТипСтрока, "ПолноеИмя"); СтрокаРоль1 = одАтрибут(ФайлОбмена, одТипСтрока, "Роль1"); СтрокаРоль2 = одАтрибут(ФайлОбмена, одТипСтрока, "Роль2"); СтрокаРоль3 = одАтрибут(ФайлОбмена, одТипСтрока, "Роль3"); ИначеЕсли (ИмяУзла = "ИнформацияОПользователе") И (ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда Прервать; КонецЕсли; КонецЦикла; Пользователь.ОсновнойИнтерфейс = Метаданные.Интерфейсы.Полный; Пользователь.Язык = Метаданные.Языки.Русский; Пользователь.Роли.Очистить(); Роль1 = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль1)); Роль2 = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль1)); Роль3 = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль1)); Если НЕ Роль1 = Неопределено Тогда Пользователь.Роли.Добавить(Роль1); КонецЕсли; Если НЕ Роль2 = Неопределено Тогда Пользователь.Роли.Добавить(Роль2); КонецЕсли; Если НЕ Роль3 = Неопределено Тогда Пользователь.Роли.Добавить(Роль3); КонецЕсли; Пользователь.Записать(); Делаю по аналогии,но получаю ошибку формата файла обмена. С чем это может быть связанно? |
|||
1
andrewks
08.06.12
✎
08:03
|
ну показывай, как именно делаешь. желательно с примером файла выгрузки
|
|||
2
panzer
08.06.12
✎
09:05
|
Разобрался что делал не так. Теперь другая проблема. При выгрузке пишу
КонтактнаяИнформация = СоздатьУзел("КонтактнаяИнформация"); УстановитьАтрибут(КонтактнаяИнформация,"ЮридическийАдрес", Источник.ЮридическийАдрес); УстановитьАтрибут(КонтактнаяИнформация,"ПочтовыйАдрес",Источник.ПочтовыйАдрес); УстановитьАтрибут(КонтактнаяИнформация, "Телефоны", Источник.Телефоны); ДобавитьПодчиненный(Приемник,КонтактнаяИнформация); при загрузке Пока ФайлОбмена.Прочитать() Цикл ИмяУзла = ФайлОбмена.ЛокальноеИмя; ТипУзла = ФайлОбмена.ТипУзла; Если ИмяУзла = "КонтактнаяИнформация" И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда ЮридическийАдрес = одАтрибут(ФайлОбмена, одТипСтрока, "ЮридическийАдрес"); ПочтовыйАдрес = одАтрибут(ФайлОбмена, одТипСтрока, "ПочтовыйАдрес"); Телефоны = одАтрибут(ФайлОбмена, одТипСтрока, "Телефоны"); ИначеЕсли (ИмяУзла = "КонтактнаяИнформация") И (ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда Прервать; КонецЕсли; КонецЦикла; Если НЕ Объект.ЭтоГруппа Тогда Объект.СчетУчетаАвансовПокупателя = ПланыСчетов.Управленческий.РасчетыПоАвансамПолученным; Объект.СчетУчетаРасчетовСПокупателем = ПланыСчетов.Управленческий.РасчетыСПокупателями; Объект.СчетУчетаРасчетовСПоставщиком = ПланыСчетов.Управленческий.РасчетыСПоставщиками; Объект.СчетУчетаАвансовПоставщику = ПланыСчетов.Управленческий.РасчетыПоАвансамВыданным; НоваяСтрока = Объект.КонтактнаяИнформация.Добавить(); НоваяСтрока.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента; НоваяСтрока.Представление = ЮридическийАдрес; НоваяСтрока = Объект.КонтактнаяИнформация.Добавить(); НоваяСтрока.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента; НоваяСтрока.Представление = ПочтовыйАдрес; НоваяСтрока = Объект.КонтактнаяИнформация.Добавить(); НоваяСтрока.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон; НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента; НоваяСтрока.Представление = Телефоны; КонецЕсли; И тут короче, если устанавливаю один Атрибут например ЮридическийАдрес то все работает,если два то при загрузке фатальная ошибка разбора XML при вызове метода Прочитать(). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |