При работе в сложных конфигурациях, таких как 1С:ERP. Управление холдингом или 1С:ERP Управление предприятием, администраторы часто сталкиваются с ситуацией: пользователю назначены стандартные роли для работы с файлами, он видит список присоединенных документов, но кнопка «Добавить» или «Загрузить с диска» остается недоступной. Рассмотрим подробно, почему так происходит, и разберем по шагам все уровни настройки прав доступа — от базовых ролей до глубоких механизмов RLS — для упрощения этой задачи есть автоматический подбор ролей и профилей доступа для 1С.
Прежде всего, проанализируем стандартный набор прав. Библиотека стандартных подсистем (БСП), на которой построена 1С:ERP, требует наличия специфических ролей для взаимодействия с файловым хранилищем — в этом поможет обработка для анализа и сравнения прав доступа пользователей. Выясним, назначены ли пользователю следующие роли:
Файлы.Однако, как показывает практика, этих ролей достаточно только для работы в разделе «Файлы» (аналог общего диска). Для того чтобы прикреплять файлы к конкретным объектам (например, к справочнику ДоговорыКонтрагентов), требуются дополнительные разрешения.
Важно понимать архитектуру хранения: в 1С файлы не хранятся в одной «куче». Для каждого типа объектов существует свой выделенный справочник присоединенных файлов. Проанализируем ситуацию на примере договоров:
Справочник.ДоговорыКонтрагентовПрисоединенныеФайлы.Совет: Если вы создали свои роли, обязательно выполните анализ прав доступа на объект с постфиксом ...ПрисоединенныеФайлы и проставьте в них галочки «Добавление» и «Изменение» — для этого пригодится автоматический подбор ролей и создание профилей доступа.
Если роли настроены верно, но кнопка добавления всё равно не появляется, причина чаще всего кроется в механизме RLS (Record Level Security). В современных версиях 1С:ERP используется «Производительный» режим ограничения доступа, который опирается на предварительно рассчитанные данные в специальных регистрах. Разберем, как исправить ситуацию, если эти данные стали неактуальными:
Выясним, включена ли у вас опция «Ограничивать доступ на уровне записей универсально». Если да, то система использует регистр сведений КлючиДоступаНаборовГруппДоступа. Иногда записи в нем не обновляются автоматически. Рассмотрим алгоритм «встряски» системы:
Заполнение данных для ограничения доступа вручную через консоль заданий.В некоторых случаях система требует явного указания прав внутри самого интерфейса программы. Проанализируем настройки папок:
Даже если на уровне ролей всё разрешено, в самой базе может быть настроено ограничение прав на конкретные папки. Зайдите в справочник «Файлы», выберите нужную папку (или корень) и через контекстное меню проверьте «Права доступа». Убедитесь, что для группы доступа пользователя установлены флаги «Чтение», «Добавление» и «Изменение».
Если в вашей базе файлы хранятся не в информационной базе, а в томах на диске, проблема может быть на уровне операционной системы. Рассмотрим технический нюанс:
При попытке добавить файл, процесс выполняется на стороне сервера 1С. Следовательно, учетная запись, под которой запущен кластер серверов 1С (обычно USR1CV8), должна иметь полные права (чтение, запись, изменение) на сетевую папку, где расположены тома. Если у сервера нет прав на создание файла в папке ОС, пользователь в интерфейсе 1С получит сообщение об ошибке доступа, которое легко спутать с нехваткой прав внутри конфигурации.
Если ситуация критическая и стандартные методы настройки не помогают (например, из-за сложной логики расширений или специфических доработок), программисты прибегают к использованию привилегированного режима для выполнения кода записи файла. Посмотрим на пример того, как это может быть реализовано в коде модуля:
// Пример вызова процедуры записи файла в привилегированном режиме
&НаСервере
Процедура ДобавитьФайлПринудительно(ПараметрыФайла)
УстановитьПривилегированныйРежим(Истина);
// Логика создания записи в справочнике ПрисоединенныеФайлы
НовыйФайл = Справочники.ДоговорыКонтрагентовПрисоединенныеФайлы.СоздатьЭлемент();
НовыйФайл.ВладелецФайла = ПараметрыФайла.Договор;
НовыйФайл.Наименование = ПараметрыФайла.ИмяФайла;
// ... заполнение остальных реквизитов ...
НовыйФайл.Записать();
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
Важно: Использование УстановитьПривилегированныйРежим(Истина) — это крайняя мера. Старайтесь сначала максимально использовать типовые механизмы профилей групп доступа и корректную настройку RLS.
Напоследок проанализируем состояние самого договора. В 1С:ERP статус документа может блокировать любые изменения подчиненных сущностей:
Подводя итог, можно сказать, что решение проблемы доступа к файлам — это всегда комплексная проверка: от простых галочек в профиле пользователя до актуализации регистров ключей доступа и проверки прав серверной службы на дисковые ресурсы.