Как ограничить или запретить добавление прикрепленных файлов в 1С:ERP 2

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

Приветствуем вас! В процессе администрирования и тонкой настройки прав доступа в крупных корпоративных системах на базе 1С:Предприятие (таких как 1С:ERP Управление предприятием 2 или 1С:Комплексная автоматизация) администраторы часто сталкиваются со следующей задачей: необходимо запретить определенным пользователям добавлять новые файлы к документам, сохранив за ними право просматривать уже прикрепленные вложения.

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

Почему стандартная роль не работает? Разбор архитектуры БСП

Давайте выясним причину, по которой привычные методы настройки прав дают сбой. В конфигурациях, построенных на БСП, подсистема работы с файлами разделена на два независимых контура:

Согласно официальной концепции разработчиков фирмы «1С», управление доступом к присоединенным файлам жестко связано с правами на сам объект-владелец (документ или справочник). Если у пользователя есть роль на изменение самого документа, система автоматически предоставляет ему полные права на добавление, редактирование и удаление файлов в подчиненном справочнике присоединенных файлов. Выделить право «только на просмотр» прикрепленных файлов стандартными ролями «из коробки» невозможно.

Тем не менее, решить эту задачу можно несколькими способами. Рассмотрим их подробнее.

Вариант 1. Визуальное скрытие элементов интерфейса (без программирования)

Если конфигурацию изменять нельзя, а использовать механизмы расширения нет возможности, можно применить временную административную меру — скрыть элементы управления интерфейса для нужных пользователей:

  1. Откроем форму документа (например, «Заказ клиента») под учетной записью пользователя, которому нужно ограничить доступ.
  2. В правом верхнем углу формы нажмем кнопку «Еще» и выберем пункт «Изменить форму».
  3. В дереве элементов формы найдем гиперссылку или кнопку перехода к присоединенным файлам (скрепку).
  4. Снимем флажок видимости с этого элемента и применим настройки.
  5. Через панель администрирования (раздел «Настройки пользователей и прав» -> «Копирование настроек») скопируем эту настройку формы другим пользователям или группам пользователей.

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

Вариант 2. Блокировка добавления файлов на уровне СУБД (через расширение)

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

Давайте разберем этот процесс по шагам:

  1. В конфигураторе перейдем в меню Конфигурация -> Расширения конфигурации и создадим новое расширение.
  2. В расширении создадим собственную роль, например РазрешеноДобавлениеФайлов. Эту роль мы назначим тем пользователям, у которых должно остаться право прикреплять файлы.
  3. Добавим в расширение справочник присоединенных файлов нужного нам объекта (например, справочник ЗаказКлиентаПрисоединенныеФайлы).
  4. В расширении переопределим обработчик события ПередЗаписью для этого справочника.

Рассмотрим пример кода, который необходимо прописать в модуле объекта присоединенного файла в расширении:


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

Этот способ гарантирует 100% защиту. Даже если пользователь попытается загрузить файл программно или путем перетаскивания (Drag-and-Drop) в форму, транзакция записи будет отменена на уровне платформы.

Вариант 3. Программное отключение элементов управления в форме списка файлов

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

В БСП за вывод списка файлов отвечает общая форма ПрисоединенныеФайлы, а перехватить ее создание можно через общий переопределяемый модуль БСП. Выполним следующие действия:

  1. Добавим в наше расширение общий модуль РаботаСФайламиПереопределяемый.
  2. Перехватим процедуру ПриСозданииФормыСпискаФайлов.
  3. Вставим программную проверку роли текущего пользователя и отключим доступность элементов управления формой.

Рассмотрим пример реализации кода в расширении общего модуля:


&После("ПриСозданииФормыСпискаФайлов")
Процедура Расш1_ПриСозданииФормыСпискаФайлов(Форма)
    
    // Проверяем наличие ограничивающей роли или отсутствие разрешающей
    Если Не РольДоступна("РазрешеноДобавлениеФайлов") Тогда
        
        // Устанавливаем режим "Только просмотр" для всей формы списка файлов
        Форма.ТолькоПросмотр = Истина;
        
        // Дополнительно деактивируем элементы управления добавлением файлов
        Если Форма.Элементы.Найти("ГруппаКомандФайлы") <> Неопределено Тогда
            Форма.Элементы.ГруппаКомандФайлы.Доступность = Ложь;
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры

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

Резюме

Мы проанализировали особенности работы с правами доступа к прикрепленным файлам в 1С:ERP 2. Подводя итоги, дадим несколько рекомендаций:

← На главную