1c установить только чтение

Обновлено: 06.07.2024

Не первый раз уже сталкиваюсь с ситуацией, когда меня просят добавить в 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. Прочитать второй объект – пользователя (автора приказа)
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Пользователи");
ЭлементБлокировки.УстановитьЗначение("Ссылка", ПриказОбъект.Автор);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
Блокировка.Заблокировать();

personal photo

Типовые профили можно воспринимать как шаблоны, которые являются полноценными с точки зрения организации работы в базе и отражают наиболее массовые запросы к организации доступа.

Типовой профиль "Только просмотр" предназначен только для просмотра информации, без возможности изъять ее из ИБ (сохранение в файл, печать и т.п.).

Для расширения профиля зайдите в справочник "Профили групп доступа" (Администрирование – Группы доступа – Профили групп доступа) и скопируйте типовой профиль "Только просмотр", задать ему свое отличное наименование, а также установите дополнительные роли.

Пользователю с правами на просмотр разрешить сохранять и печатать документы БП 3.0

Пользователю с правами на просмотр разрешить сохранять и печатать документы БП 3.0

Для печати - добавить роль «Вывод на принтер, в файл, в буфер обмена»

Чтобы можно было не только печатать, но и сохранять в файл требуется добавить роль "Редактирование, отправка по почте, сохранение в файл печатных форм" (РедактированиеПечатныхФорм).

Пользователю с правами на просмотр разрешить сохранять и печатать документы БП 3.0

Пользователю с правами на просмотр разрешить сохранять и печатать документы БП 3.0

Одной роли «Редактирование, отправка по почте, сохранение в файл печатных форм» не достаточно для сохранения в файл, добавляйте две.

Не забудьте записать новый профиль групп доступа по кнопке Записать и закрыть.

Затем профиль назначается пользователю (Администрирование – Настройка пользователей и прав – Пользователи – проваливаетесь в нужного пользователя – Права доступа). Запишите изменения. Они вступят в силу со следующим входом этого пользователя в программу.

Читайте также: