Как разрешить добавление файлов к документу в 1С:ERP 2.4, если у пользователя права только на просмотр?

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

В типовых конфигурациях на базе 1С:Предприятие 8.3, таких как 1С:ERP Управление предприятием 2.4, администраторы часто сталкиваются с задачей: позволить пользователям прикреплять сканы или документы к объектам, которые они не имеют права редактировать. Рассмотрим ситуацию, когда у сотрудника есть доступ к документу (например, «Заказ клиента» или «Приобретение товаров и услуг») только на чтение, но бизнес-процесс требует, чтобы он мог добавить к нему файл.

Стандартная логика Библиотеки стандартных подсистем (БСП), на которой построена ЕРП, накладывает жесткое ограничение: если основной объект закрыт для редактирования, то и добавление связанных с ним данных (присоединенных файлов) блокируется. Разберем подробно, почему так происходит и как это можно обойти.

Анализ механизма наследования прав в 1С:ERP

Проанализируем техническую сторону вопроса. В системе 1С:ERP права на присоединенные файлы не существуют изолированно. Они жестко связаны с правами на объект-владелец. Технически каждый присоединенный файл — это запись в отдельном справочнике (например, ЗаказКлиентаПрисоединенныеФайлы). Однако при записи этой карточки система проверяет право Изменение для самого ЗаказКлиента.

Это сделано для обеспечения целостности данных: с точки зрения архитектуры БСП, добавление файла — это изменение состояния связей основного документа. Если у пользователя стоит роль только на «Чтение», стандартный интерфейс просто не позволит вызвать команду добавления или заблокирует кнопку записи в форме файла.

Шаг 1. Проверка стандартных ролей и профилей

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

  1. Работа с папками и файлами: базовая роль, дающая доступ к общим механизмам хранения.
  2. Добавление и изменение присоединенных файлов: специализированная роль, которая позволяет редактировать справочники файлов.

Если эти роли добавлены, а кнопка «Добавить» всё равно неактивна при открытии документа в режиме «Только просмотр», значит, вступает в силу ограничение по правам владельца. В типовой конфигурации 1С:ERP 2.4 (без доработок) разделение прав «Документ только на чтение, а файлы — на запись» штатными средствами прав доступа (через профили) реализовать невозможно.

Шаг 2. Использование расширения для обхода ограничений

Как было предложено в обсуждении на форуме, наиболее корректным способом решения задачи является создание расширения конфигурации. Разберем по шагам, как это реализовать программно.

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

Создадим расширение и добавим в него процедуру-обработчик ПриЧтенииНаСервере для формы списка присоединенных файлов. Нам нужно принудительно установить свойство ТолькоПросмотр = Ложь для элементов управления добавлением файлов.


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

Шаг 3. Обработка записи файла в привилегированном режиме

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

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


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

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

Шаг 4. Влияние даты запрета редактирования

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

Чтобы разрешить добавление файлов в закрытые периоды, в коде расширения (в процедурах проверки даты запрета) необходимо прописать исключение. Обычно это делается в общем модуле ДатыЗапретаИзменения или через переопределение функции УстановитьПроверкуДатыЗапрета. Мы должны указать системе, что для справочников типа *ПрисоединенныеФайлы проверка даты запрета владельца не должна блокировать создание новых записей.

Шаг 5. Настройка прав на уровне операционной системы (Тома хранения)

Если в вашей базе файлы хранятся не в самой информационной базе, а в томах на диске (в сетевых папках), права в 1С — это только половина дела. Рассмотрим ситуацию, когда пользователю в 1С всё разрешено, но при попытке добавить файл возникает системная ошибка доступа.

Проверьте следующие настройки:

  1. Учетная запись, под которой запущен сервер 1С:Предприятия, должна иметь полные права на сетевую папку (тома хранения).
  2. Если используется авторизация пользователя (редко для томов), то сам пользователь должен иметь права «Запись» и «Изменение» в соответствующем каталоге Windows/Linux.

Шаг 6. Альтернативный вариант через внешнюю обработку

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

Такая обработка может:

Этот метод хорош тем, что он не меняет типовые формы и работает «рядом» со стандартным функционалом, обходя проверки прав интерфейса.

Резюме и рекомендации

Мы проанализировали ситуацию и выяснили, что в 1С:ERP 2.4 добавление файлов к документам «Только для чтения» ограничено на уровне ядра БСП. Для решения этой задачи мы рекомендуем следующий план действий:

  1. Убедитесь, что пользователю назначены роли для работы с файлами.
  2. Создайте расширение конфигурации, которое будет разблокировать кнопки управления файлами в формах (ПриЧтенииНаСервере).
  3. При необходимости добавьте программную запись файлов в привилегированном режиме.
  4. Если работа ведется в закрытых периодах, настройте исключения для даты запрета редактирования в расширении.

Такой комплексный подход позволит гибко настроить права доступа, сохранив при этом безопасность и целостность данных в системе 1С:ERP.

← На главную