1c установить только чтение
Не первый раз уже сталкиваюсь с ситуацией, когда меня просят добавить в 1С уровень доступа, чтобы можно было формировать любые отчеты, но изменять программа бы ничего не давала.
Эта возможность может пригодиться для предоставления доступа внутреннему аудитору, директору, экономисту и в других случаях.
Стандартная настройка такого уровня доступа не предусматривает. Я попробовал добавить роль, но с первой попытки ничего не получилось. Удивившись (я вообще-то не новичок в 1С), я поразбирался в проблеме, и выяснил в чем причина.
Давайте по шагам посмотрим, что нужно делать, может быть кому-то мой опыт сэкономит время.
1) Снимаем конфигурацию с поддержки, чтобы можно было что-то изменить
В стандартной поставке, конфигурация 1С:Бухгалтерия имеет настройку «конфигурация не редактируется и находится на поддержке поставщика». Это позволяет при обновлении конфигурации автоматически применить новые настройки, не задавая вопросов пользователю о необходимости сохранения внесенных нами изменений. В данном случае, мы хотим добавить новую роль с правами только на чтение, а при обновлении иметь возможность ее сохранить.
Для получения возможности изменения, нужно проделать следующее:
a) Запустите программу в режиме конфигуратора. Для этого при запуске 1С и появления списка баз, нажмите не на кнопку «Предприятие», которую Вы нажимаете обычно, а нажмите кнопку «Конфигуратор»:
b) Нужно зайти под пользователем, который имеет полные права в конфигурации. В демонстрационной базе это «Абдулов (гендиректор)».
c) Заходим в пункт меню «Конфигурация»-«Поддержка»-«Настройка поддержки»:
d) Включаем возможность изменения конфигурации при помощи кнопки «Включить возможность изменения»:
e) Изменяем режим порядка редактирования конфигурации с «Объект поставщика не редактируется» (картинка с замочком) на «Редактируется с сохранением поддержки» (картинка с желтым чемоданчиком, но без замка):
f) Это дает нам возможность добавить новую роль. Окно «Настройка поддержки» можно закрыть.
2) Добавляем новую роль с правами «только чтение»
a) Добавляем новую роль: Для этого откройте веточку «Общие», щелкните правой кнопкой мыши на раздел «Роль» и выберите «Добавить»:
b) Дадим новой роли какое-нибудь название по смыслу. Рекомендуется добавить к названию какой-нибудь префикс или суффикс, например сокращенное название Вашей фирмы (2-3 буквы), чтобы при появлении такой же роли в обновлении от 1С, новая роль не заместила Ваши настройки. Например, я назову новую роль «АудиторМоя» (обратите внимание, в поле «Имя» пробелы указывать нельзя, а в поле «Синоним» программа их сама поставит, если писать каждое слово с большой буквы):
c) Я хочу, чтобы новая роль давала доступ ко всем справочникам и документам, но только на чтение. Для упрощения этого процесса, я дам доступ не на каждый документ, а прямо на ветку «Справочники», «Документы», ну и еще нужно дать доступ на чтение в раздел «Константы»:
Я ставлю только галочку «Просмотр» (доступ на чтение через открытие документа/справочника), это действие также автоматически ставит галочку «Чтение» (доступ на чтение при обращении из программы):
, в разделе «БухгалтерияПредприятия» поставьте право входить в режиме «Толстый клиент» (так на самом деле называется режим, в котором Вы обычно работаете):
Включите также право «Вывод», если Вы хотите чтобы этот пользователь мог формировать и печатать отчеты:
Соответственно – не предоставляйте право «Вывод», если пользователь должен только смотреть информацию в базе, а распечатывать и уносить с собой Вы ему не разрешаете.
, найдем модуль «Управление пользователями», откроем его двойным щелчком:
Откроем «+» текст процедуры «ПроверитьВозможностьРаботыПользователя». Есть два варианта:
f) простой – выключить проверку (закомментировать 6 строчек от «Если» до «КонецЕсли»):
g) аккуратный – добавить в проверку нашу новую роль «АудиторМоя» (подставьте Ваш название, оно должно точно совпадать с названием роли, как в дереве):
Внимание! Помните, что при обновлении конфигурации, этот текст будет заменен на первоначальный, поэтому менять эти строчки нужно после каждого обновления программы. Остальные настройки сохранены в роли, и повторять их не нужно.
, необходимо предоставить право на чтение веточки «Параметры сеанса»:
и право на запись в свойство «ТекущийПользователь» в этой ветке:
Сразу дадим право на запись параметра «ОбщиеЗначения», это тоже будет нужно:
предоставим доступ на чтение в регистр сведений «Настройки пользователей». Чтобы пользователь мог сохранять свои настройки отчетов, можно также предоставить ему доступ и на запись в этот регистр:
Чужие данные он испортить не сможет, так как работа с регистром в программе происходит автоматически, в зависимости от текущего пользователя, вошедшего в программу.
k) Собранный набор прав уже позволяет войти в программу:
и открывать справочники и документы на просмотр:
l) Для того, чтобы задолженность контрагентов и прочие расчеты отображались в документах, а также предвидя следующий шаг, что пользователю наверняка понадобится доступ открывать и использовать отчеты, предоставим ему доступ на чтение к регистрам (где хранятся все цифры) и к отчетам:
Кроме того, дадим право пользователю на использование «интерфейсов», чтобы у него появилось полное меню:
Чтобы его убрать, добавим доступ на запись в константу «ГотовностьПрограммыКРаботе»:
Добавим право на чтение планов обмена:
o) Нужно сохранить конфигурацию, чтобы пользователю можно было назначить новую роль, иначе ее не покажет в списке доступных ролей. Нажмем кнопку «Сохранить конфигурацию» (нужно подождать пока программа запишет изменения, смотрите в строку статуса внизу окна программы) и затем «Обновить конфигурацию»:
Можно сохранять роль сколько угодно раз в процессе внесения изменений в правах, или добавить какие-то настройки позже.
3) Назначаем пользователю новую роль
a) Назначим роль существующему или новому пользователю. Для этого откроем пункт меню «Администрирование»-«Пользователи»:
b) Я добавлю нового пользователя и назову его «Аудитор»:
Пароль новому пользователю можно ввести прямо здесь (нужно ввести одинаковый в поля «Пароль» и «Подтверждение пароля»), или пользователь его установит потом сам в режиме «Предприятие» через пункт меню «Сервис»-«Параметры пользователя»:
c) Установим роль «Аудитор моя» на закладке «Прочие»:
«Основной интерфейс» и «Язык» можно не указывать, программа сама выберет по умолчанию. Для надежности укажу в качестве «Основного интерфейса» «Полный», чтобы мой аудитор видел все доступные справочники и документы. Сохраняем изменения кнопкой «Ок». При последующих изменениях в правах (если что-то пропустили и программа не запускается или выдает ошибки), пользователя можно уже не трогать, изменять и сохранять только роль, и заходить снова в режиме «Предприятие» под нужным пользователем.
4) Проверим как это работает
a) Запускаем 1С в обычном режиме «Предприятие»:
Заходим под новым пользователем «Аудитор» (я не назначал ему пароль, поэтому его не ввожу):
b) Ну, вроде все работает.
5) Используем новую роль повторно
a) Если Вам необходимо предоставить такие права нескольким пользователям – добавьте еще пользователей и укажите им эту же роль. Повторно роль создавать не нужно.
В этой статье речь пойдет о настройке прав доступа пользователей к объектам системы 1С.
В 1С 8для управления доступа пользователей используется отдельный объект метаданных, который называется Роли.
Далее мы рассмотрим, как использовать и настраивать роли в 1С предприятие 8.3.
Обратите внимание! Эта статья написана в помощь программистам. Настройка прав в пользовательском режиме на примере 1С Бухгалтерия рассмотрена в данной статье.
Ниже мы рассмотрим подробно каждый атрибут метаданных при настройке роли пользователя 1С 8.3.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Общие настройки роли 1С
Если открыть объект метаданных Роль, мы можем увидеть следующую картину:
Будем рассматривать только вкладку Права.
Следует обратить внимание на галочки в нижней части:
Настройки прав на всю конфигурацию
Если открыть Роль и кликнуть на корень конфигурации, мы увидим следующие настройки:
Подробнее о каждом из прав на всю конфигурацию:
Настройка прав 1С на другие объекты метаданных
Права только для документов:
Только для регистров накопления и бухгалтерии
Только для обработок и отчетов:
Привилегированный режим 1С
Все, что внутри, будет выполняться без проверки прав пользователя.
Доступна ли роль 1С пользователю?
Чтобы узнать, нужно выполнить функцию РольДоступна(), передав туда название роли строкой.
Например:
Нарушение прав доступа
Такую ошибку можно увидеть, если недостаточно прав на чтение/редактирование/удаление данных. Система выдаёт вот такую ошибку:
Для того чтобы понять, битая ссылка или нет, просто зайдите в базу под пользователем с полными правами.
Для массового поиска таких ошибок подойдет статья как найти битые ссылки в базе 1С.
P.S. Если у Вас все же не получилось разобраться в ролях пользователей, Вы можете заказать услуги 1С программиста.
Видео с примером настройки прав в 1С бухгалтерии 3.0:
Другие статьи по 1С:
-
(обновление 1С, резервные копии и т.д); (для пользователей)
Ответственное чтение данных
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1. Общие рекомендации по использованию транзакций при чтении данных
Область применения (уточнение): управляемое приложение, обычное приложение.
1.1. Если чтение данных из информационной базы должно быть ответственным, следует производить такое чтение в транзакции с предварительной установкой управляемых блокировок. В общем случае, ответственным следует считать любое чтение, на основе результатов которого производятся какие-либо изменения в информационной базе или принимаются решения.
Например, ответственное чтение данных требуется в следующих случаях:
Выполнение групповой обработки объектов, при реструктуризации данных в обработчиках отложенного и оперативного обновления ИБ (*)
* Примечание: перед модификацией ссылочных объектов, обычно, следует устанавливать на них пессимистичные объектные блокировки .
// 1. Прочитать регистр сведений
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаметкиПоПредмету.КоличествоЗаметок КАК КоличествоЗаметок
|ИЗ
| РегистрСведений.ЗаметкиПоПредмету КАК ЗаметкиПоПредмету
|ГДЕ
| ЗаметкиПоПредмету.Предмет = &Предмет");
Запрос.УстановитьПараметр("Предмет", ПредметЗаметок);
Выборка = Запрос.Выполнить().Выбрать();
КоличествоЗаметок = 0;
Если Выборка.Следующий() Тогда
КоличествоЗаметок = Выборка.КоличествоЗаметок;
КонецЕсли;
// 2. Записать в регистр сведений
НаборЗаписей = РегистрыСведений.ЗаметкиПоПредмету.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Предмет.Установить(ПредметЗаметок);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Предмет = ПредметЗаметок;
НоваяЗапись.КоличествоЗаметок = КоличествоЗаметок + 1;
НаборЗаписей.Записать();
// 1. Начать транзакцию для пакета из двух операций чтения и записи регистра
НачатьТранзакцию();
Попытка
// 2. Установить исключительную блокировку на интересующий диапазон записей регистра,
// для того чтобы гарантировать, что в момент записи количество заметок не изменилось с момента чтения в каком-либо другом сеансе.
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("РегистрСведений.ЗаметкиПоПредмету");
ЭлементБлокировкиДанных.УстановитьЗначение("Предмет", ПредметЗаметок);
ЭлементБлокировкиДанных.Режим = РежимБлокировкиДанных.Исключительный;
БлокировкаДанных.Заблокировать();
// 3. Прочитать регистр сведений
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаметкиПоПредмету.КоличествоЗаметок КАК КоличествоЗаметок
|ИЗ
| РегистрСведений.ЗаметкиПоПредмету КАК ЗаметкиПоПредмету
|ГДЕ
| ЗаметкиПоПредмету.Предмет = &Предмет");
Запрос.УстановитьПараметр("Предмет", ПредметЗаметок);
КоличествоЗаметок = 0;
Если Выборка.Следующий() Тогда
КоличествоЗаметок = Выборка.КоличествоЗаметок;
КонецЕсли;
// 4. Записать в регистр сведений
НаборЗаписей = РегистрыСведений.ЗаметкиПоПредмету.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Предмет.Установить(ПредметЗаметок);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Предмет = ПредметЗаметок;
НоваяЗапись.КоличествоЗаметок = КоличествоЗаметок + 1;
НаборЗаписей.Записать();
ЗафиксироватьТранзакцию();
Исключение
// 5. Если при установке блокировки возникла исключительная ситуация из-за того, что регистр уже заблокирован в другом сеансе (или по другим причинам),
// отменить транзакцию и записать сведения об ошибке в журнал регистрации.
ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации(НСтр("ru = 'Заметки'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка. ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение;
КонецПопытки;
В некоторых случаях, ответственное чтение не требуется в силу решаемой прикладной задачи, например:
- Получение данных динамическими списками;
- Поиск данных;
- Формирование большинства отчетов.
В некоторых случаях, ответственное чтение не требуется, так как конкурентная работа с данными маловероятна или полностью исключена, например:
Обращение к условно постоянной информации. Например, чтение константы ВалютаРегламентированногоУчета или обращение к учетной политике; Действия, которые гарантированно выполняются в монопольном режиме. Например, в процедурах обновления и первоначального заполнения данных информационной базы; Действия над данными, доступ к которым имеет только один пользователь, поэтому конкурентная работа с ними маловероятна или полностью исключена.Например, персональные данные, хранящиеся в «разрезе» пользователей; Мобильное приложение, где конкурентная работа с данными маловероятна или полностью исключена.
1.2. В большинстве случаев, при выполнении чтения в обработчиках событий связанных с модификацией данных, весь код обработчика выполняется в рамках системной транзакции, которая открыта платформой, и явно открывать новую транзакцию не требуется.
Например, в системной транзакции выполняются обработчики модулей объектов и соответствующие им подписки на события:
Область применения (уточнение): управляемое приложение, обычное приложение.
2. Выбор: исключительная или разделяемая блокировка
2.1. Если в транзакции производится ответственное чтение данных с их последующим изменением, необходимо установить исключительную управляемую блокировку (до выполнения чтения). В противном случае возможно возникновение взаимоблокировки.
Пример установки исключительной блокировки (без открытия транзакции – в предположении, что ранее уже была открыта системная транзакция):
// 1. Установить исключительную блокировку для ответственного чтения объекта с целью его дальнейшего изменения
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Приказы");
ЭлементБлокировки.УстановитьЗначение("Ссылка", ПриказСсылка);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; // можно не указывать, т.к. по умолчанию Исключительный
Блокировка.Заблокировать();
// 2. Получить объект для его дальнейшей модификации
Объект = ПриказСсылка.ПолучитьОбъект();
Если Объект = Неопределено Тогда // объект может быть уже удален в других сеансах
Возврат;
КонецЕсли;
// 3. Выполнить блокировку объекта от изменения другими сеансами
ЗаблокироватьДанныеДляРедактирования(ПриказСсылка);
// 4. Записать измененный объект
Объект.Реквизит = .
Объект.Записать();
2.2. Если в транзакции производится ответственное чтение данных без их последующего изменения (например, для формирования движений), необходимо установить разделяемую блокировку на читаемые данные и исключительную блокировку на изменяемые данные.
Пример установки разделяемой блокировки (без открытия транзакции – в предположении, что ранее уже была открыта системная транзакция):
// 1. Установить разделяемую блокировку для ответственного чтения нескольких связанных объектов
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Приказы");
ЭлементБлокировки.УстановитьЗначение("Ссылка", ПриказСсылка);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
Блокировка.Заблокировать();
// 2. Прочитать первый объект - приказ
ПриказОбъект = ПриказСсылка.ПолучитьОбъект();
// 3. Прочитать второй объект – пользователя (автора приказа)
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Пользователи");
ЭлементБлокировки.УстановитьЗначение("Ссылка", ПриказОбъект.Автор);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
Блокировка.Заблокировать();
Типовые профили можно воспринимать как шаблоны, которые являются полноценными с точки зрения организации работы в базе и отражают наиболее массовые запросы к организации доступа.
Типовой профиль "Только просмотр" предназначен только для просмотра информации, без возможности изъять ее из ИБ (сохранение в файл, печать и т.п.).
Для расширения профиля зайдите в справочник "Профили групп доступа" (Администрирование – Группы доступа – Профили групп доступа) и скопируйте типовой профиль "Только просмотр", задать ему свое отличное наименование, а также установите дополнительные роли.
Для печати - добавить роль «Вывод на принтер, в файл, в буфер обмена»
Чтобы можно было не только печатать, но и сохранять в файл требуется добавить роль "Редактирование, отправка по почте, сохранение в файл печатных форм" (РедактированиеПечатныхФорм).
Одной роли «Редактирование, отправка по почте, сохранение в файл печатных форм» не достаточно для сохранения в файл, добавляйте две.
Не забудьте записать новый профиль групп доступа по кнопке Записать и закрыть.
Затем профиль назначается пользователю (Администрирование – Настройка пользователей и прав – Пользователи – проваливаетесь в нужного пользователя – Права доступа). Запишите изменения. Они вступят в силу со следующим входом этого пользователя в программу.
Читайте также: