В современных конфигурациях 1С, построенных на базе Библиотеки стандартных подсистем (БСП), часто возникает ситуация, когда пользователям с профилями «Бухгалтер» или «Главный бухгалтер» требуется массово изменить данные. Однако типовая обработка ГрупповоеИзменениеРеквизитов зачастую недоступна в интерфейсе или выдает ошибку о нехватке прав администрирования. Рассмотрим подробно, почему это происходит и какими способами можно решить эту задачу, сохраняя баланс между удобством и безопасностью системы.
Проанализируем ситуацию: даже если у пользователя есть роль БазовыеПрава, которая дает право на запуск обработки, он все равно не видит её в панели действий раздела «Администрирование». Это связано с тем, что видимость команды открытия обработки в интерфейсе жестко ограничена ролью ПолныеПрава. Более того, внутри программного кода самой обработки встроены дополнительные проверки. Если мы заглянем в модуль формы обработки, то увидим следующий фрагмент кода в процедуре ПриСозданииНаСервере:
Если Не ЭтоПолноправныйПользователь Тогда
ВызватьИсключение НСтр("ru = 'Для открытия обработки требуется право администрирования.'")
КонецЕсли;
Таким образом, даже если вы добавите пользователю право на просмотр и запуск объекта в конфигураторе, система все равно заблокирует доступ на уровне программной логики БСП. Выясним, как это обойти.
Прежде чем приступать к программированию, рассмотрим самый простой и безопасный способ, предусмотренный разработчиками 1С. Для бухгалтера в 90% случаев не нужно открывать «пустую» форму обработки. Достаточно возможности обработать конкретный список документов.
Ctrl + A для всех или Shift/Ctrl для выборочных).При таком вызове обработка запускается в контекстном режиме. В этом случае проверка ЭтоПолноправныйПользователь не срабатывает, так как система считает такой вызов безопасным — пользователь работает только с теми объектами, к которым у него уже есть доступ в списке. Это оптимальное решение, не требующее изменения конфигурации.
Если пользователю все же жизненно необходимо открывать обработку через интерфейс и выбирать типы объектов самостоятельно, нам поможет механизм расширений. Это позволит сохранить основную конфигурацию на поддержке.
Разберем шаги по созданию решения:
ГрупповоеИзменениеРеквизитов.Расш_ДоступКГрупповомуИзменению), в которой дадим права на использование этой обработки.&Вместо("ПриСозданииНаСервере"). Нам нужно скопировать типовой код, но закомментировать или изменить условие проверки прав. Похожий функционал предлагает готовое расширение для группового изменения реквизитов с формы.Пример кода в расширении:
&Вместо("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Копируем логику стандартной процедуры, но убираем жесткую проверку прав
// Проверка на контекстный вызов остается без изменений
КонтекстныйВызов = ТипЗнч(Параметры.МассивОбъектов) = Тип("Массив");
Если Не КонтекстныйВызов Тогда
// Вместо полной блокировки можно добавить проверку нашей новой роли
Если Не РольДоступна("Расш_ДоступКГрупповомуИзменению")
И Не РольДоступна("ПолныеПрава") Тогда
ВызватьИсключение "Недостаточно прав для запуска групповой обработки.";
КонецЕсли;
ЗаполнитьСписокТиповОбъектов();
КонецЕсли;
// Остальная логика инициализации формы...
КонецПроцедуры
Посмотрим на ситуацию со стороны интерфейса. Если права через расширение уже даны, но команда так и не появилась в меню, можно воспользоваться механизмом прямых ссылок. Это позволит пользователю не искать обработку в дебрях настроек.
e1cib/app/Обработка.ГрупповоеИзменениеРеквизитов.Shift + F11, вставляет ссылку и нажимает «Перейти».Теперь доступ будет всегда под рукой на панели избранного, независимо от настроек панелей действий разделов.
Проанализируем еще один популярный вариант — сохранение встроенной обработки как внешней. Это удобно, когда нужно быстро дать доступ без обновления конфигурации и создания расширений.
.epf.Важный нюанс: при регистрации внешней обработки обязательно проследите, чтобы она запускалась не в безопасном режиме. В безопасном режиме попытка программной записи объектов будет заблокирована платформой, и обработка не сможет выполнять свои функции.
Рассмотрим дополнительные аспекты, о которых важно знать администратору при предоставлении таких прав бухгалтерам:
1. Экспертный режим: В обработке существует возможность изменения служебных реквизитов (режим разработчика). Доступ к нему регулируется отдельно. Даже если форма открылась, бухгалтер может не увидеть часть полей, если у него нет прав на «администрирование данных». В расширении можно также принудительно установить видимость настройки Элементы.ГруппаДополнительныеПараметры.Видимость = Истина;.
2. Фоновое выполнение: Групповое изменение объектов часто запускается в фоновом режиме. Проверьте, чтобы у профиля пользователя была роль ЗапускЗапланированныхЗаданий или аналогичная, иначе при обработке большого массива данных (более 100 объектов) система выдаст ошибку прав доступа при попытке старта фонового процесса.
3. Версионирование объектов: Прежде чем давать бухгалтеру инструмент массового исправления, настоятельно рекомендуем включить «Хранение истории изменений» для критически важных справочников. Групповая обработка не имеет кнопки «Отменить», и в случае ошибки (например, случайной замены расчетного счета у всех контрагентов сразу) восстановление данных без версионирования потребует поднятия бэкапа всей базы.
Проанализировав все способы, можно сделать вывод: для разовых задач лучше использовать штатный механизм «Изменить выделенные». Если же потребность возникает постоянно, наиболее профессиональным решением будет создание расширения с кастомной ролью и программным обходом проверки полноправности, что обеспечит корректную работу интерфейса и сохранит типовую конфигурацию в чистоте.