Имя: Пароль:
1C
1С v8
Права в БСП
0 ДенисЧ
 
08.12.20
13:09
Есть базы БП3 (с доработками, в т.ч. и ролями)
Периодически слетают права - в предприятии галка есть, в конфигураторе нет. И РольДоступна() говорит, что нет.
Если поставить в конфигураторе - работает. До следующего раза.
Знаю, что в БСП надо раздавать права через справочник. Так и стараемся делать.
Хочется узнать, в чём причина? Что нужно сделать, чтобы устранить источник проблемы?
1 RomanYS
 
08.12.20
13:12
(0)
1. Права раздавать из предприятия
2. Если есть "полные" права, то другие роли будут отключены
3. Если 1. и 2. мимо, нужно смотреть конкретику
2 ДенисЧ
 
08.12.20
13:14
(1) Полных прав, разумеется, у тех, у кого слетают, нет.
Какую конкретику именно смотреть? На что внимание обращать?
3 Lexandr
 
08.12.20
15:03
Не знаю, как в этом конкретном случае, но установка прав в режиме клиента устанавливает роли, которые прописаны в настройках набора профилей доступа. И если в профиле роль отключена, то и при записи прав эта роль отключается, независимо, что там до этого устанавливали в конфигураторе.
4 ДенисЧ
 
08.12.20
15:06
(3) В том и фигня, что в профиле роль есть...
5 Kassern
 
08.12.20
15:08
(0) откажись от ручной установки прав через конфигуратор и будет тебе счастье. Все делай через группы доступа в предприятии. Если уж так хочешь разобраться в причине, глянь в отладке, что происходит при записи "следующего раза".
6 ildary
 
08.12.20
22:08
Советую для надежности выполнить обработку ОбновлениеВспомогательныхДанных (из состава БСП, но только той же версии) со всеми галками насчёт прав.
7 piter3
 
08.12.20
22:12
А какой релиз, обоих штук?
8 Dmitrii
 
гуру
08.12.20
22:37
(0) Если правишь роли у какого-нибудь профиля, который создали сами в предприятии, то по идее ничего слетать не должно, кроме случаев, когда роль удаляется из конфигурации.
Если вы пытаетесь добавлять или удалять роли из поставляемых профилей (Бухгалтер, Главный бухгалтер и т.п.), то при каждом обновлении вспомогательных данных набор ролей в поставляемых профилях обновляется (перезаполняется заново). Если хотите, чтобы добавленные вами роли в поставляемом профиле сохранились, то придется в общем модуле УправлениеДоступомПереопределяемый доработать процедурку ПриЗаполненииПоставляемыхПрофилейГруппДоступа  по типу такого (примерно).



Процедура ПриЗаполненииПоставляемыхПрофилейГруппДоступа(ОписанияПрофилей, ПараметрыОбновления) Экспорт
    
    УправлениеДоступомБП.ЗаполнитьПоставляемыеПрофилиПользователей(ОписанияПрофилей);
    
    // РаспознаваниеДокументов
    РаспознаваниеДокументов.ПриЗаполненииПоставляемыхПрофилейГруппДоступа(ОписанияПрофилей, ПараметрыОбновления);
    // Конец РаспознаваниеДокументов
    
    //_НТ добавлео начало
    // Вызываем обработчик ПриЗаполненииПоставляемыхПрофилейГруппДоступа из добавленного нетипового модуля
    // В этой поцедуре будет выполнено дозаполнение типовых Описаний профилей нетиповыми ролями,
    // а так же добавление нетиповых описаний профилей
    УправлениеДоступомБТ.ПриЗаполненииПоставляемыхПрофилейГруппДоступа(ОписанияПрофилей, ПараметрыОбновления);
    //_НТ добавлено конец
    
КонецПроцедуры



Ну и в своём собственном общем модуле (у нас он назван УправлениеДоступомБТ, сервер, клиент, внешнее соединение) слепить пару процедур примерно следующего содержания.



Процедура ПриЗаполненииПоставляемыхПрофилейГруппДоступа(ОписанияПрофилей, ПараметрыОбновления) Экспорт
    
    // Дополняем типовые описания профилей нетиповыми ролями
    
    //  ОписанияПрофилей    - Массив - массив структур
    //  Структуры - со свойствами:
    //   * Наименование  - Строка - наименование поставляемого профиля.
    //   * Роли          - Массив - имена ролей (строки) поставляемого профиля.
    
    Для каждого ОписаниеПрофиля Из ОписанияПрофилей Цикл
        
        // Описание для заполнения профиля "Главный бухгалтер".
        Если ОписаниеПрофиля.Наименование = "Главный бухгалтер" Тогда
            ОписаниеПрофиля.Роли.Добавить("ДобавлениеИзменениеДанныхБухгалтерииБТ");
            ОписаниеПрофиля.Роли.Добавить("ДобавлениеИзменениеНастроекБухгалтерииБТ");
            ОписаниеПрофиля.Роли.Добавить("ИспользованиеВсехСчетовВБухгалтерскихОтчетах");
            ОписаниеПрофиля.Роли.Добавить("ПравоРучнойКорректировкиДвиженийДокументов");
            ОписаниеПрофиля.Роли.Добавить("ДобавлениеИзменениеПапокИФайлов");
            ОписаниеПрофиля.Роли.Добавить("ЧтениеИнформацииОВерсияхОбъектов");
            ОписаниеПрофиля.Роли.Добавить("ЧтениеВерсийОбъектов");
            
        // Описание для заполнения профиля "Бухгалтер".
        ИначеЕсли ОписаниеПрофиля.Наименование = "Бухгалтер" Тогда
            ОписаниеПрофиля.Роли.Добавить("ДобавлениеИзменениеДанныхБухгалтерииБТ");
            ОписаниеПрофиля.Роли.Добавить("ЧтениеДанныхСотрудников");
            ОписаниеПрофиля.Роли.Добавить("ЧтениеДанныхФизическихЛицЗарплатаКадры");
            ОписаниеПрофиля.Роли.Добавить("ЧтениеИнформацииОВерсияхОбъектов");
            ОписаниеПрофиля.Роли.Добавить("ЧтениеВерсийОбъектов");
            ОписаниеПрофиля.Роли.Добавить("ЗакрытиеПериода");
            УдалитьРольИзОписанияПрофиля(ОписаниеПрофиля, "ДобавлениеИзменениеДанныхСотрудников");
            УдалитьРольИзОписанияПрофиля(ОписаниеПрофиля, "ДобавлениеИзменениеДанныхФизическихЛицЗарплатаКадры");
            
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры

// Процедура УдалитьРольИзОписанияПрофиля(ОписаниеПрофиля, Роль)
//
// Параметры:
//  ОписаниеПрофиля  - Структура - описание профиля группы доступа.
//        Состав структуры можно посмотреть в УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа()
//  Роль  - Строка - Имя роли (как оно задано в конфигурации), которую необходимо удалить из массива ролей в описании профиля
//
Процедура УдалитьРольИзОписанияПрофиля(ОписаниеПрофиля, Роль)

    ИндексРоли = ОписаниеПрофиля.Роли.Найти(Роль);
    Если ИндексРоли = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    ОписаниеПрофиля.Роли.Удалить(ИндексРоли);

КонецПроцедуры

9 ДНН
 
09.12.20
00:11
(0) перезапиши профиль и пользователя
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.