При внедрении электронного документооборота через модуль Диадок в типовых конфигурациях 1С, таких как Бухгалтерия предприятия 3.0, специалисты часто сталкиваются с неприятной ситуацией. Внешняя обработка, скачанная с официального сайта, прекрасно работает под учетной записью с полными правами, но при попытке запуска обычным бухгалтером выдает ошибку "Недостаточно прав" и немедленно закрывается. Попытки отладки могут указывать на выполнение кода в модуле объекта, например, на строке:
Если Выборка.Следующий() Тогда
// Код обработки данных
КонецЕсли;
Давайте разберем по шагам, почему это происходит, проанализируем технические причины блокировки (поможет инструмент детального анализа прав и RLS) и рассмотрим способы решения, которые позволят пользователям работать с ЭДО без предоставления им избыточных прав администратора.
Рассмотрим ситуацию с точки зрения безопасности платформы 1С. Когда пользователь пытается запустить внешнюю обработку через стандартное меню «Файл — Открыть», система запускает ее в так называемом Безопасном режиме. В этом режиме накладываются жесткие ограничения на следующие операции:
ХранилищеОбщихНастроек.Модуль Диадок активно использует внешние компоненты для работы с криптографией и API сервиса, а также сохраняет настройки авторизации в общее хранилище. Именно попытка обращения к этим ресурсам из-под обычного пользователя в безопасном режиме вызывает отказ в доступе.
Это самый правильный и эффективный способ решения проблемы. Выясним, как корректно подключить модуль, чтобы снять ограничения безопасности. Разберем алгоритм действий:
Diadoc1C_UF_... .epf.После такой регистрации пользователь сможет запускать модуль через раздел «Сервис» или «Дополнительные обработки» без ошибки прав доступа.
Проанализируем ситуацию, когда даже после регистрации в дополнительных обработках ошибка сохраняется. Это может означать, что у профиля пользователя отсутствуют права на объекты, которые использует модуль «внутри» конфигурации. Для работы с ЭДО пользователю должны быть назначены определенные роли. Для их анализа и корректировки можно использовать обработку для просмотра и изменения ролей пользователей и профилей групп доступа.
Необязательно давать права «Администратор». Рассмотрим минимально необходимый набор ролей (удобно через автоматический подбор ролей и формирование профилей), которые нужно добавить в профиль пользователя:
ХранилищеОбщихНастроек.Если в базе включено ограничение на уровне записей (RLS), убедитесь, что у пользователя есть доступ хотя бы к одной организации, по которой ведется обмен в Диадоке. Модуль при инициализации может делать выборку организаций:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Организации.Ссылка КАК Организация
|ИЗ
| Справочник.Организации КАК Организации";
Выборка = Запрос.Выполнить().Выбрать();
Если у пользователя нет прав на чтение справочника Организации или RLS настроен слишком жестко, Выборка.Следующий() может приводить к ошибкам доступа в контексте внешней обработки. Для этой задачи есть администрирование прав и подбор ролей к объектам.
Разработчики Контура часто выпускают вместе с обработкой специальное расширение конфигурации. Рассмотрим преимущества его использования:
ХранилищеОбщихНастроек, так как часть кода начинает выполняться в контексте основной конфигурации.Для установки перейдем в Администрирование — Печатные формы, отчеты и обработки — Расширения и добавим файл расширения, предварительно сняв галочку «Безопасный режим» для этого расширения.
Иногда «Недостаточно прав» — это сообщение не от 1С, а от операционной системы Windows, которое платформа транслирует пользователю. Выясним технические причины:
Подведем итог: залог успешного запуска модуля Диадок без прав администратора — это его регистрация как дополнительной обработки с отключенным безопасным режимом и наличие у пользователя прав на использование электронной подписи. Это позволяет соблюсти баланс между безопасностью системы и работоспособностью сервиса ЭДО.