Как в 1С:Бухгалтерия 3 разрешить редактирование одного документа при правах только на просмотр

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При администрировании прав доступа в конфигурации «1С:Бухгалтерия предприятия 3.0» нередко возникает типовая задача: пользователю назначен профиль групп доступа Только просмотр, но ему требуется предоставить возможность полноценно создавать, заполнять и проводить лишь один конкретный вид документа, например, АктСверкиВзаиморасчетов. На практике простая попытка создать новую роль с полными правами на один документ часто приводит к тому, что кнопки создания или поля документа остаются заблокированными.

Разберем детально, почему так происходит, какие механизмы платформы и Библиотеки стандартных подсистем (БСП) на это влияют, а также по шагам настроим корректный доступ.

Типовое решение: использование встроенной роли конфигурации

Перед тем как вносить изменения в конфигурацию или разрабатывать собственные роли, проверим версию используемой конфигурации. Начиная с релиза 3.0.44.188, разработчики фирмы «1С» добавили специализированную типовую роль — ДобавлениеИзменениеАктСверкиВзаиморасчетов.

Рассмотрим по шагам правильный порядок настройки прав через пользовательский интерфейс:

  1. Откроем раздел Администрирование — Настройки пользователей и прав — Профили групп доступа.
  2. Создадим отдельный профиль групп доступа, например, с наименованием «Редактирование актов сверки взаиморасчетов».
  3. В табличной части разрешенных ролей нового профиля отметим флажком типовую роль ДобавлениеИзменениеАктСверкиВзаиморасчетов.
  4. В справочнике Группы доступа создадим соответствующую группу, привяжем созданный профиль и включим в состав участников нужного пользователя.
  5. Убедимся, что у пользователя теперь действуют одновременно две группы доступа: первая с профилем «Только просмотр» и вторая с профилем «Редактирование актов сверки взаиморасчетов». Права в системе 1С объединяются по принципу «ИЛИ» — если хотя бы одна роль разрешает действие, доступ предоставляется.
  6. Обязательно выполним перезапуск клиентского сеанса под целевым пользователем.

Создание собственной роли: платформа и подводные камни

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

  1. Интерактивное добавление: Обратим внимание, что права Добавление и ИнтерактивноеДобавление в платформе «1С:Предприятие» работают по-разному. Право Добавление позволяет создавать записи только программно. Чтобы у пользователя появилась кнопка «Создать» в форме списка или динамическом списке, роли обязательно должно быть назначено право Интерактивное добавление.
  2. Права на реквизиты и табличные части: При создании роли вручную флаг Редактирование на уровне самого документа не всегда автоматически устанавливается на подчиненные реквизиты и строки табличных частей. Если право Редактирование на реквизиты отсутствует, документ откроется, но все элементы ввода на управляемой форме окажутся недоступными.
  3. Сопутствующие метаданные: Документ в типовой конфигурации не функционирует изолированно. Для работы с актом сверки требуются права на чтение регистра бухгалтерии (Хозрасчетный) и первичных документов расчетов, иначе процедура автоматического заполнения по кнопке «Заполнить» не сможет прочитать учетные данные.

Обновление данных БСП и идентификаторов метаданных

Конфигурация «1С:Бухгалтерия предприятия» построена на базе БСП, где управление доступом тесно связано со справочником ИдентификаторыОбъектовМетаданных. Если мы создали новую роль в конфигураторе или подключили расширение, система не всегда сразу видит эти роли в режиме «1С:Предприятие».

Для корректного обновления реестра метаданных выполним вызов процедуры обновления программно:

Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанные();

Также обновление структуры метаданных и прав можно инициировать запуском базы с параметром командной строки /ЗапуститьОбновлениеИнформационнойБазы.

Обеспечение сопутствующего функционала: отправка почты и печать

Выясним еще одну практическую деталь: создание и проведение документа — лишь часть бизнес-процесса. Пользователю, как правило, необходимо распечатать акт или отправить его контрагенту по электронной почте. Если в его профиле оставлена лишь роль редактирования акта сверки и общий просмотр, при попытке отправки возникнут ошибки ограничений.

Чтобы предоставить пользователю возможность отправлять документ из базы, добавим в профиль следующие роли:

  1. Работа с электронной почтой: Бухгалтерия предприятия (или аналогичная роль работы с почтовым клиентом БСП);
  2. Чтение учетных записей электронной почты;
  3. Редактирование контрагентов (если требуется указывать или корректировать e-mail получателя непосредственно в процессе формирования отправки).

Методика диагностики и отладки ограничений доступа

Если после назначения профилей документ все равно недоступен для изменения, проанализируем ситуацию с помощью отладки:

  1. Проверка через контекстное меню: В дереве конфигуратора нажмем правой кнопкой мыши по объекту документа и выберем пункт Дополнительно. На вкладке Права наглядно отображается, какие именно роли дают право на чтение, изменение, интерактивное добавление и проведение объекта.
  2. Программная проверка прав: Выполним в сеансе пользователя проверку системной функцией ПравоДоступа():
    
    ИстинаДобавление = ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Документы.АктСверкиВзаиморасчетов);
    ИстинаИзменение  = ПравоДоступа("Изменение", Метаданные.Документы.АктСверкиВзаиморасчетов);
    
  3. Проверка модуля формы: В типовых конфигурациях в процедурах ПриСозданииНаСервере или ПриЧтенииНаСервере формы документа нередко программно выставляется свойство ЭтаФорма.ТолькоПросмотр = Истина;. Это может происходить из-за включенного статуса блокировки (флаг «Сверка согласована»), действия механизмов даты запрета изменения данных или нехватки сопутствующих прав. Установка точки останова в данных процедурах позволяет сразу найти условие, блокирующее форму.
← На главную