Как правильно настроить права на документ «Перенос данных» через расширение в 1С:ЗУП 3.1?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

При работе с конфигурацией «Зарплата и управление персоналом», редакция 3.1, часто возникает необходимость точечно расширить права пользователя, не снимая основную конфигурацию с поддержки. Одной из самых трудоемких задач является предоставление доступа к документу ПереносДанных. Этот объект является универсальным инструментом корректировки, и простая установка галочек в роли расширения часто не приносит результата. Рассмотрим подробно, почему так происходит и как правильно решить эту задачу.

Анализ проблемы и механизма работы прав в расширении

Когда мы добавляем новую роль в расширение и назначаем права на документ, мы часто сталкиваемся с ситуацией: пользователь видит список, но при попытке открыть или отредактировать документ получает ошибку «Недостаточно прав доступа» (иногда причиной может быть необходимость выполнить исправление битых ролей в профилях групп). Проанализируем причину. В системе 1С версии 8.3 права из разных ролей (основной конфигурации и расширений) суммируются. Однако документ ПереносДанных специфичен тем, что он не просто хранит данные, а напрямую управляет наборами записей множества регистров (накопления, сведения, расчета).

Важный нюанс: если у пользователя есть права на сам документ, но нет прав на конкретный регистр, записи которого этот документ пытается отобразить на форме или записать в базу, система заблокирует действие. Выясним, как обойти это ограничение системно.

Шаг 1. Подготовка метаданных в расширении

Прежде всего, нам необходимо добавить в расширение не только сам объект, но и весь контекст его использования. Рассмотрим последовательность действий:

  1. Добавим в расширение документ ПереносДанных.
  2. Обязательно перенесем в расширение все его реквизиты и табличные части.
  3. Критически важный момент: добавим в расширение те регистры, с которыми будет работать пользователь (например, Зарплата к выплате, ВзаиморасчетыССотрудниками, НачисленияУдержанияПоСотрудникам и т.д.).

Если мы не добавим регистры в расширение, мы не сможем управлять правами на них внутри нашей новой роли. Даже если права на эти регистры есть в основных ролях пользователя, для корректной работы связки «Документ — Регистр» внутри расширения платформе часто требуется явное указание прав в рамках одной области (контекста расширения).

Шаг 2. Настройка прав в роли расширения

Создадим в расширении новую роль (или доработаем существующую). Для документа ПереносДанных установим следующие права:

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


// Пример логики настройки прав для РегистрНакопления.ВзаиморасчетыССотрудниками
// В роли расширения должны быть активны:
// - Чтение
// - Просмотр
// - Изменение
// - Редактирование

Шаг 3. Решение проблемы с ошибкой «Поле объекта недоступно для записи (Период)»

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

Чтобы этого избежать, убедимся, что в роли расширения для всех используемых регистров установлены права:

  1. Изменение
  2. Редактирование
  3. Интерактивное добавление строк

Шаг 4. Использование «Метода научного тыка» и Журнала регистрации

Если после всех настроек ошибка «Недостаточно прав» сохраняется, проанализируем ситуацию с помощью Журнала регистрации. Это самый быстрый способ узнать, к какому именно скрытому объекту система запрашивает доступ.

Рассмотрим алгоритм отладки:

  1. Зайдем в режим «1С:Предприятие» под пользователем с ограниченными правами.
  2. Воспроизведем ошибку доступа.
  3. Откроем под администратором Журнал регистрации (раздел Администрирование — Обслуживание).
  4. Установим фильтр по пользователю и событию «Отказ в доступе».

В колонке «Данные» мы увидим точное имя объекта (например, какой-то служебный регистр сведений или константа), на который не хватило прав. После этого просто добавим этот объект в расширение и дадим право на Чтение в нашей роли.

Шаг 5. Роль УдаленныйДоступOData и программные ограничения

В некоторых случаях (особенно в конфигурациях на БСП, таких как ЗУП 3.1) помогает добавление пользователю стандартной роли УдаленныйДоступOData. Эта роль содержит минимально необходимые технические права на чтение метаданных, что позволяет платформе корректно инициализировать сложные универсальные формы. Однако помним, что это не заменяет необходимость настройки прав на сами данные (регистры).

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

Итог настройки

Для успешной работы документа ПереносДанных через расширение мы должны прийти к следующей структуре:

  1. Документ в расширении: полные права (включая проведение).
  2. Регистры в расширении: права на чтение и изменение для всех регистров, которые планируется править этим документом.
  3. Типы реквизитов: если у реквизитов документа тип «ЛюбаяСсылка», убедимся, что у пользователя есть права на чтение объектов, которые он туда выбирает.

Соблюдение этого комплексного подхода позволит корректно расширить возможности пользователя без модификации основной конфигурации.

← На главную