|
Как загрузить в таблицу config серверной базы роль выгруженную в xml | ☑ | ||
---|---|---|---|---|
0
Vade_kirza
07.03.19
✎
14:27
|
Злдравствуйте! Тут такая проблема, может кто-нибудь подскажет что можно сделать. Суть - есть база УТ 11.0.6.9 очень сильно перепиленная, в процессе общения выяснилась одна проблема - в базе отсутствуют пользователи у которых есть роль Администрирование. Видимо база была какая-то битая. Со слов клиента (проверено, так и есть). В момент записи новой группы доступа слетает роль Администрирование, и не просто слетает, а вообще пропадает в списке выбора ролей профилей групп доступа. К счастью нашлась какая-то копия базы годичной давности с этой же проблемой, но роль еще пока доступна. Было много чего перепробовано (чек, тестирование и т.д.) и в итоге взлетел следующий вариант: Из старой копии через "Выгрузить конфигурацию в файлы" выгружена роль Администрирование в файл .xml затем, сделали вторую базу из той же копии, воспроизвели проблему (создали группу доступа - роль пропала, конфигурацию не открыть), открыли ее через Tool1CD и в таблице config с помощью кнопки "Создать объект из файла" выбрали эту роль в xml. Затем в пользовательском режиме появилась возможность добавить эту роль в профиль групп доступа, затем открываем конфигуратор, открываем конфигурацию и копированием создаем новую роль Администрирование (потому что типовая роль снова пропадает если создать группу доступа). Все вроде бы хорошо, но вот беда - рабочая база развернута на sql и выгрузить в dt нет возможности а следовательно и открыть ее через tool1CD чтобы впихнуть эту роль. Собственно вопрос - что можно сделать в этой ситуации? может есть какой-то другой способ? или может кто подскажет как впихнуть в таблицу config эту роль из файла xml? Извините что много текста, постарался поподробнее описать проблему. Заранее спасибо за любые советы!
|
|||
1
Cyberhawk
07.03.19
✎
14:31
|
"выгрузить в dt нет возможности" // Причина?
|
|||
2
Vade_kirza
07.03.19
✎
14:39
|
(1) потому что в рабочей базе не осталось пользователей у которых есть роль Администрирование. При попытке выгрузить базу ругается "Недостаточно прав доступа"
|
|||
3
Cyberhawk
07.03.19
✎
14:46
|
Выкладывай рабочую базу в облако и логин-пароль кого-нибудь наиболее полноправного.
Народ поможет. |
|||
4
Nyoko
07.03.19
✎
14:50
|
(0) Любые манипуляции с xml файлами конфигурации официально не разрешены.
Есть некоторые проблемы, когда я пробовал это делать, у некоторых объектов присваивались новые GUID так что при обновлении эти объекты видит как чужие. Роль переносить так - ctrl+c , ctrl+v |
|||
5
Vade_kirza
07.03.19
✎
15:14
|
(3) К сожалению я не могу выкладывать базу клиента. Сейчас попробую создать чистую базу из этого цф и посмотрю, воспроизведется ли проблема в новой чистой базе
|
|||
6
aleks_default
07.03.19
✎
16:40
|
А вчем проблема перенести пользователя через XML?
Берешь ПользователяИнформационнойБазы в базе источнике, записываешь его в XML, а в базе приемнике получаешь из XML и записываешь? ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); ЗаписьXML.ЗаписатьОбъявлениеXML(); ИмяПользователя = СокрЛП(Объект.Наименование); //лПользователь = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя); Если ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя) <> Неопределено Тогда лПользователь = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя); Иначе лПользователь = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ТекущийОбъект.ИдентификаторПользователяИБ); КонецЕсли; Если лПользователь = Неопределено Тогда возврат; КонецЕсли; Хранилище = Новый ХранилищеЗначения(лПользователь); ЗаписьXML.ЗаписатьНачалоЭлемента("Элемент"); ЗаписатьXML(ЗаписьXML, Хранилище); ЗаписьXML.ЗаписатьКонецЭлемента(); Результат = ЗаписьXML.Закрыть(); |
|||
7
aleks_default
07.03.19
✎
16:41
|
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(дхПользовательИБ); Пока ЧтениеXML.Прочитать() Цикл // Хранилище = XMLЗначение(Тип("ХранилищеЗначения") ,ЧтениеXML.Значение).Получить(); Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Если ЧтениеXML.ЛокальноеИмя = "Элемент" Тогда ЧитаемХранилище = Истина; КонецЕсли; ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда Если ЧитаемХранилище Тогда ЧитаемХранилище = Не ЧитаемХранилище; Попытка Хранилище = XMLЗначение(Тип("ХранилищеЗначения") ,ЧтениеXML.Значение).Получить(); Исключение Base64Значение(ЧтениеXML.Значение).Записать("C:\temp\aaaaaaaaaaaaa"); КонецПопытки; НовыйПользователь = Хранилище; //.Объект.Получить(); Если ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ИдентификаторПользователяИБ) <> Неопределено Тогда // Удалим старого пользователя ИБ и запишем нового СтарыйПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ИдентификаторПользователяИБ); СтарыйПользовательИБ.Удалить(); КонецЕсли; Попытка НовыйПользователь.Записать(); Исключение КонецПопытки КонецЕсли КонецЕсли |
|||
8
Ник080808
07.03.19
✎
17:15
|
(6) прав на администрирование нет
|
|||
9
Vade_kirza
07.03.19
✎
17:20
|
(7) Пробовал, на строчке ПользователиИнформационнойБазы говорит что недостаточно прав
|
|||
10
Vade_kirza
07.03.19
✎
17:22
|
(4) В принципе, если Вы посмотрите на релиз, Вы поймете, что клиент обновляться и не собирается))а вот то, что конфа закрыта и не внести изменения уже хуже.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |