Как предоставить доступ к обработке «Групповое изменение реквизитов» пользователям без прав администратора

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

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

Почему стандартных ролей недостаточно?

Проанализируем ситуацию: даже если у пользователя есть роль БазовыеПрава, которая дает право на запуск обработки, он все равно не видит её в панели действий раздела «Администрирование». Это связано с тем, что видимость команды открытия обработки в интерфейсе жестко ограничена ролью ПолныеПрава. Более того, внутри программного кода самой обработки встроены дополнительные проверки. Если мы заглянем в модуль формы обработки, то увидим следующий фрагмент кода в процедуре ПриСозданииНаСервере:


Если Не ЭтоПолноправныйПользователь Тогда
    ВызватьИсключение НСтр("ru = 'Для открытия обработки требуется право администрирования.'")
КонецЕсли;

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

Метод 1: Штатный контекстный вызов «Изменить выделенные»

Прежде чем приступать к программированию, рассмотрим самый простой и безопасный способ, предусмотренный разработчиками 1С. Для бухгалтера в 90% случаев не нужно открывать «пустую» форму обработки. Достаточно возможности обработать конкретный список документов.

  1. Откроем список нужных документов или справочник.
  2. Установим необходимые фильтры (например, по периоду или организации).
  3. Выделим нужные строки (используя Ctrl + A для всех или Shift/Ctrl для выборочных).
  4. Нажмем правую кнопку мыши или кнопку «Еще» и выберем пункт «Изменить выделенные...». Если возможностей стандартного списка недостаточно, можно использовать универсальный редактор справочников из списка.

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

Метод 2: Использование расширения для обхода проверки прав

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

Разберем шаги по созданию решения:

  1. Создадим новое расширение и добавим в него обработку ГрупповоеИзменениеРеквизитов.
  2. Добавим в расширение роль (например, Расш_ДоступКГрупповомуИзменению), в которой дадим права на использование этой обработки.
  3. В модуле формы обработки в расширении создадим обработчик &Вместо("ПриСозданииНаСервере"). Нам нужно скопировать типовой код, но закомментировать или изменить условие проверки прав. Похожий функционал предлагает готовое расширение для группового изменения реквизитов с формы.

Пример кода в расширении:


&Вместо("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Копируем логику стандартной процедуры, но убираем жесткую проверку прав
    // Проверка на контекстный вызов остается без изменений
    КонтекстныйВызов = ТипЗнч(Параметры.МассивОбъектов) = Тип("Массив");
    
    Если Не КонтекстныйВызов Тогда
        // Вместо полной блокировки можно добавить проверку нашей новой роли
        Если Не РольДоступна("Расш_ДоступКГрупповомуИзменению") 
             И Не РольДоступна("ПолныеПрава") Тогда
            ВызватьИсключение "Недостаточно прав для запуска групповой обработки.";
        КонецЕсли;
        
        ЗаполнитьСписокТиповОбъектов();
    КонецЕсли;
    
    // Остальная логика инициализации формы...
КонецПроцедуры

Метод 3: Добавление ссылки в «Избранное»

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

  1. Администратор или программист может сформировать навигационную ссылку: e1cib/app/Обработка.ГрупповоеИзменениеРеквизитов.
  2. Пользователь нажимает Shift + F11, вставляет ссылку и нажимает «Перейти».
  3. После того как форма откроется, пользователю нужно нажать на «звездочку» в заголовке окна, чтобы поместить обработку в «Избранное».

Теперь доступ будет всегда под рукой на панели избранного, независимо от настроек панелей действий разделов.

Метод 4: Использование внешней обработки

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

  1. Выгрузим обработку из конфигуратора в файл .epf.
  2. В модуле формы закомментируем те самые строки с вызовом исключения для неполноправных пользователей.
  3. Зарегистрируем обработку в справочнике «Дополнительные отчеты и обработки» (раздел «Администрирование»).
  4. В настройках доступа к этой внешней обработке укажем нужных пользователей или профили (Бухгалтер, Главбух).

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

Технические тонкости и риски

Рассмотрим дополнительные аспекты, о которых важно знать администратору при предоставлении таких прав бухгалтерам:

1. Экспертный режим: В обработке существует возможность изменения служебных реквизитов (режим разработчика). Доступ к нему регулируется отдельно. Даже если форма открылась, бухгалтер может не увидеть часть полей, если у него нет прав на «администрирование данных». В расширении можно также принудительно установить видимость настройки Элементы.ГруппаДополнительныеПараметры.Видимость = Истина;.

2. Фоновое выполнение: Групповое изменение объектов часто запускается в фоновом режиме. Проверьте, чтобы у профиля пользователя была роль ЗапускЗапланированныхЗаданий или аналогичная, иначе при обработке большого массива данных (более 100 объектов) система выдаст ошибку прав доступа при попытке старта фонового процесса.

3. Версионирование объектов: Прежде чем давать бухгалтеру инструмент массового исправления, настоятельно рекомендуем включить «Хранение истории изменений» для критически важных справочников. Групповая обработка не имеет кнопки «Отменить», и в случае ошибки (например, случайной замены расчетного счета у всех контрагентов сразу) восстановление данных без версионирования потребует поднятия бэкапа всей базы.

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

← На главную