В этой статье даны советы о том, как быстро пройти аудит расширения, дополнительного отчета или обработки, каковы наиболее распространенные ошибки при их подготовке.
Содержание
1. Основные причины отказа для дополнительных отчетов и обработок
2. Основные причины отказа для расширений конфигурации
3. Использование безопасного режима
4. Вопросы производительности
5. Универсальные обработки и расширения
6. Использование временных файлов
7. Прочие вопросы
1. Основные причины отказа для дополнительных отчетов и обработок
90% дополнительных отчетов и обработок не проходят аудит по следующим причинам:
- Не заполнена справочная информация.
- Неправильное подключение дополнительного отчета/обработки к БСП.
- Дополнительный отчет или обработка не предназначены для выполнения в безопасном режиме.
- Дополнительный отчет или обработка не подготовлены к использованию в сервисе.
- Неверное обращение к дополнительному отчету/обработке из кода.
1.1. Справочная информация дополнительного отчета и обработки
Справочная информация дополнительного отчета и обработки необходима:
-
Для пользователя дополнительного отчета и обработки. В частности, в справочной информации должны быть указаны:
- все ограничения дополнительного отчета/обработки, например, работа только в тонком клиенте;
- порядок заполнения реквизитов, использования команд дополнительного отчета/обработки.
-
Для аудитора дополнительного отчета и обработки:
- без подробно заполненной справочной информации аудитору будет труднее разобраться в дополнительном отчете/обработке, поэтому аудит будет выполняться дольше;
- дополнительные отчеты и обработки бывают очень большими и сложными, и тогда без подробного и тщательного описания деталей реализации их аудит будет затруднен.
Пожалуйста, отнеситесь к справочной информации дополнительного отчета и обработки, как к проектному документу. Из нее должно быть понятно отличие от штатного функционала и детали реализации.
Частые формулировки отказа:
- Не заполнена справочная информация обработки.
- Справочная информация обработки заполнена формально.
1.2. Подключение дополнительного отчета/обработки к БСП
Регистрация дополнительного отчета или обработки в информационной базе происходит на основании параметров регистрации, которые поставляет отчет/обработка. Эти параметры регистрации должны формироваться в виде структуры как результат выполнения функции СведенияОВнешнейОбработке модуля отчета/обработки:

Параметры регистрации включают таблицу команд, поставляемых дополнительным отчетом (дополнительной обработкой):
- для глобальных дополнительных отчетов/обработок эти команды размещаются в глобальном командном интерфейсе;
- для назначаемых дополнительных отчетов/обработок эти команды размещаются в контексте тех объектов, для которых они предназначаются, при этом в параметрах регистрации дополнительного отчета/обработки должны быть указаны объекты назначения (массив строк имен объектов метаданных).
Вид дополнительного отчета/обработки, тип использования поставляемых команд должен соответствовать замыслу дополнительного отчета/обработки.
1.3. Обращение к дополнительному отчету/обработке из кода
Следует учесть, что нельзя обращаться к дополнительному отчету/обработке по имени, например:
ВнешняяОбработка.ПерепроведениеДокументовПоследовательно
Дополнительный отчет/обработка подключается информационной базе с другим именем (уникальным идентификатором). Поэтому для формирования обращения к дополнительному отчету/обработке следует в обработчике ПриСозданииНаСервере определить полное имя подключенного отчета/обработки следующим образом:
ПолноеИмяОбъекта = РеквизитФормыВЗначение("Объект").Метаданные().ПолноеИмя();
И далее обращаться к дополнительному отчету/обработке следующим образом:
ПолноеИмяОбъекта + ".ПерепроведениеДокументов"
2. Основные причины отказа для расширений конфигурации
Большинство расширений конфигурации не проходят аудит по следующим причинам:
- Расширение не предназначено для выполнения в безопасном режиме.
- Расширение не подготовлено к использованию в сервисе.
- Не задана версия расширения
2.1. Особенности расширений конфигурации
- У расширения должны быть заданы уникальное имя и версия расширения.
- Разработка должна выполняться на той же версии платформы.
- Необходима адаптация к безопасному режиму и режиму разделения данных.
3. Использование безопасного режима
Все расширения конфигурации, дополнительные отчеты/обработки выполняются в сервисе в безопасном режиме. Запрещенные операции:
- Выполнение методов Выполнить() и Вычислить()
- Привилегированный режим
- Работа с внешними компонентами
- Работа с файловой системой, кроме временных файлов
- COM-объекты (серверный код может выполняться на Linux, мы не можем гарантировать наличие COM-объектов на сервере)
- Доступ к Интернету
Частые формулировки отказа:
- К сожалению, в сервисе пока не используются профили безопасности. А без использования профилей в безопасном режиме обработка неработоспособна…
- УстановитьПривилегированныйРежим(Истина) в безопасном режиме не имеет смысла.
3.1. Рекомендации по использованию безопасного режима
- Учтите, что небезопасные операции запрещены только на сервере!
- Используйте механизм расширения безопасного режима БСП и сценарным выполнением дополнительных отчетов и обработок (см. примеры по ссылке).
- Опишите используемые расширения безопасного режима в свойствах расширения, параметрах регистрации дополнительного отчета/обработки.
- При отладке дополнительного отчета или обработки открывайте его не через главное меню: Файл — Открыть, а через интерфейс подсистемы дополнительных отчетов и обработок БСП. Открывайте и проверяйте обработку не c правами администратора, а с набором прав тех пользователей, которые будут использовать обработку.
4. Вопросы производительности
Расширения конфигурации, дополнительные отчеты и обработки не должны вызывать деградацию производительности сервиса. Поэтому используемые запросы на встроенном языке должны быть оптимально построены и соответствовать стандартам.
Особое внимание следует уделить оптимизации:
- cоединений с виртуальными таблицами, подзапросами (они могут привести к значительному замедлению запроса);
- отборов с «ИЛИ»;
- запросов с получением данных через точку от полей составного ссылочного типа (при выполнении такого запроса будет выполняться соединение со всеми таблицами объектов, входящими в составной тип).
Частые формулировки отказа:
При написании расширения конфигурации, дополнительного отчета и обработки необходимо избегать кода, выполнение которого может привести к неоправданно повышенному потреблению процессорного времени. В первую очередь это касается «пустых» циклов:

5. Универсальные обработки и расширения
Следует избегать универсальных расширений конфигурации, дополнительных обработок, особенно если они могут изменять данные пользователей. Следует создавать расширения и обработки, направленные на решение конкретных задач. Универсальные расширения и обработки опасны по следующим причинам:
- для их использования может быть необходим высокий уровень квалификации пользователей, а его гарантировать невозможно;
- пользователь может изменить реквизиты служебных объектов или объектов, которые он не собирался менять;
- возможно нарушение бизнес-логики прикладного решения.
Частые формулировки отказа:
- Мы не можем разрешить использование универсальных обработок, так как их применение предполагает высокий уровень квалификации пользователей, а гарантировать эту квалификацию невозможно.
6. Использование временных файлов
При доступе к временным файлам необходимо следовать требованиям стандартов, описанным по ссылке. В частности, неправильно писать:
ТемпФайл = "/tmp/temx.txt"
Правильно:
ТемпФайл = ПолучитьИмяВременногоФайла("txt")
При этом:
- гарантируется уникальность имени временного файла;
- выполняется автоматическая очистка при рестарте рабочего процесса.
Также необходимо обеспечить удаление временных файлов после использования.
Частые формулировки отказа:
- Для получения имени временного файла необходимо использовать метод ПолучитьИмяВременногоФайла();
- Необходимо удалять временные файлы после использования.
7. Прочие вопросы
При разработке расширений конфигурации, дополнительных отчетов и обработок необходимо учитывать следующие требования.
- Длительные операции необходимо выполнять в фоновом режиме (подробнее см. по ссылке).
- Если пользовательские данные покидают сервис, то пользователь должен дать на это согласие.
-
Не должна нарушаться штатная логика работы прикладных решений (конфигураций). Не следует отключать штатные механизмы и проверки, например с помощью конструкций вида:
ОбменДанными.Загрузка = Истина
- Не следует скрывать от пользователя системную информацию об ошибках, полученную в операторе Попытка — Исключение. Без этой информации службе поддержки сервиса будет значительно труднее разбираться в причинах возникновения ошибки.