Разработка расширений для облачного сервиса 1С:Fresh имеет ряд существенных отличий от работы с локальными информационными базами. Одной из наиболее распространенных проблем является ситуация, когда расширение успешно проходит аудит и устанавливается, но при попытке вызвать определенные функции, например, открыть форму, пользователь получает сообщение: «Нет прав для просмотра». Это происходит даже в том случае, если в локальной копии базы при отключенном безопасном режиме все работает корректно. Проанализируем причины этой проблемы и разберем пошагово, как обеспечить работоспособность расширения в строгих условиях безопасного режима.
Выясним причину такого поведения системы. В 1С:Fresh все расширения принудительно работают в безопасном режиме. Это означает, что платформа жестко контролирует права доступа и использование внешних ресурсов. Ошибка «Нет прав для просмотра» при выполнении метода ОткрытьФорму чаще всего связана с тем, что новая форма, добавленная в расширение, не включена ни в одну из ролей, назначенных пользователю в сервисе.
Рассмотрим стандартный вызов формы, который может приводить к ошибке:
ОткрытьФорму("ОбщаяФорма.ФормаДиалог",
СтруктураПараметров,
ЭтаФорма, , , ,
Новый ОписаниеОповещения("ПослеЗакрытияФормыСкидки", ЭтаФорма),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца)
Если ОбщаяФорма.ФормаДиалог является вашим новым объектом в расширении, то по умолчанию к ней нет доступа ни у кого, кроме администратора системы с полными правами. Однако в облаке 1С:Fresh права пользователей управляются через Менеджер сервиса, и даже «Владелец абонента» может быть ограничен профилями безопасности.
Для того чтобы обычный пользователь смог открыть форму из расширения, необходимо явно прописать права доступа в самом расширении. Разберем этот процесс по шагам:
БазовыеПраваПриложения или БазовыеПраваУНФ.ОбщаяФорма.ФормаДиалог).БазовыеПраваПриложения) найдите вашу форму и установите галочку напротив права «Просмотр».Важный нюанс: Не стоит заимствовать роль ПолныеПрава для этих целей. Во Фреше рядовым пользователям назначается профиль «Пользователь абонента», который не содержит полных прав. Если вы дадите права только роли ПолныеПрава, форма останется недоступной для большинства сотрудников.
Проанализируем ситуацию, когда расширение должно взаимодействовать с внешними интернет-сервисами, например, выполнять GET-запросы к udsgame.com. В безопасном режиме попытка создания HTTPСоединение без предварительного разрешения приведет к ошибке выполнения.
Посмотрим на пример кода, который требует разрешения:
Сервер = "udsgame.com";
НТТPСоединение = Новый HTTPСоединение(Сервер, , , , , 10, Новый ЗащищенноеСоединениеOpenSSL());
В отличие от дополнительных обработок, где используется функция СведенияОВнешнейОбработке, в расширениях разрешения запрашиваются декларативно. При загрузке расширения в Менеджер сервиса для прохождения аудита система автоматически сканирует код на наличие потенциально опасных операций.
Когда вы загружаете файл расширения (.cfe) в личный кабинет 1С:Fresh:
udsgame.com через протокол HTTPS и порт 443).Если мастер не предлагает добавить разрешение, убедитесь, что вы используете стандартные объекты платформы (HTTPСоединение, КопироватьФайл) и ваш код доступен для анализа. Если расширению требуется доступ к временным файлам, убедитесь, что вы используете метод ПолучитьИмяВременногоФайла(), так как прямой доступ к произвольным папкам на сервере Фреша запрещен.
Иногда ошибка прав доступа возникает из-за того, что расширение еще не прошло полноценную активацию. В сервисе 1С:Fresh существует строгий процесс аудита кода специалистами фирмы «1С». Рассмотрим статусы расширения в Менеджере сервиса:
Проанализируем также использование метода УстановитьПривилегированныйРежим(Истина). В расширениях для Фреша этот метод работает только в том случае, если это было явно разрешено при аудите и подтверждено технической необходимостью. Если ваш код пытается обойти RLS (ограничение доступа на уровне записей) через привилегированный режим без должного обоснования, аудит может отклонить расширение или оно будет работать некорректно в безопасном режиме.
Если права настроены, а ошибка сохраняется, воспользуйтесь Журналом регистрации непосредственно в приложении 1С:Fresh. В нем фиксируются детальные события отказа в доступе. Найдите запись об ошибке — там будет указано имя конкретного объекта (права на чтение таблицы, просмотр формы или выполнение команды), которого не хватает пользователю. Это позволит вам точно определить, какую роль еще нужно заимствовать и подправить в расширении.
Помните, что для УНФ 3.0 наиболее часто используемой ролью для «проброса» прав на новые объекты расширения является БазовыеПраваПриложения. Используйте её, чтобы обеспечить доступ всем пользователям, которым разрешена работа с информационной базой.