При работе в комплексных конфигурациях на платформе «1С:Предприятие 8.3» (таких как «1С:Комплексная автоматизация» или «1С:ERP Управление предприятием») администраторы и разработчики часто сталкиваются с ситуацией, когда пользователю с типовыми правами (например, Бухгалтер или Казначей) требуется выполнить поиск и слияние дублирующихся элементов справочников. Однако нужная обработка отсутствует в интерфейсе, и её невозможно найти даже через глобальный поиск системы.
В этой статье мы подробно разберем, почему возникает эта проблема, как устроена система защиты прав в Библиотеке стандартных подсистем (БСП) и какие существуют безопасные и эффективные способы предоставить пользователю возможность очистки базы от дублирующихся данных.
Для того чтобы понять, почему пользователь не видит обработку ПоискИУдалениеДублей, проанализируем архитектуру прав доступа в современных конфигурациях 1С. Здесь действует жесткое разделение на уровне интерфейса и на уровне программного кода.
Уровень 1. Ограничение командного интерфейса (видимость подсистем)
В типовых конфигурациях команда вызова обработки «Поиск и удаление дублей» расположена в подсистеме НСИ и администрирование, далее в группе Обслуживание и подразделе Корректировка данных. У типовых ролей, таких как «Бухгалтер» или «Казначей», полностью отсутствуют права на чтение и просмотр подсистемы администрирования. В результате платформа автоматически скрывает все команды, принадлежащие этой подсистеме. Пользователь физически не может увидеть кнопку вызова обработки в меню программы.
Уровень 2. Программная проверка прав в коде БСП
Многие разработчики пытаются решить проблему «в лоб»: создают новую роль, дают права на чтение, просмотр и использование объекта Обработка.ПоискИУдалениеДублей, включают эту роль в профиль пользователя, но обработка все равно выдает ошибку доступа. Почему так происходит?
Дело в том, что в Библиотеке стандартных подсистем, на базе которой построена «1С:Комплексная автоматизация», внедрена дополнительная программная проверка прав. При открытии формы обработки срабатывает код, проверяющий наличие у текущего пользователя административных полномочий. Типовой механизм БСП проверяет роль ПолныеПрава или вызывает специализированную функцию:
// Пример программной проверки в модуле БСП
Если Не Пользователи.ЭтоАдминистратор() Тогда
ВызватьИсключение НСтр("ru = 'Недостаточно прав для выполнения операции. Обратитесь к администратору системы.'");
КонецЕсли;
Даже если вы настроите права на уровне метаданных, программный код заблокирует выполнение обработки для любого пользователя без полных прав. 1С накладывает такие жесткие ограничения не случайно: замена ссылок — это критически опасная операция. Она обходит бизнес-логику проведения документов, игнорирует ограничения RLS (доступ на уровне записей) и может привести к нарушению транзакционной целостности базы данных, если у пользователя нет прав на изменение всех затрагиваемых объектов.
---
Прежде чем переходить к изменению конфигурации или прав, выполним простую диагностику с помощью навигационной ссылки. Это позволит нам точно определить, где именно срабатывает ограничение — на уровне интерфейса или на уровне программного кода формы.
Разберем этот процесс по шагам:
e1cib/app/Обработка.ПоискИУдалениеДублей.Результаты теста:
---
В зависимости от требований безопасности и регламентов вашей компании, выберите один из трех вариантов решения.
Если перед бухгалтером стоит точечная задача — объединить несколько конкретных дублей в справочнике (например, два одинаковых контрагента или две номенклатурные позиции), давать полные права или дорабатывать систему не требуется.
В платформу 1С и БСП встроен удобный инструмент слияния непосредственно из списков справочников:
Этот способ абсолютно безопасен, так как система выполняет замену в рамках прав текущего пользователя и проверяет доступность всех связанных документов.
Если дублей много и требуется использовать полнофункциональный поиск по правилам, наиболее методологически верным решением будет временное назначение пользователю профиля Администратор.
Администратор предоставляет права на время проведения чистки базы данных, контролирует процесс удаления дублей, а после завершения операции возвращает пользователю его стандартные права («Бухгалтер» / «Казначей»). Это исключает риски случайного повреждения данных в будущем.
Если бизнес-процесс требует, чтобы рядовой бухгалтер на постоянной основе занимался поиском дублей без получения административных прав, можно обойти проверку БСП с помощью механизма дополнительных обработок.
Проанализируем алгоритм создания такой обработки:
Обработка.ПоискИУдалениеДублей..epf.ПриСозданииНаСервере).
// Было:
// Если Не Пользователи.ЭтоАдминистратор() Тогда
// Отказ = Истина;
// КонецЕсли;
// Стало:
// Проверка прав отключена для предоставления доступа бухгалтерам
Важное предупреждение: При использовании Варианта 3 убедитесь, что у пользователя достаточно прав на запись тех документов, в которых программа будет менять ссылки. Если обработка попытается заменить контрагента в закрытом периоде или в документе организации, к которой у бухгалтера нет доступа по RLS, система выдаст ошибку транзакции, и замена не будет выполнена.