helpf.pro
Регистрация

Возможно ли назначить себе Полные Права в 1С 8.1?

Monfiz
31.08.2010 16:51Прочитано: 6113
1. Если пользователю в конфигураторе поставить Полные Права, то при запуске выдается вот это: "Пользователь системы не определен, или превышен уровень доступа".
В итоге пользовательский режим не открывается.


2. Покопался в модулях и нашел вот эту процедуру:
Код 1C v 8.х
 Процедура ПроверитьВозможностьРаботыПользователя(Отказ) Экспорт
Если НЕ РольДоступна("ПолныеПрава") И НЕ РольДоступна("Бухгалтер")И НЕ РольДоступна("РежимЗащитыОтСбоев")
И НЕ РольДоступна("Отделение") И НЕ РольДоступна("Подразделение")И НЕ РольДоступна("УчетМатериалов")
И НЕ РольДоступна("Аудит") И НЕ РольДоступна("Производство") Тогда
Отказ = Истина;
#Если Клиент Тогда
Предупреждение("У текущего пользователя нет доступных ролей, для запуска информационной базы.", 10, "Недостаточно прав доступа");
#КонецЕсли
КонецЕсли;

// Если это подчиненныей узел плана обмен по организации то редактирование элемента запрещено
ГлавныйУзел = ПланыОбмена.ГлавныйУзел();

Если ГлавныйУзел <> Неопределено и РольДоступна("ПолныеПрава") Тогда

Отказ = Истина;
#Если Клиент Тогда
Предупреждение("Пользователь системы не определен, или превышен уровень доступа,"+Символы.ПС
+" ""Полные права"" использует только Администратор ЦА, используйте набор прав ""Филиал Администратор"".", 10, "Недостаточно прав доступа");
#КонецЕсли

КонецЕсли;
КонецПроцедуры


3. Вызывается она из

Код 1C v 8.х
 Процедура ПередНачаломРаботыСистемы(Отказ)
УправлениеПользователями.ПроверитьВозможностьРаботыПользователя(Отказ);
КонецПроцедуры


4. Так же Назначить ПолныеПрава не получается и через это:
Код 1C v 8.х
 Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь;
Пользователь.НазначитьРоль(Метаданные.Роли.ПолныеПрава);
Пользователь.Записать();


В результате этой команды, в конфигураторе появляется лишь галочка, что у данного пользователя есть полные права. И они должны появиться после запуска 1С в режиме пользователя, но всё опять упирается в сообщение из пункта #1.

В итоге я вижу две альтернативы как с этим бороться.

1) Или на время снять главный узел, а потом его вернуть. Но проблема в том, что в конфигураторе в Общие => ПланыОбмена почему-то нет того плана обмена, который на самом деле является главным. И в том что не ясно чем грозит такое вот переключение узлов.

2)Каким-то образом изменить параметры сеанса (или что-то другое), чтобы в результате команды
ПользователиИнформационнойБазы.ТекущийПользователь.НазначитьРоль(Метаданные.Роли.ПолныеПрава);
не было нужды снова заходить в 1С пользовательский режим и натыкаться на злосчастное сообщение о превышении уровня доступа.

Кто может помочь отпишитесь. пожалуйста. Буду очень признателен.
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
31.08.2010 17:12Ответ № 1
2 сразу отпадает, так как у пользователей нельзя менять права на лету, обязательно нужно перезаходить в 1с-ку!

2. Отключение от главного узла даст тебе полные права как ты и хочешь, но это нежелательно, так как с правами ты сможешь менять все- что захочешь! наменяешь что-нибудь и это что-нибудь не будет соответсвовать данным в Главной базе *09

Про управление - отключение / востановление Главного узла смотри здесь!
Monfiz
31.08.2010 18:28Ответ № 2
Что ж... если конечно других способов нет, тогда у меня осается еще пара вопросов.
1) Настоящие названия писать не буду, поэтому наименования будут условными.
Предположим, что результатом этой команды будет текст "Рога и Копыта"
Сообщить(ПланыОбмена.ГлавныйУзел());

2) Следовательно что бы вернуть главный узел можно написать команду ручками
ПланыОбмена.УстановитьГлавныйУзел(ПланыОбмена.РогаИКопыта);

3) НО! Вся загвоздка в том, что в древе (дереве) конфигуратора в Общие => ПланыОбмена почему-то нет такого плана обмена. Вопрос - почему? Ведь если произойдет сбой компа во время работы обработки (отключения/востановления главного узла), то это будет катастрофой.
E_Migachev
31.08.2010 20:47Ответ № 3
(2) Monfiz, используй код:
Код 1C v 8.х
 Процедура ОтключитьГлавныйУзелНажатие(Элемент)
Если ПланыОбмена.ГлавныйУзел()<> Неопределено Тогда
СохранитьЗначение("ВосстановитьЗначениеГлавногоУзлаВПодчиненном", ПланыОбмена.ГлавныйУзел());
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
КонецЕсли;
Предупреждение("Главный узел отключен");
КонецПроцедуры

Процедура ВосстановитьГлавныйУзелНажатие(Элемент)
Если ПланыОбмена.ГлавныйУзел()= Неопределено Тогда
ПланыОбмена.УстановитьГлавныйУзел(ВосстановитьЗначение("ВосстановитьЗначениеГлавногоУзлаВПодчиненном"));
КонецЕсли;
Предупреждение("Главный узел восстановлен");
КонецПроцедуры


При отключении он сохранит старый узел, а при включении восстановит!

Согласен! что если комп умрет в момент отключения - это будет катастрофа для тебя! - можешь сохранить значение главного узла в файл
Код 1C v 8.х
 ЗначениеВФайл("C:\temp\uzel.ini", ПланыОбмена.ГлавныйУзел());   
а потом наделай копий файла и восстанови при необходимости
*13
Monfiz
04.09.2010 16:11Ответ № 4
Вопрос закрыт!
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.