Имя: Пароль:
1C
1С v8
Еще раз про конвертацию
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 при вызове метода Прочитать().