При разработке и прохождении аудита дополнительных обработок для сервиса 1С:Предприятие 8 через Интернет (1С:Фреш) обязательным условием является выполнение кода в безопасном режиме. Разберем ситуацию: при попытке вызвать метод ПодключитьВнешнююКомпоненту на стороне сервера для загрузки компоненты из макета платформа блокирует операцию из соображений безопасности. Проанализируем причину этой проблемы и рассмотрим проверенные способы решения данной задачи.
Платформа 1С:Предприятие в безопасном режиме ограничивает вызовы программного кода, потенциально опасного для сервера приложений (включая работу с COM-объектами, внешними компонентами Native API и прямое обращение к файловой системе сервера). Если внешняя обработка запускается в контексте 1С:Фреш, прямой вызов метода ПодключитьВнешнююКомпоненту("ОбщийМакет...", ...) на сервере приводит к ошибке прав доступа.
Для корректного подключения внешних библиотек и генерации графических объектов (например, штрихкодов или QR-кодов) в облачном сервисе разберем по шагам основные подходы.
Ограничения безопасного режима сервера не блокируют загрузку внешней компоненты на стороне клиентского приложения. Рассмотрим порядок действий при таком подходе:
ПодключитьВнешнююКомпоненту в процедуре с директивой НаКлиенте.Картинка на сервер для вставки в табличный документ печатной формы.Посмотрим на пример кода подключения компоненты на клиенте:
&НаКлиенте
Процедура СформироватьШтрихкодНаКлиенте()
РезультатПодключения = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
Если РезультатПодключения Тогда
Генератор = Новый("КомпонентаПечатиШтрихкодов.КартинкаШтрихкода");
// Выполнение операций с компонентой на клиенте
КонецЕсли;
КонецПроцедуры
Если логика работы требует использования подсистемы библиотеки стандартных подсистем (БСП) в облачной базе, затребуем явное разрешение на использование внешней компоненты через профили безопасности.
Проанализируем пример функции СведенияОВнешнейОбработке() объекта внешней обработки, в которой объявляется запрос необходимых разрешений:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.БезопасныйРежим = Истина;
// Запрос разрешения на использование внешней компоненты из макета
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеВнешнейКомпоненты(
"ОбщийМакет.КомпонентаПечатиШтрихкодов"
);
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
Возврат ПараметрыРегистрации;
КонецФункции
При прохождении аудита и загрузке файла в сервис 1С:Фреш администраторы подтвердят предоставление данного разрешения, что позволит обработке выполнять подключение компоненты в рамках профиля безопасности.
В типовых конфигурациях 1С (УТ, БП, ERP, УНФ), поставляемых в сервисе 1С:Фреш, часто уже интегрированы необходимые библиотеки. Вместо платформенного метода рекомендуем использовать программный интерфейс БСП:
ВнешниеКомпонентыКлиент или ВнешниеКомпонентыСервер служат для корректного и безопасного подключения зарегистрированных компонент из справочника.Если использование внешних библиотек вызывает сложности при аудите в 1С:Фреш, рассмотрим варианты генерации штрихкодов средствами самого встроенного языка:
Картинка.