Как пройти аудит внешнего отчета в 1С:Фреш и исправить ошибку интерфейса БСП

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

При переходе на облачный сервис 1С:Фреш (1C:Fresh) с базой «Бухгалтерия предприятия 3.0» (или любой другой конфигурацией) разработчики и администраторы часто сталкиваются с проблемой: при добавлении привычного внешнего отчета система блокирует его с ошибкой. Сообщение обычно выглядит так: «Аудит не пройден по причине: 1. Не используется программный интерфейс подсистемы "Дополнительные отчеты и обработки" БСП...». Проанализируем ситуацию и разберем по шагам, как правильно адаптировать ваш код для успешного прохождения аудита.

Почему 1С:Фреш блокирует внешние отчеты?

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

Добавляем функцию регистрации в модуль объекта

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

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


#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда

Функция СведенияОВнешнейОбработке() Экспорт
    СведенияОбОбработке = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки);
    СведенияОбОбработке.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет;
    СведенияОбОбработке.Наименование = "Сводный отчет по продажам";
    СведенияОбОбработке.Версия = "1.0.0.1";
    
    Возврат СведенияОбОбработке;
КонецФункции

#КонецЕсли

В этом примере мы используем метод СтандартныеПодсистемыСервер.ВерсияБиблиотеки, что позволяет динамически передавать актуальную версию БСП в параметры регистрации. Это обезопасит отчет от ошибок версионирования при проверке аудитором.

Пример кода для внешней печатной формы

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


#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда

Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("3.1.4.79");
    ПараметрыРегистрации.Информация = НСтр("ru = 'Обработка формирования печатной формы документа Счет на оплату покупателю.'");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма;
    ПараметрыРегистрации.Версия = "1.0";
    
    // Указываем, к какому документу привязывается печатная форма
    ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплатуПокупателю");

    // Добавляем команду печати в интерфейс
    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = НСтр("ru = 'Счет на оплату (внешняя печатная форма)'");
    Команда.Идентификатор = "Счет";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода;
    Команда.ПоказыватьОповещение = Истина;
    Команда.Модификатор = "ПечатьMXL";
    
    Возврат ПараметрыРегистрации;
КонецФункции

#КонецЕсли

Дополнительные требования аудита 1С:Фреш

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

  1. Запрет синхронных вызовов. В облаке строго запрещены модальные окна. Вместо функций Предупреждение, Вопрос или ВвестиЗначение обязательно используйте их асинхронные аналоги: ПоказатьПредупреждение и ПоказатьВопрос. Автоматический аудит мгновенно блокирует код с синхронными вызовами.
  2. Оптимизация запросов. Аудиторы пристально следят за тем, чтобы ваш код не перегружал сервер. Категорически запрещено использовать запросы в циклах. Если вы формируете выборки огромного объема или используете виртуальные таблицы без отборов (параметров), отчет вернут на доработку. Для повышения производительности используйте временные таблицы.
  3. Работа в безопасном режиме. Во Фреше нельзя напрямую обращаться к файловой системе сервера, реестру Windows или COM-компонентам. Все операции должны идти через разрешенные методы БСП. Если вам нужен доступ к стороннему API или FTP-серверу, запрашивайте разрешения через объект РаботаВБезопасномРежиме.РазрешениеНаИспользованиеВнешнегоРесурса.
  4. Использование схемы компоновки данных (СКД). Старайтесь делать отчеты на базе СКД. Если вы вручную собираете таблицу через обход выборки и вывод областей в табличный документ, вероятность непрохождения проверки возрастает. Также выводите все отборы и параметры стандартными настройками СКД, избегая самописных форм без крайней необходимости.
  5. Исключение опасных функций. В коде не должно быть функций Выполнить и Вычислить. Они позволяют обойти встроенную защиту платформы, поэтому их наличие — это гарантированный провал аудита. Также обращайте внимание на внутреннее имя объекта в конфигураторе: оно должно быть осмысленным (например, ОтчетПоПродажам, а не Тест1).

Совет: перед тем как отправить готовый файл в 1С:Фреш, рекомендуем проверить его с помощью инструмента «1С:Автоматизированная проверка конфигураций» (АПК) или встроенного механизма проверки в конфигураторе с профилем БСП. Это поможет выявить большинство недочетов и исправить их до начала облачного аудита.

← На главную