Как исправить ошибку «Нет прав для просмотра» при открытии формы в расширении 1С:Fresh?

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

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

Причина возникновения ошибки в безопасном режиме

Выясним причину такого поведения системы. В 1С:Fresh все расширения принудительно работают в безопасном режиме. Это означает, что платформа жестко контролирует права доступа и использование внешних ресурсов. Ошибка «Нет прав для просмотра» при выполнении метода ОткрытьФорму чаще всего связана с тем, что новая форма, добавленная в расширение, не включена ни в одну из ролей, назначенных пользователю в сервисе.

Рассмотрим стандартный вызов формы, который может приводить к ошибке:


ОткрытьФорму("ОбщаяФорма.ФормаДиалог", 
    СтруктураПараметров, 
    ЭтаФорма, , , , 
    Новый ОписаниеОповещения("ПослеЗакрытияФормыСкидки", ЭтаФорма), 
    РежимОткрытияОкнаФормы.БлокироватьОкноВладельца)

Если ОбщаяФорма.ФормаДиалог является вашим новым объектом в расширении, то по умолчанию к ней нет доступа ни у кого, кроме администратора системы с полными правами. Однако в облаке 1С:Fresh права пользователей управляются через Менеджер сервиса, и даже «Владелец абонента» может быть ограничен профилями безопасности.

Решение 1: Заимствование ролей и назначение прав

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

  1. Найдите в основной конфигурации роль, которая отвечает за базовый доступ пользователей к системе. В современных конфигурациях (УНФ 3.0, Бухгалтерия 3.0) эта роль обычно называется БазовыеПраваПриложения или БазовыеПраваУНФ.
  2. Заимствуйте эту роль в ваше расширение.
  3. В дереве объектов расширения перейдите к вашей новой форме (например, ОбщаяФорма.ФормаДиалог).
  4. В окне редактирования прав заимствованной роли (например, БазовыеПраваПриложения) найдите вашу форму и установите галочку напротив права «Просмотр».

Важный нюанс: Не стоит заимствовать роль ПолныеПрава для этих целей. Во Фреше рядовым пользователям назначается профиль «Пользователь абонента», который не содержит полных прав. Если вы дадите права только роли ПолныеПрава, форма останется недоступной для большинства сотрудников.

Решение 2: Запрос разрешений на внешние ресурсы (API)

Проанализируем ситуацию, когда расширение должно взаимодействовать с внешними интернет-сервисами, например, выполнять GET-запросы к udsgame.com. В безопасном режиме попытка создания HTTPСоединение без предварительного разрешения приведет к ошибке выполнения.

Посмотрим на пример кода, который требует разрешения:


Сервер = "udsgame.com";
НТТPСоединение = Новый HTTPСоединение(Сервер, , , , , 10, Новый ЗащищенноеСоединениеOpenSSL());

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

Когда вы загружаете файл расширения (.cfe) в личный кабинет 1С:Fresh:

Если мастер не предлагает добавить разрешение, убедитесь, что вы используете стандартные объекты платформы (HTTPСоединение, КопироватьФайл) и ваш код доступен для анализа. Если расширению требуется доступ к временным файлам, убедитесь, что вы используете метод ПолучитьИмяВременногоФайла(), так как прямой доступ к произвольным папкам на сервере Фреша запрещен.

Решение 3: Проверка статуса аудита

Иногда ошибка прав доступа возникает из-за того, что расширение еще не прошло полноценную активацию. В сервисе 1С:Fresh существует строгий процесс аудита кода специалистами фирмы «1С». Рассмотрим статусы расширения в Менеджере сервиса:

Проанализируем также использование метода УстановитьПривилегированныйРежим(Истина). В расширениях для Фреша этот метод работает только в том случае, если это было явно разрешено при аудите и подтверждено технической необходимостью. Если ваш код пытается обойти RLS (ограничение доступа на уровне записей) через привилегированный режим без должного обоснования, аудит может отклонить расширение или оно будет работать некорректно в безопасном режиме.

Рекомендации по отладке

Если права настроены, а ошибка сохраняется, воспользуйтесь Журналом регистрации непосредственно в приложении 1С:Fresh. В нем фиксируются детальные события отказа в доступе. Найдите запись об ошибке — там будет указано имя конкретного объекта (права на чтение таблицы, просмотр формы или выполнение команды), которого не хватает пользователю. Это позволит вам точно определить, какую роль еще нужно заимствовать и подправить в расширении.

Помните, что для УНФ 3.0 наиболее часто используемой ролью для «проброса» прав на новые объекты расширения является БазовыеПраваПриложения. Используйте её, чтобы обеспечить доступ всем пользователям, которым разрешена работа с информационной базой.

← На главную