|   |   | 
| 
 | Как загрузить в таблицу 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) В принципе, если Вы посмотрите на релиз, Вы поймете, что клиент обновляться и не собирается))а вот то, что конфа закрыта и не внести изменения уже хуже.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |