Как подключить внешнюю компоненту во внешней обработке в безопасном режиме 1С:Фреш?

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

При разработке и прохождении аудита дополнительных обработок для сервиса 1С:Предприятие 8 через Интернет (1С:Фреш) обязательным условием является выполнение кода в безопасном режиме. Разберем ситуацию: при попытке вызвать метод ПодключитьВнешнююКомпоненту на стороне сервера для загрузки компоненты из макета платформа блокирует операцию из соображений безопасности. Проанализируем причину этой проблемы и рассмотрим проверенные способы решения данной задачи.

Выясним причину проблемы

Платформа 1С:Предприятие в безопасном режиме ограничивает вызовы программного кода, потенциально опасного для сервера приложений (включая работу с COM-объектами, внешними компонентами Native API и прямое обращение к файловой системе сервера). Если внешняя обработка запускается в контексте 1С:Фреш, прямой вызов метода ПодключитьВнешнююКомпоненту("ОбщийМакет...", ...) на сервере приводит к ошибке прав доступа.

Для корректного подключения внешних библиотек и генерации графических объектов (например, штрихкодов или QR-кодов) в облачном сервисе разберем по шагам основные подходы.

Способ 1. Перенос подключения и обработки на сторону клиента

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

  1. Выполним метод ПодключитьВнешнююКомпоненту в процедуре с директивой НаКлиенте.
  2. Сформируем картинку штрихкода в клиентском контексте.
  3. Передадим полученные двоичные данные или объект Картинка на сервер для вставки в табличный документ печатной формы.

Посмотрим на пример кода подключения компоненты на клиенте:


&НаКлиенте
Процедура СформироватьШтрихкодНаКлиенте()
    
    РезультатПодключения = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
    Если РезультатПодключения Тогда
        Генератор = Новый("КомпонентаПечатиШтрихкодов.КартинкаШтрихкода");
        // Выполнение операций с компонентой на клиенте
    КонецЕсли;

КонецПроцедуры

Способ 2. Запрос разрешений в функции СведенияОВнешнейОбработке (БСП)

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

Проанализируем пример функции СведенияОВнешнейОбработке() объекта внешней обработки, в которой объявляется запрос необходимых разрешений:


Функция СведенияОВнешнейОбработке() Экспорт

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

КонецФункции

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

Способ 3. Использование встроенной подсистемы «Внешние компоненты»

В типовых конфигурациях 1С (УТ, БП, ERP, УНФ), поставляемых в сервисе 1С:Фреш, часто уже интегрированы необходимые библиотеки. Вместо платформенного метода рекомендуем использовать программный интерфейс БСП:

Альтернативные решения без внешних компонент

Если использование внешних библиотек вызывает сложности при аудите в 1С:Фреш, рассмотрим варианты генерации штрихкодов средствами самого встроенного языка:

  1. Формирование картинки штрихкода (SVG / PNG) на 1С: реализация алгоритма формирования DataMatrix, QR-кода или EAN-13 программным кодом на языке 1С с сохранением результата в объект Картинка.
  2. Использование штрихкодовых шрифтов: вывод значения в ячейку табличного документа с применением специализированных шрифтов (например, Code128 или EAN13).
← На главную