пятница, 30 января 2015 г.

1С конфигурации Подрядчик строительства 4 ред. 2.0. Создаем роль с правами только на чтение

Создаем роль с возможностью только чтения данных без возможности изменения чего-либо

  • пригодится для всех пользователей 1С, которые не являются операторами (бухгалтерами) - им нужны в основном отчеты
  • для аудиторов
Для начала поставим на всех объектах конфигурации право Просмотр (Чтение добавится автоматически) + Ввод по строке.
Ясно, что возникнут проблемы, т.к. на некоторые объекты нужно право записи.


При запуске от тестового пользователя с данной ролью появляется сообщение:

"У текущего пользователя нет доступных ролей для запуска информационной базы".


Основная проблема типовых конфигураций - в конфе предусмотрено как минимум две роли:

  1. с минимально необходимыми правами для работе в конфе - но для работы именно оператора (с правами создания документов и наполнения справочников)
  2. полные права
И поэтому любой пользователь типовой конфы должен по-любому иметь эту роль с минимальными правами оператора. Нам же нужны минимальные права для аудитора (без возможности внесения каких-либо изменений).


В общем модуле УправлениеПользователями отраслевой конфигурации "Подрядчик строительства 4 ред. 2.0" можно найти такую функцию


// Процедура проверяет возможность запуска ИБ с определенными для текущего
// пользователя доступными ролями
//
Процедура ПроверитьВозможностьРаботыПользователя(Отказ) Экспорт

 Если НЕ РольДоступна("ПолныеПрава") И НЕ РольДоступна("Бухгалтер") Тогда
  Отказ = Истина;
  #Если Клиент Тогда
  Предупреждение("У текущего пользователя нет доступных ролей, для запуска информационной базы.", 10, "Недостаточно прав доступа");
  #КонецЕсли
 КонецЕсли; 
 
КонецПроцедуры
 
Изменим логику с учетом новой роли:


Если НЕ РольДоступна("ПолныеПрава") И НЕ РольДоступна("Бухгалтер") И НЕ РольДоступна("ТолькоЧтение")

После этого удалось запустить, но окно без интерфейса и сразу нарушение прав доступа


{ОбщийМодуль.ИмпНепоставляемый.Модуль(1732)}: Ошибка при вызове метода контекста (Установить)
по причине:
Нарушение прав доступа!
 
Это тоже очень круто, т.к. модуль поставляется в закрытом виде и не ясно, что именно он там хотел установить :(.

Смотрим журнал регистрации: отказано в доступе к константе "Каталог файлов защиты".

Для упрощения процесса поиска необходимых прав
посмотрим, какие константы может изменять роль Бухгалтер и установим по аналогии

  • ГотовностьПрограммыКРаботе
  • ИмпВалютаПланирования
  • ИмпИспользоватьМеханизмАвтоматическогоОбменаДанными
  • ИмпКаталогЗащитыФайлов
  • ИмпСерияПутевогоЛиста
  • Имп_КаталогФайловЗащиты
  • ИмпСистемаЗащиты
  • ФайлОбработкиИнтернетПоддержкиПользователей (этот не будем разрешать)
Снова пробуем запуститься - очередная ошибка прав доступа


{ОбщийМодуль.ИмпНепоставляемый.Модуль(1732)}: Ошибка при вызове метода контекста (Установить)
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.
объект: 'ПланОбмена.Полный'; право: 'Чтение'
Таблица: 'Node14', SDBL-команда: 'SELECT'.


Добавим право Просмотр для ПланыОбмена и право Использование для интерфейсов (Общий, Полный, Бухгалтерский). Тестовому пользователю назначим основной интерфейс Бухгалтерский.

Очередная попытка запуска - новая ошибка


{МодульОбычногоПриложения(108)}: Ошибка при получении значения атрибута контекста (ТекущийПользователь)
 Если Не ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь) Тогда
по причине:
Нарушение прав доступа!
 

Посмотрим права на ПараметрыСеанса для роли Бухгалтер и сделаем по аналогии
Чтение+изменение

  • ДатаОбновленияПовторноИспользуемыхЗначенийМРО
  • ИспользуемыеПланыОбмена
  • ОбменДаннымиВключен
  • ОбщиеЗначения
  • ПравилаВыборочнойРегистрацииОбъектов
  • ПравилаРегистрацииОбъектов
Нет доступа
  • ЗагрузкаПараметровРаботыПрограммы
  • ПараметрыКлиентаНаСервере

Следующая ошибка:




{МодульОбычногоПриложения(559)}: Ошибка при вызове метода контекста (ПолучитьФорму)

Обработки.ПанельФункций.ПолучитьФорму().Открыть();
по причине:
Нарушение прав доступа!

Даем право на запуск обработки ПанельФункций.

Следующая ошибка:


{ОбщийМодуль.УправлениеПользователями.Модуль(135)}: Ошибка при вызове метода контекста (Записать)
 МенеджерЗаписи.Записать(Истина);
по причине:
Нарушение прав доступа!


Однако после закрытия работа продолжается и появляются другие окна:

{МодульОбычногоПриложения(575)}: Ошибка при вызове метода контекста (ПолучитьФорму)
  Форма = Обработки.ДополнительнаяИнформация.ПолучитьФорму("ФормаРабочийСтол");
по причине:
Нарушение прав доступа! 
 
 

Смотрим в журнале регистрации - отказано в праве Изменение для регистра сведений НастройкиПользователей.
Даем права:

  • использование обработки ДополнительнаяИнформация
  • регистр сведений НастройкиПользователей - Просмотр и Редактирование


Следующая ошибка:


{МодульОбычногоПриложения(190)}: Ошибка при вызове метода контекста (Создать)
 БИ = Обработки.БухгалтерскиеИтоги.Создать();
по причине:
Нарушение прав доступа!


Даем право на использование обработки БухгалтерскиеИтоги.


Следующая ошибка - при попытке сохранить настройки отчета ОСВ (оборотно-сальдовой ведомости)


{ОбщийМодуль.СтандартныеОтчеты.Модуль(867)}: Ошибка при вызове метода контекста (СоздатьЭлемент)
Настройка = Справочники.СохраненныеНастройки.СоздатьЭлемент();
по причине:
Нарушение прав доступа!
  
 
Даем все права для справочника СохраненныеНастройки, кроме ИнтерактивноеУдаление и прав для предопределенных.



Спустя время обнаружились еще проблемы

  1. при просмотре документов появляется ошибка права просмотра - Обработка. Предупреждение об изменениях
  2. при просмотре кассовых документов ошибка права использования - Обработка. Механизм взаимодействия с торговым оборудованием (надо искать обработку ТОСервер).
  3. при просмотре движений документа ошибка права использования - Обработка. Корректировка движений
При просмотре кассовых документов также возникает ошибка при открытии

{МодульОбычногоПриложения(667)}: Ошибка при вызове метода контекста (Создать)
глСерверТО = Обработки.ТОСервер.Создать();
по причине:
Нарушение прав доступа!