MDRUGB

1C облако. Рекомендации по подготовке расширений конфигурации, дополнительных отчетов и обработок

Руководство разработчика / Владельцам аккаунтов в 1С Cloud / 1C облако. Рекомендации по подготовке расширений конфигурации, дополнительных отчетов и обработок

1C облако. Рекомендации по подготовке расширений конфигурации, дополнительных отчетов и обработок

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

Содержание

1. Рекомендации по подготовке расширений конфигурации

2. Рекомендации по подготовке дополнительных отчетов и обработок

3. Как использовать методы, запрещенные в безопасном режиме

4. Вопросы производительности

5. Универсальные обработки и расширения

6. Использование временных файлов

7. Прочие вопросы



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. Запрос разрешений для дополнительных отчетов и обработок

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

  1. Запрашивайте в функции СведенияОВнешнейОбработке дополнительного отчета или обработки нужные разрешения с помощью вызовов функций:
    • <big>РаботаВБезопасномРежиме.РазрешениеНаИспользованиеВнешнейКомпоненты</big>
    • <big>РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса</big>
    Описания указанных выше функций см. по ссылке. Пример использования вызовов этих функций показан в обработке _ДемоЗагрузкаНоменклатурыИзПрайсЛистаПрофилиБезопасности из Демонстрационной конфигурации «Библиотека стандартных подсистем».
  2. В функции СведенияОВнешнейОбработке дополнительного отчета или обработки указывайте режим работы дополнительного отчета или обработки Безопасный.



4. Вопросы производительности

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

Особое внимание следует уделить оптимизации:

  • соединений с виртуальными таблицами, подзапросами (они могут привести к значительному замедлению запроса);
  • отборов с «ИЛИ»;
  • запросов с получением данных через точку от полей составного ссылочного типа (при выполнении такого запроса будет выполняться соединение со всеми таблицами объектов, входящими в составной тип).

Частые формулировки отказа:

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



5. Универсальные обработки и расширения

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

  • для их использования может быть необходим высокий уровень квалификации пользователей, а его гарантировать невозможно;
  • пользователь может изменить реквизиты служебных объектов или объектов, которые он не собирался менять;
  • возможно нарушение бизнес-логики прикладного решения.

Частые формулировки отказа:

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



6. Использование временных файлов

При доступе к временным файлам необходимо следовать требованиям стандартов, описанным по ссылке. В частности, неправильно писать:

<big>ТемпФайл = "/tmp/temx.txt"</big>Правильно:

<big>ТемпФайл = ПолучитьИмяВременногоФайла("txt")</big>При этом:

  • гарантируется уникальность имени временного файла;
  • выполняется автоматическая очистка при рестарте рабочего процесса.

Также необходимо обеспечить удаление временных файлов после использования.

Частые формулировки отказа:

  • Для получения имени временного файла необходимо использовать метод ПолучитьИмяВременногоФайла();
  • Необходимо удалять временные файлы после использования.



7. Прочие вопросы

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

  1. Длительные операции необходимо выполнять в фоновом режиме (подробнее см. здесь и здесь).
  2. Если пользовательские данные покидают сервис, то пользователь должен дать на это согласие.
  3. Не должна нарушаться штатная логика работы прикладных решений (конфигураций). Не следует отключать штатные механизмы и проверки, например с помощью конструкций вида: <big>ОбменДанными.Загрузка = Истина</big>
  4. Не следует скрывать от пользователя системную информацию об ошибках, полученную в операторе Попытка'Исключение. Без этой информации службе поддержки сервиса будет значительно труднее разбираться в причинах возникновения ошибки.
Изменено: 23.09.2024 12:35