1C облако. Рекомендации по подготовке расширений конфигурации, дополнительных отчетов и обработок
Руководство разработчика / Владельцам аккаунтов в 1С Cloud / 1C облако. Рекомендации по подготовке расширений конфигурации, дополнительных отчетов и обработок1C облако. Рекомендации по подготовке расширений конфигурации, дополнительных отчетов и обработок
В этой статье даны советы о том, как следует подготавливать расширения конфигурации, дополнительные отчеты и обработки для работы в сервисе, чтобы обеспечить их надлежащее качество и чтобы они могли быстро пройти аудит.
Содержание
1. Рекомендации по подготовке расширений конфигурации
2. Рекомендации по подготовке дополнительных отчетов и обработок
3. Как использовать методы, запрещенные в безопасном режиме
5. Универсальные обработки и расширения
6. Использование временных файлов
1. Рекомендации по подготовке расширений конфигурации
1.1. Основные причины отказа
В расширениях конфигурации, не прошедших аудит, в большинстве случаев обнаруживается, что:
- Расширение не предназначено для выполнения в безопасном режиме.
- Расширение не подготовлено к использованию в сервисе.
- Не задана версия расширения.
- Расширение конфигурации, расширяющие данные, используется в конфигурациях, которые пока не поддерживают такую возможность.
1.2. Особенности расширений конфигурации
- У расширения должны быть заданы уникальное имя и версия расширения.
- Разработка должна выполняться на той же версии платформы.
- Необходима адаптация к безопасному режиму и режиму разделения данных.
1.3. Полезная информация
- Необходимо выполнять требования, указанные в Руководстве разработчика «1С:Предприятия 8.3»: глава «Расширение конфигурации» (см. по ссылке).
- Если расширение содержит формы, разработчик должен обеспечить их работоспособность в веб-клиенте под всеми веб-браузерами, поддерживаемыми технологической платформой «1С:Предприятие 8».
2. Рекомендации по подготовке дополнительных отчетов и обработок
2.1. Основные причины отказа
В дополнительных отчетах и обработках, не прошедших аудит, в большинстве случаев обнаруживается, что:
- Дополнительный отчет или обработка неправильно подключены к БСП.
- Дополнительный отчет или обработка не предназначены для выполнения в безопасном режиме.
- Дополнительный отчет или обработка не подготовлены к использованию в сервисе.
- Имеется неверное обращение к дополнительному отчету/обработке из кода.
2.2. Подключение дополнительного отчета/обработки к БСП
Регистрация дополнительного отчета или обработки в информационной базе происходит на основании параметров регистрации, которые поставляет отчет/обработка. Эти параметры регистрации должны формироваться в виде структуры как результат выполнения функции СведенияОВнешнейОбработке модуля отчета/обработки:
Описание полей структуры параметров регистрации приведено в документации БСП по ссылке.
Параметры регистрации включают таблицу команд, поставляемых дополнительным отчетом (дополнительной обработкой):
- для глобальных дополнительных отчетов/обработок эти команды размещаются в глобальном командном интерфейсе;
- для назначаемых дополнительных отчетов/обработок эти команды размещаются в контексте тех объектов, для которых они предназначаются, при этом в параметрах регистрации дополнительного отчета/обработки должны быть указаны объекты назначения (массив строк имен объектов метаданных).
Вид дополнительного отчета/обработки, тип использования поставляемых команд должен соответствовать замыслу дополнительного отчета/обработки.
2.3. Обращение к дополнительному отчету/обработке из кода
Следует учесть, что нельзя обращаться к дополнительному отчету/обработке по имени, например:
<big>ВнешняяОбработка.ПерепроведениеДокументовПоследовательно</big>
Дополнительный отчет/обработка подключается информационной базе с другим именем (уникальным идентификатором). Поэтому для формирования обращения к дополнительному отчету/обработке следует в обработчике ПриСозданииНаСервере определить полное имя подключенного отчета/обработки следующим образом:
<big>ПолноеИмяОбъекта = РеквизитФормыВЗначение("Объект").Метаданные().ПолноеИмя();</big>
И далее обращаться к дополнительному отчету/обработке следующим образом:
<big>ПолноеИмяОбъекта + ".ПерепроведениеДокументов"</big>
2.4. Отладка дополнительного отчета/обработки
При отладке дополнительного отчета или обработки открывайте его не через главное меню: Файл — Открыть, а через интерфейс подсистемы дополнительных отчетов и обработок БСП.
Открывайте и проверяйте обработку не c правами администратора, а с набором прав тех пользователей, которые будут использовать обработку.
3. Как использовать методы, запрещенные в безопасном режиме
3.1. Безопасный режим
Все расширения конфигурации, дополнительные отчеты/обработки выполняются в сервисе в безопасном режиме с использованием профилей безопасности.
В безопасном режиме запрещены следующие операции:
- Выполнение методов Выполнить() и Вычислить()
- Привилегированный режим
- Работа с внешними компонентами
- Работа с файловой системой, кроме временных файлов
- Работа с приложениями операционной системы
- COM-объекты (серверный код может выполняться на Linux, мы не можем гарантировать наличие COM-объектов на сервере)
- Доступ к Интернету и др.
Подробнее о безопасном режиме можно прочесть в документации по «1С:Предприятию» по ссылке.
3.2. Профили безопасности
Некоторые действия, запрещенные в безопасном режиме, могут быть разрешены с помощью профилей безопасности.
Профиль безопасности — это набор явно заданных разрешений на выполнение определенных действий, который можно назначать информационным базам, расширениям конфигурации, дополнительным отчетам и обработкам. Профили безопасности хранятся в кластере серверов «1С:Предприятия».
Профили безопасности автоматически формируются (при необходимости) для расширений конфигурации, дополнительных отчетов и обработок, загружаемых в сервис:
- для расширений конфигурации — на основании запросов разрешений на выполнение небезопасных действий, указанных при загрузке расширения в сервис, а также результатов автоматической проверки расширения конфигурации;
- для дополнительных отчетов и обработок конфигурации — на основании запросов разрешений на выполнение небезопасных действий, указанных в функции СведенияОВнешнейОбработке дополнительного отчета или обработки.
Подробнее о профилях безопасности можно прочесть в документации по «1С:Предприятию» по ссылке и в разделах Профили безопасности глав «Настройка и использование подсистем при разработке конфигурации» и «Программный интерфейс» документации Библиотеки стандартных подсистем (БСП), см. здесь и здесь.
3.3. Какие небезопасные методы можно, и какие нельзя использовать
В расширениях конфигурации, дополнительных отчетах и обработках, предназначенных для использования в сервисе e-Cont.md, можно использовать следующие небезопасные операции:
- доступ к каталогу временных файлов (на чтение и/или на запись);
- доступ к интернет-ресурсам;
- привилегированный режим;
- доступ к внешним компонентам, входящим в состав конфигурации, для которой разработаны расширение конфигурации, дополнительный отчет или обработка.
Запрещается использовать:
- доступ к файловой системе (кроме доступа к каталогу временных файлов);
- доступ к COM-объектам (поскольку серверный код может выполняться на Linux, мы не можем гарантировать наличие COM-объектов на сервере);
- доступ к внешним компонентам, не входящим в состав конфигурации, для которой разработаны расширение конфигурации, дополнительный отчет или обработка;
- приложения операционной системы;
- средства криптографии на стороне сервера.
Учтите, что небезопасные операции запрещены только на сервере!
3.4. Запрос разрешений для расширений конфигурации
Если в расширении конфигурации используются операции, не разрешенные в безопасном режиме, то при загрузке версии расширения в сервис необходимо указать необходимые разрешения на выполнение небезопасных операций (подробнее см. в статье по ссылке):
Разрешения на доступ к внешним компонентам, входящим в состав конфигурации, запрашивать не надо, они будут предоставлены автоматически.
3.5. Запрос разрешений для дополнительных отчетов и обработок
При необходимости использования в дополнительном отчете или обработке операций, не разрешенных в безопасном режиме:
- Запрашивайте в функции СведенияОВнешнейОбработке дополнительного отчета или обработки нужные разрешения с помощью вызовов функций:
<big>РаботаВБезопасномРежиме.РазрешениеНаИспользованиеВнешнейКомпоненты</big>
<big>РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса</big>
- В функции СведенияОВнешнейОбработке дополнительного отчета или обработки указывайте режим работы дополнительного отчета или обработки Безопасный.
4. Вопросы производительности
Расширения конфигурации, дополнительные отчеты и обработки не должны вызывать деградацию производительности сервиса. Поэтому используемые запросы на встроенном языке должны быть оптимально построены и соответствовать стандартам (подробнее см. здесь и здесь). Типичные причины неоптимальной работы запросов и методы оптимизации запросов рассмотрены в статье 1С:ИТС по ссылке.
Особое внимание следует уделить оптимизации:
- соединений с виртуальными таблицами, подзапросами (они могут привести к значительному замедлению запроса);
- отборов с «ИЛИ»;
- запросов с получением данных через точку от полей составного ссылочного типа (при выполнении такого запроса будет выполняться соединение со всеми таблицами объектов, входящими в составной тип).
Частые формулировки отказа:
- Запрос построен неоптимально.
- Необходимо руководствоваться рекомендациями https://its.1c.ru/db/metod8dev/content/5842/hdoc.
При написании расширения конфигурации, дополнительного отчета и обработки необходимо избегать кода, выполнение которого может привести к неоправданно повышенному потреблению процессорного времени. В первую очередь это касается «пустых» циклов:
5. Универсальные обработки и расширения
Следует избегать универсальных расширений конфигурации, дополнительных обработок, особенно если они могут изменять данные пользователей. Следует создавать расширения и обработки, направленные на решение конкретных задач. Универсальные расширения и обработки опасны по следующим причинам:
- для их использования может быть необходим высокий уровень квалификации пользователей, а его гарантировать невозможно;
- пользователь может изменить реквизиты служебных объектов или объектов, которые он не собирался менять;
- возможно нарушение бизнес-логики прикладного решения.
Частые формулировки отказа:
- Мы не можем разрешить использование универсальных обработок, так как их применение предполагает высокий уровень квалификации пользователей, а гарантировать эту квалификацию невозможно.
6. Использование временных файлов
При доступе к временным файлам необходимо следовать требованиям стандартов, описанным по ссылке. В частности, неправильно писать:
<big>ТемпФайл = "/tmp/temx.txt"</big>
Правильно:
<big>ТемпФайл = ПолучитьИмяВременногоФайла("txt")</big>
При этом:
- гарантируется уникальность имени временного файла;
- выполняется автоматическая очистка при рестарте рабочего процесса.
Также необходимо обеспечить удаление временных файлов после использования.
Частые формулировки отказа:
- Для получения имени временного файла необходимо использовать метод ПолучитьИмяВременногоФайла();
- Необходимо удалять временные файлы после использования.
7. Прочие вопросы
При разработке расширений конфигурации, дополнительных отчетов и обработок необходимо учитывать следующие требования.
- Длительные операции необходимо выполнять в фоновом режиме (подробнее см. здесь и здесь).
- Если пользовательские данные покидают сервис, то пользователь должен дать на это согласие.
- Не должна нарушаться штатная логика работы прикладных решений (конфигураций). Не следует отключать штатные механизмы и проверки, например с помощью конструкций вида:
<big>ОбменДанными.Загрузка = Истина</big>
- Не следует скрывать от пользователя системную информацию об ошибках, полученную в операторе Попытка' — Исключение. Без этой информации службе поддержки сервиса будет значительно труднее разбираться в причинах возникновения ошибки.