Имя: Пароль:
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 при вызове метода Прочитать().
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн