Работа в облачном сервисе 1С:Фреш (1cfresh.com) значительно отличается от администрирования локальных информационных баз или серверов. Одной из самых частых задач для разработчика является адаптация типового функционала под нужды клиента. В этой статье мы подробно разберем, как правильно подготовить, загрузить и успешно пройти проверку расширения для работы в облаке.
Прежде всего, проанализируем ситуацию: сервис «1С:Фреш» — это мультиарендная (multi-tenant) среда. Это означает, что на одном сервере и в одной физической базе данных могут находиться сотни и тысячи разных организаций (абонентов). Любая ошибка в коде или попытка получить доступ к файловой системе сервера может поставить под угрозу стабильность и безопасность данных всех пользователей. Именно поэтому процесс загрузки расширений жестко регламентирован.
Рассмотрим основные этапы, которые нам предстоит пройти:
Разберем по шагам настройки, которые необходимо выполнить в Конфигураторе перед выгрузкой .cfe файла. Если проигнорировать эти требования, расширение будет отклонено еще на этапе автоматической проверки.
Во-первых, выясним причину самого важного требования: Безопасный режим. Все расширения в сервисе принудительно исполняются в безопасном режиме. Однако в свойствах самого расширения в Конфигураторе необходимо снять галочку Безопасный режим. Это кажется парадоксальным, но логика сервиса такова: расширение должно заявлять о готовности работать без специальных привилегий, а сервис сам наложит на него ограничения при запуске.
Во-вторых, обратим внимание на свойство Использовать основные роли для всех пользователей. В облаке рекомендуется устанавливать это значение в Истина, чтобы избежать проблем с правами доступа при добавлении новых объектов метаданных.
Проанализируем программный код. В расширении для 1С:Фреш категорически запрещены следующие действия:
УстановитьПривилегированныйРежим(Истина). Любые манипуляции с данными должны происходить в контексте прав текущего пользователя.Файл на стороне сервера).Посмотрим на пример того, как НЕЛЬЗЯ делать на стороне сервера в облаке:
// Данный код вызовет ошибку при аудите
Текст = Новый ЗаписьТекста("C:\temp\log.txt");
Текст.ЗаписатьСтроку("Данные выгружены");
Текст.Закрыть();
Вместо этого мы должны использовать временные хранилища и передавать файлы на сторону клиента, где пользователь сможет сохранить их самостоятельно через стандартные диалоги 1С.
Если вашему расширению все же требуется выполнить действие, выходящее за рамки стандартного безопасного режима (например, обратиться к API стороннего сервиса), нам нужно подготовить список запросов разрешений. Рассмотрим, как это работает.
В расширении создается специальный макет (обычно это XML-файл), в котором описываются необходимые привилегии. Например, разрешение на установку соединения с конкретным URL-адресом. При загрузке расширения администратор сервиса или аудитор увидит эти запросы и должен будет их подтвердить.
Типичный объект для работы с внешними ресурсами, который требует разрешений — это HTTPСоединение. Без соответствующей записи в профиле безопасности попытка соединения завершится ошибкой доступа.
Выясним, как технически передать файл в систему. У пользователя с правами Администратор абонента в личном кабинете (Менеджер сервиса) есть раздел Адаптация. В этом разделе находится подраздел Расширения.
Однако здесь есть нюанс, упомянутый в обсуждении: кнопка Добавить может отсутствовать. Рассмотрим причины этой ситуации:
В большинстве случаев правильный алгоритм действий — отправить подготовленный файл вашему партнеру (франчайзи). Сотрудник партнера загрузит расширение в специализированный личный кабинет, где оно встанет в очередь на аудит.
Разберем подробнее, что происходит после загрузки. Расширение не появляется в базе мгновенно. Оно попадает на проверку к специалистам фирмы «1С». Этот процесс называется Аудит.
Срок аудита обычно составляет от нескольких часов до 2-3 рабочих дней. Эксперты проверяют:
Если в коде будут обнаружены ошибки (например, использование запрещенных методов), расширение будет отклонено. В этом случае вы получите протокол ошибок. Нам необходимо будет исправить замечания и загрузить новую версию, после чего цикл аудита повторится.
Важно помнить, что конфигурации в сервисе «1С:Фреш» обновляются очень часто и централизованно. Посмотрим на риски: если ваше расширение использует заимствованные объекты, структура которых изменилась в новом релизе «Бухгалтерии предприятия» или «УНФ», расширение может перестать работать или даже заблокировать вход в базу.
Рекомендуется использовать механизм тестовых областей во Фреше для проверки работы ваших доработок на новых версиях платформы и конфигурации до того, как обновление будет применено к рабочим базам.
Рассмотрим ситуацию с обновлением расширения: при загрузке новой версии она также должна пройти аудит. Пока новая версия проверяется, в рабочих базах продолжает функционировать старая одобренная версия. Как только аудит будет пройден, версия обновится автоматически при следующем сеансе работы пользователей.
Подведем итог. Чтобы успешно внедрить расширение во Фреш, мы должны отказаться от привычек «локальной» разработки: забыть про прямой доступ к диску, всегда проверять права пользователя и быть готовыми к тому, что наш код будет внимательно изучен сторонним экспертом. Работа через Менеджер сервиса и плотное взаимодействие с обслуживающим партнером — залог успешной публикации ваших решений в облаке.