Публикация дополнительных отчетов и обработок в облачном сервисе 1С:Фреш (1cfs.ru) существенно отличается от работы в локальных информационных базах. Главная сложность заключается в строгом соблюдении протоколов безопасности. Рассмотрим ситуацию, когда ваша обработка должна обращаться к стороннему API или работать с файловой системой, находясь в безопасном режиме. Проанализируем причины возникновения ошибок при подготовке манифеста и разберем корректные способы декларирования разрешений.
Для того чтобы облачная система позволила обработке выполнить «опасное» действие (например, соединение с сервером в интернете), это действие должно быть явно описано в функции СведенияОВнешнейОбработке. Проанализируем стандартную структуру этой функции с учетом требований Библиотеки стандартных подсистем (БСП).
В начале формирования структуры параметров регистрации крайне важно указать версию БСП, на базе которой разработана конфигурация. Это часто становится причиной ошибок при проверке обработки автоматизированными средствами Фреша. Выясним, как правильно инициализировать структуру разрешений.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка;
ПараметрыРегистрации.Наименование = "Импорт данных из внешнего сервиса";
ПараметрыРегистрации.Версия = "1.1";
ПараметрыРегистрации.БезопасныйРежим = Истина; // Обязательно для Фреш
// Ключевой параметр для работы в модели сервиса
ПараметрыРегистрации.Вставить("ВерсияБСП", "3.1.5.155");
ПараметрыРегистрации.Разрешения = Новый Массив;
// Добавление разрешения на интернет-ресурс
Протокол = "HTTPS";
Адрес = "api.service.com";
Порт = 443;
Описание = "Получение данных о транзакциях через API";
РазрешениеИнтернета = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса(Протокол, Адрес, Порт, Описание);
ПараметрыРегистрации.Разрешения.Добавить(РазрешениеИнтернета);
Возврат ПараметрыРегистрации;
КонецФункции
Обратим внимание на метод РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса. Он возвращает объект ОбъектXDTO, который система использует для формирования профиля безопасности. Если этот массив оставить пустым, любая попытка сетевого соединения в коде приведет к исключению «Работа с интернет-ресурсами запрещена».
Часто программисты сталкиваются с ошибкой «Несоответствие типов XDTO» при использовании обработки «Подготовка дополнительных отчетов и обработок к публикации в модели сервиса». Проанализируем ситуацию: это происходит из-за конфликта версий пакетов XDTO ApplicationPermissions в вашей базе и в самой обработке подготовки.
Если ваша конфигурация (например, ЗУП 3.1 или ERP) использует более новую версию БСП, пакеты разрешений могут иметь версию 1.0.0.2, в то время как старая версия обработки подготовки ожидает 1.0.0.1. Рассмотрим пути решения:
ПараметрыРегистрации.Вставить("ВерсияБСП", "..."); помогает механизмам платформы правильно интерпретировать типы XDTO.Разберем типичную ошибку: попытку запросить разрешение на каталог вида C:\12. В облаке 1С:Фреш ваша обработка выполняется на сервере приложений под управлением операционной системы (часто Linux), где нет диска C:. Более того, доступ к произвольным папкам сервера пользователям запрещен из соображений безопасности.
Посмотрим, как правильно организовать работу с файлами:
РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина). Это позволит вашей обработке читать и писать данные во временную директорию сеанса.ПоместитьФайлНаСервер, а затем обрабатывать на сервере. Для этого специальные серверные разрешения XDTO не требуются.РазрешениеНаИспользованиеКаталогаПрограммы, если требуется доступ к ресурсам внутри установленного дистрибутива, но для внешних обработок это редко применимо.Пример добавления разрешения на временные файлы:
РазрешениеФайлы = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина);
ПараметрыРегистрации.Разрешения.Добавить(РазрешениеФайлы);
Даже если технически разрешения прописаны верно, каждая обработка во Фреше проходит ручной аудит специалистами 1С. Рассмотрим правила, которые помогут избежать отклонения заявки:
potok.digital. Использование IP-адресов считается небезопасным и блокируется аудиторами.HTTPS. Если ваш ресурс поддерживает только HTTP, будьте готовы предоставить детальное обоснование, почему передача данных в открытом виде допустима.Описание в методе создания разрешения должно содержать понятный текст, объясняющий, зачем нужен этот доступ (например, «Загрузка справочника БИК с сайта ЦБ»).Если вы разрабатываете не обработку, а расширение конфигурации, например, для добавления в документы новых табличных частей, механизм предоставления разрешений меняется. Рассмотрим основные отличия:
В расширениях разрешения не прописываются внутри кода модуля. Вместо этого при загрузке расширения в личном кабинете Фреша администратор системы видит список запрашиваемых ресурсов. Если расширение обращается к внешнему сайту, адрес этого сайта должен быть предварительно одобрен и внесен в белый список профилей безопасности информационной базы. При установке расширения откроется специальное окно мастера, где нужно будет подтвердить предоставление прав на каждый ресурс по шагам.
Важный момент для расширений: если вам требуется выполнять регламентные задания (фоновые процессы) по расписанию, помните, что в облаке они работают в жестко ограниченных условиях. Процедуры должны быть объявлены в серверных модулях и иметь статус Экспорт.
Проанализируем требования к самому коду обработки. Безопасный режим Истина накладывает ограничения на использование некоторых функций встроенного языка:
Выполнить() и конструкции Вычислить().УстановитьПривилегированныйРежим(Истина)) внутри кода обработки. Если вам нужны данные, доступные только в привилегированном режиме, используйте типовые механизмы БСП или API конфигурации.Соблюдение этих правил и корректное заполнение структуры Разрешения в СведенияОВнешнейОбработке гарантирует успешную публикацию вашего решения в сервисе 1С:Фреш.