|
Конвертация данных 2.1. Перенос пользователей | ☑ | ||
---|---|---|---|---|
0
Georg_QQ
05.12.17
✎
14:39
|
Столкнулся со следующей проблемой.
есть 2 (К1, К2)конфигурации источника и 1 конфиг приемника (К3). При переносе пользователей. выполняется следующий код При выгрузке ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Источник.ИдентификаторПользователяИБ); Если ПользовательИБ <> Неопределено Тогда РежимыЗапуска = Новый Соответствие; РежимыЗапуска.Вставить(РежимЗапускаКлиентскогоПриложения.Авто, "Авто"); РежимыЗапуска.Вставить(РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение, "ОбычноеПриложение"); РежимыЗапуска.Вставить(РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение, "УправляемоеПриложение"); ИнформацияОПользователе = СоздатьУзел("ИнформацияОПользователе"); УстановитьАтрибут(ИнформацияОПользователе, "Имя", ПользовательИБ.Имя); УстановитьАтрибут(ИнформацияОПользователе, "ПолноеИмя", ПользовательИБ.ПолноеИмя); УстановитьАтрибут(ИнформацияОПользователе, "АутентификацияОС", ПользовательИБ.АутентификацияОС); УстановитьАтрибут(ИнформацияОПользователе, "АутентификацияOpenID", ПользовательИБ.АутентификацияOpenID); УстановитьАтрибут(ИнформацияОПользователе, "АутентификацияСтандартная", ПользовательИБ.АутентификацияСтандартная); УстановитьАтрибут(ИнформацияОПользователе, "ЗапрещеноИзменятьПароль", ПользовательИБ.ЗапрещеноИзменятьПароль); УстановитьАтрибут(ИнформацияОПользователе, "ПоказыватьВСпискеВыбора", ПользовательИБ.ПоказыватьВСпискеВыбора); УстановитьАтрибут(ИнформацияОПользователе, "ПользовательОС", ПользовательИБ.ПользовательОС); УстановитьАтрибут(ИнформацияОПользователе, "СохраняемоеЗначениеПароля", ПользовательИБ.СохраняемоеЗначениеПароля); УстановитьАтрибут(ИнформацияОПользователе, "РежимЗапуска", РежимыЗапуска[ПользовательИБ.РежимЗапуска]); Если ПользовательИБ.ОсновнойИнтерфейс <> Неопределено Тогда УстановитьАтрибут(ИнформацияОПользователе, "ОсновнойИнтерфейс", ПользовательИБ.ОсновнойИнтерфейс.Имя); Иначе УстановитьАтрибут(ИнформацияОПользователе, "ОсновнойИнтерфейс", ""); КонецЕсли; Если ПользовательИБ.Язык <> Неопределено Тогда УстановитьАтрибут(ИнформацияОПользователе, "Язык",ПользовательИБ.Язык.Имя); Иначе УстановитьАтрибут(ИнформацияОПользователе, "Язык", ""); КонецЕсли; ЧислоРолей = 0; Для Каждого Роль Из ПользовательИБ.Роли Цикл ЧислоРолей = ЧислоРолей + 1; УстановитьАтрибут(ИнформацияОПользователе, "Роль"+Формат(ЧислоРолей,"ЧГ="), Роль.Имя); КонецЦикла; УстановитьАтрибут(ИнформацияОПользователе, "ЧислоРолей", ЧислоРолей); ДобавитьПодчиненный(Приемник, ИнформацияОПользователе); Иначе Отказ = Истина; КонецЕсли; ///////////////////////////////////// ///////////////////////////////////// после загрузки: Если ОбъектНайден Тогда ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Объект.ИдентификаторПользователяИБ); СоздатьПользователяИБ = (ПользовательИБ = Неопределено); Иначе СоздатьПользователяИБ = Истина; КонецЕсли; Пока ФайлОбмена.Прочитать() Цикл ИмяУзла = ФайлОбмена.ЛокальноеИмя; ТипУзла = ФайлОбмена.ТипУзла; Если ИмяУзла = "ИнформацияОПользователе" И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда ИмяПользователяИБ = одАтрибут(ФайлОбмена, одТипСтрока, "Имя"); Если СоздатьПользователяИБ Тогда ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователяИБ); Если ПользовательИБ = Неопределено Тогда ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя(); КонецЕсли; КонецЕсли; ПользовательИБ.Имя = ИмяПользователяИБ; ПользовательИБ.ПолноеИмя = одАтрибут(ФайлОбмена, одТипСтрока, "ПолноеИмя"); ПользовательИБ.АутентификацияОС = одАтрибут(ФайлОбмена, одТипБулево, "АутентификацияОС"); ПользовательИБ.АутентификацияOpenID = одАтрибут(ФайлОбмена, одТипБулево, "АутентификацияOpenID"); ПользовательИБ.АутентификацияСтандартная= одАтрибут(ФайлОбмена, одТипБулево, "АутентификацияСтандартная"); ПользовательИБ.ЗапрещеноИзменятьПароль = одАтрибут(ФайлОбмена, одТипБулево, "ЗапрещеноИзменятьПароль"); ПользовательИБ.ПоказыватьВСпискеВыбора = одАтрибут(ФайлОбмена, одТипБулево, "ПоказыватьВСпискеВыбора"); ПользовательИБ.ПользовательОС = одАтрибут(ФайлОбмена, одТипСтрока, "ПользовательОС"); ПользовательИБ.СохраняемоеЗначениеПароля= одАтрибут(ФайлОбмена, одТипСтрока, "СохраняемоеЗначениеПароля"); ПользовательИБ.РежимЗапуска = РежимЗапускаКлиентскогоПриложения[одАтрибут(ФайлОбмена, одТипСтрока, "РежимЗапуска")]; ИмяОсновногоИнтерфейса = одАтрибут(ФайлОбмена, одТипСтрока, "ОсновнойИнтерфейс"); Если Не ПустаяСтрока(ИмяОсновногоИнтерфейса) Тогда Интерфейс = Метаданные.Интерфейсы.Найти(ИмяОсновногоИнтерфейса); Если Интерфейс <> Неопределено Тогда ПользовательИБ.ОсновнойИнтерфейс = Интерфейс; Иначе ПользовательИБ.ОсновнойИнтерфейс = Неопределено; КонецЕсли; Иначе ПользовательИБ.ОсновнойИнтерфейс = Неопределено; КонецЕсли; ИмяЯзыка = одАтрибут(ФайлОбмена, одТипСтрока, "Язык"); Если Не ПустаяСтрока(ИмяЯзыка) Тогда Язык = Метаданные.Языки.Найти(ИмяЯзыка); Если Язык <> Неопределено Тогда ПользовательИБ.Язык = Язык; Иначе ПользовательИБ.Язык = Неопределено; КонецЕсли; Иначе ПользовательИБ.Язык = Неопределено; КонецЕсли; ПользовательИБ.Роли.Очистить(); ЧислоРолей = одАтрибут(ФайлОбмена, одТипЧисло, "ЧислоРолей"); Если ЧислоРолей > 0 Тогда Для Итерация = 1 По ЧислоРолей Цикл СтрокаРоль = одАтрибут(ФайлОбмена, одТипСтрока, "Роль"+Формат(Итерация,"ЧГ=")); Роль = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль)); Если Роль = Неопределено Тогда Сообщить("Роль " +СтрокаРоль + " не найдена"); Иначе ПользовательИБ.Роли.Добавить(Роль); КонецЕсли; КонецЦикла; КонецЕсли; ИначеЕсли (ИмяУзла = "ИнформацияОПользователе") И (ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда Прервать; КонецЕсли; КонецЦикла; ПользовательИБ.Записать(); Объект.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор; Для конвертации К1 > К3 - все отрабатывает корректно а для К2 > К3 выдает ошибку Ошибка формата файла обмена ИмяУзла = ИнформацияОПользователе не могу понять в чем проблема. Код идентичен, почему во втором случае оно не может разобрать xml файл? |
|||
1
tomvlad
05.12.17
✎
14:46
|
||||
2
Georg_QQ
05.12.17
✎
14:47
|
Извините. Нашел в чем ошибка. код должен был быть "при загрузке" а не "после загрузки"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |