Как устранить ошибки аудита 1С:Фреш при работе с файлами и интернет-ресурсами на сервере

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

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

Почему возникают ошибки безопасности в 1С:Фреш

Облачная среда работает в безопасном режиме. Это означает, что любой код, исполняемый на стороне сервера, ограничен в правах. Система безопасности блокирует прямые вызовы функций, которые могут нанести вред серверу или привести к утечке данных. Разберем две основные категории блокировок:

  1. Работа с файловой системой: Прямой доступ к дискам сервера (например, C:\Temp) запрещен. Методы типа НайтиФайлы() или КопироватьФайл() на сервере вызывают немедленную ошибку аудита.
  2. Интернет-ресурсы: Произвольные HTTP-соединения заблокированы. Сервер не «знает», безопасен ли адрес, к которому обращается расширение, поэтому требует явного декларирования разрешений.

Решение 1: Программный запрос разрешений через БСП

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

Разрешения не добавляются в произвольное место кода. Они должны быть собраны в массив и переданы системе в специальном обработчике. Обычно это делается в модуле объекта расширения или в общем модуле, который отвечает за интеграцию с БСП. Рассмотрим пример регистрации разрешения на использование интернет-ресурса.

Выясним причину, по которой нам нужно соединение, и подготовим код:


// В соответствующем обработчике (например, ПриОпределенииНастроекБезопасногоРежима)
Протокол = "HTTPS";
Адрес = "api.service.ru";
Порт = 443;
Описание = "Синхронизация данных с личным кабинетом службы доставки";

Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса(Протокол, Адрес, Порт, Описание);
МассивРазрешений.Добавить(Разрешение);

Важно помнить: при указании адреса нельзя использовать маски (звездочки). Нужно указывать конкретный домен. Если ваше расширение обращается к десяти разным поддоменам, каждый из них должен быть описан отдельно.

Работа с временными файлами на сервере

Если коду требуется создать файл для временной обработки (например, сформировать XML перед отправкой), нельзя использовать жестко прописанные пути. Разберем правильный алгоритм работы с файлами:

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

Посмотрим на пример формирования такого разрешения:


Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина, "Обработка промежуточных данных импорта");
МассивРазрешений.Добавить(Разрешение);

Здесь параметры Истина, Истина означают разрешение на чтение и запись соответственно.

Решение 2: Перенос операций на сторону клиента

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

Вместо выполнения операций на сервере, используйте директиву &НаКлиенте. На клиентской стороне (в браузере или тонком клиенте) действуют права текущего пользователя операционной системы, и строгие серверные ограничения 1С:Фреш на них не распространяются.

Рассмотрим пример правильной логики:

Использование функций-оберток БСП

Для минимизации ошибок рекомендуется использовать стандартные методы БСП вместо платформенных вызовов. Например, вместо прямого создания HTTPСоединение, лучше использовать ОбщегоНазначения.HTTPСоединение(). Рассмотрим преимущества этого подхода:

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

Процесс активации разрешений в Менеджере сервиса

Просто написать код недостаточно. После того как вы добавили запросы разрешений в расширение и загрузили его в личный кабинет 1С:Фреш, необходимо выполнить административные действия. Разберем их по шагам:

  1. Перейдите в Менеджер сервиса (личный кабинет).
  2. Откройте карточку вашего расширения.
  3. Найдите и нажмите кнопку «Запросить разрешения». В этот момент система просканирует ваш код на наличие вызовов РаботаВБезопасномРежиме.
  4. Проверьте список появившихся разрешений. Если список пуст, значит, код вызова разрешений написан некорректно или не в том модуле.
  5. Нажмите «Продолжить» или «Сохранить». Только после этого статус расширения изменится, и оно будет передано на ручной аудит специалистам фирмы 1С.

Важные нюансы и привилегированный режим

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

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

Подводя итог, можно сказать, что «победить» аудит Фреша можно только через дисциплинированное использование механизмов БСП и отказ от прямых манипуляций с серверными ресурсами. Старайтесь максимально использовать ВременноеХранилище и объекты ДвоичныеДанные для обмена информацией между клиентом и сервером.

← На главную