При переходе на облачный сервис 1С:Фреш (1C:Fresh) с базой «Бухгалтерия предприятия 3.0» (или любой другой конфигурацией) разработчики и администраторы часто сталкиваются с проблемой: при добавлении привычного внешнего отчета система блокирует его с ошибкой. Сообщение обычно выглядит так: «Аудит не пройден по причине: 1. Не используется программный интерфейс подсистемы "Дополнительные отчеты и обработки" БСП...». Проанализируем ситуацию и разберем по шагам, как правильно адаптировать ваш код для успешного прохождения аудита.
В отличие от локальной (файловой или серверной) базы, облачная инфраструктура 1С:Фреш предъявляет максимально жесткие требования к безопасности, производительности и стабильности. Сервис запрещает прямое выполнение произвольного кода, который может нарушить работу облака. Именно поэтому все отчеты и обработки должны взаимодействовать с системой исключительно через Библиотеку стандартных подсистем (БСП). Если проигнорировать использование программного интерфейса БСП, существует высокий риск, что отчет полностью перестанет работать при следующем обновлении конфигурации платформой.
Рассмотрим подробнее основное решение нашей проблемы. Чтобы облако корректно распознало и зарегистрировало внешний отчет, в модуле объекта необходимо прописать специальную экспортную функцию СведенияОВнешнейОбработке. Важнейшее правило: весь программный код модуля объекта должен быть обрамлен инструкциями препроцессора.
Посмотрим на готовый пример кода, который необходимо разместить в модуле вашего дополнительного отчета:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
Функция СведенияОВнешнейОбработке() Экспорт
СведенияОбОбработке = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки);
СведенияОбОбработке.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет;
СведенияОбОбработке.Наименование = "Сводный отчет по продажам";
СведенияОбОбработке.Версия = "1.0.0.1";
Возврат СведенияОбОбработке;
КонецФункции
#КонецЕсли
В этом примере мы используем метод СтандартныеПодсистемыСервер.ВерсияБиблиотеки, что позволяет динамически передавать актуальную версию БСП в параметры регистрации. Это обезопасит отчет от ошибок версионирования при проверке аудитором.
Если вам нужно загрузить не просто отчет, а внешнюю печатную форму, структура возвращаемых параметров будет немного сложнее, так как потребуется описать команды вызова. Разберем по шагам пример кода для печатной формы счета на оплату:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("3.1.4.79");
ПараметрыРегистрации.Информация = НСтр("ru = 'Обработка формирования печатной формы документа Счет на оплату покупателю.'");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма;
ПараметрыРегистрации.Версия = "1.0";
// Указываем, к какому документу привязывается печатная форма
ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплатуПокупателю");
// Добавляем команду печати в интерфейс
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = 'Счет на оплату (внешняя печатная форма)'");
Команда.Идентификатор = "Счет";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода;
Команда.ПоказыватьОповещение = Истина;
Команда.Модификатор = "ПечатьMXL";
Возврат ПараметрыРегистрации;
КонецФункции
#КонецЕсли
Вставка функции регистрации — это лишь первый шаг. Выясним причину других частых отказов и рассмотрим дополнительные правила, соблюдение которых гарантирует успешное прохождение аудита:
Предупреждение, Вопрос или ВвестиЗначение обязательно используйте их асинхронные аналоги: ПоказатьПредупреждение и ПоказатьВопрос. Автоматический аудит мгновенно блокирует код с синхронными вызовами.РаботаВБезопасномРежиме.РазрешениеНаИспользованиеВнешнегоРесурса.Выполнить и Вычислить. Они позволяют обойти встроенную защиту платформы, поэтому их наличие — это гарантированный провал аудита. Также обращайте внимание на внутреннее имя объекта в конфигураторе: оно должно быть осмысленным (например, ОтчетПоПродажам, а не Тест1).Совет: перед тем как отправить готовый файл в 1С:Фреш, рекомендуем проверить его с помощью инструмента «1С:Автоматизированная проверка конфигураций» (АПК) или встроенного механизма проверки в конфигураторе с профилем БСП. Это поможет выявить большинство недочетов и исправить их до начала облачного аудита.