При работе с конфигурацией «Зарплата и управление персоналом», редакция 3.1, часто возникает необходимость точечно расширить права пользователя, не снимая основную конфигурацию с поддержки. Одной из самых трудоемких задач является предоставление доступа к документу ПереносДанных. Этот объект является универсальным инструментом корректировки, и простая установка галочек в роли расширения часто не приносит результата. Рассмотрим подробно, почему так происходит и как правильно решить эту задачу.
Когда мы добавляем новую роль в расширение и назначаем права на документ, мы часто сталкиваемся с ситуацией: пользователь видит список, но при попытке открыть или отредактировать документ получает ошибку «Недостаточно прав доступа» (иногда причиной может быть необходимость выполнить исправление битых ролей в профилях групп). Проанализируем причину. В системе 1С версии 8.3 права из разных ролей (основной конфигурации и расширений) суммируются. Однако документ ПереносДанных специфичен тем, что он не просто хранит данные, а напрямую управляет наборами записей множества регистров (накопления, сведения, расчета).
Важный нюанс: если у пользователя есть права на сам документ, но нет прав на конкретный регистр, записи которого этот документ пытается отобразить на форме или записать в базу, система заблокирует действие. Выясним, как обойти это ограничение системно.
Прежде всего, нам необходимо добавить в расширение не только сам объект, но и весь контекст его использования. Рассмотрим последовательность действий:
ПереносДанных.ВзаиморасчетыССотрудниками, НачисленияУдержанияПоСотрудникам и т.д.).Если мы не добавим регистры в расширение, мы не сможем управлять правами на них внутри нашей новой роли. Даже если права на эти регистры есть в основных ролях пользователя, для корректной работы связки «Документ — Регистр» внутри расширения платформе часто требуется явное указание прав в рамках одной области (контекста расширения).
Создадим в расширении новую роль (или доработаем существующую). Для документа ПереносДанных установим следующие права:
Чтение и Просмотр — чтобы видеть документ в списке и открывать форму (подробнее про управление доступом к формам).Добавление и Изменение — для возможности создания и редактирования.Проведение и Отмена проведения — так как документ делает движения по регистрам.Теперь перейдем к регистрам. Разберем ситуацию на примере регистра накопления. Даже если нам кажется, что права у пользователя уже есть, установим их в роли расширения повторно для тех регистров, которые используются в ПереносДанных:
// Пример логики настройки прав для РегистрНакопления.ВзаиморасчетыССотрудниками
// В роли расширения должны быть активны:
// - Чтение
// - Просмотр
// - Изменение
// - Редактирование
Иногда при попытке добавить строку в таблицу регистра внутри документа возникает программная ошибка обращения к полю Период. Это происходит потому, что типовой код формы документа пытается синхронизировать дату документа и дату записи регистра. Если в роли не хватает прав на интерактивное изменение этого конкретного регистра, платформа блокирует колонку на форме, и программная запись в неё становится невозможной.
Чтобы этого избежать, убедимся, что в роли расширения для всех используемых регистров установлены права:
ИзменениеРедактированиеИнтерактивное добавление строкЕсли после всех настроек ошибка «Недостаточно прав» сохраняется, проанализируем ситуацию с помощью Журнала регистрации. Это самый быстрый способ узнать, к какому именно скрытому объекту система запрашивает доступ.
Рассмотрим алгоритм отладки:
В колонке «Данные» мы увидим точное имя объекта (например, какой-то служебный регистр сведений или константа), на который не хватило прав. После этого просто добавим этот объект в расширение и дадим право на Чтение в нашей роли.
В некоторых случаях (особенно в конфигурациях на БСП, таких как ЗУП 3.1) помогает добавление пользователю стандартной роли УдаленныйДоступOData. Эта роль содержит минимально необходимые технические права на чтение метаданных, что позволяет платформе корректно инициализировать сложные универсальные формы. Однако помним, что это не заменяет необходимость настройки прав на сами данные (регистры).
Проанализируем также влияние RLS (ограничения на уровне записей). Если в системе включено разделение по организациям, а в вашей роли расширения не прописаны условия ограничения, может возникнуть конфликт. Проще всего в таких случаях проверить работу, временно назначив пользователю роль с полными правами. Если с полными правами документ редактируется — значит, проблема именно в составе прав вашей роли в расширении или в правах на связанные регистры.
Для успешной работы документа ПереносДанных через расширение мы должны прийти к следующей структуре:
Соблюдение этого комплексного подхода позволит корректно расширить возможности пользователя без модификации основной конфигурации.