Требования к расширениям конфигурации

Требования к расширениям конфигурации

В статье описаны требования к расширениям конфигурации для размещения в 42Clouds. Соблюдение требований проверяется специалистами 42Clouds во время аудита.


1. Общие требования

1.1 Расширения конфигурации создаются на локальном компьютере разработчика с помощью конфигуратора «1С:Предприятие 8» и сохраняются в файл с расширением имени cfe.

1.2 Расширение конфигурации необходимо разрабатывать:

  • в соответствии с требованиями, приведенными в документации по «1С:Предприятию 8»: «Руководство разработчика», глава «Расширение конфигурации» ссылке
  • с соблюдением стандартов и методик разработки конфигураций для технологической платформы «1С:Предприятие 8», с которыми можно ознакомиться по ссылке

1.3 Расширение должно содержать автотесты полностью проверяющие основные функциональные возможности расширения
( Скачать Шаблон расширения, CFE, 30.6 КБ )
Должны выполняться следующие условия:

  • Автотестирование расширений должно запускаться через API (http-сервис с методом, вызываемым по адресу: <адрес публикации>/hs/<префикс расширения>+AutoTest/Execute) . Если расширение не содержит серверных методов для тестирования, то метод должен возвращать положительный результат тестирования.
  • Если при тестировании нужны параметры, то значения параметров по умолчанию задаются программно в автотесте.

1.4 При использовании расширения должна выполняться проверка доступности ресурсов сервиса для пользователя с помощью методов общего модуля CTSM_Efsol_Платформа: УслугаСервисаПодключена или ПолучитьИнформациюДляПартнераОСостоянииСервиса ( Скачать Шаблон расширения, CFE, 30.6 КБ )

1.5 Расширение не должно выполнять расширение данных (как расширения реквизитов типовых объектов конфигурации, так и собственных объектов. (Последние версии платформы позволяют это сделать, но работа баз с такими решениями нестабильна)

1.6 Расширение не должно изменять типовые формы объектов конфигурации. Допускается только программное изменение после проверки подключенных услуг. Т.к. расширение на нашей платформе работает как сервис, то устанавливается сразу для всех пользователей, т.е. на всю базу данных, а не в конкретную область. Поэтому если изменять формы напрямую, то изменения будут доступны сразу всем пользователям, без проверки, подключена услуга или нет.


2. Использование безопасного режима

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

3. Использование форм

  1. Если расширение конфигурации содержит формы, разработчик должен обеспечить их работоспособность в веб-клиенте под всеми веб-браузерами, которые поддерживаются технологической платформой «1С:Предприятие 8». (Исключением могут быть расширения конфигурации, предназначенные только для использования в тонком клиенте.)
  2. Расширение конфигурации не должно использовать модальные формы
  3. Расширение конфигурации не должно использовать синхронные клиентские вызовы

4. Требования для проведения аудита

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

  • поставлять модули без исходных текстов или с установленным паролем на модуль
  • использовать средства запутывания (обфускации) исходных текстов

5. Требования к ресурсоемкости

Расширение конфигурации не должно приводить к чрезмерной нагрузке на компоненты сервиса или клиентское приложение.

6. Требования к работоспособности

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

7. Требования к передаче данных за пределы сервиса

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

8. Юридические требования

Расширение конфигурации не должно содержать:

  1. Кода, который может повлечь несанкционированное уничтожение, блокирование, модификацию или неправомерное копирование компьютерной информации
  2. Кода, который может дестабилизировать работоспособность сервиса
  3. Кода и данных, которые могут нарушать права третьих лиц, в том числе их авторское право
  4. Охраняемые законом сведения, в том числе коммерческую тайну или персональные данные третьих лиц

9. Требования к тестированию

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

  1. Развернуть сервер «1С:Предприятия 8» той же версии, которая используется в сервисе
  2. Развернуть клиент-серверную информационную базу той конфигурации, для которой предназначено расширение конфигурации, и той версии конфигурации, которая используется в сервисе
  3. Выполнить веб-публикацию этой информационной базы (кроме случая, когда расширение конфигурации предназначено только для работы в тонком клиенте)
  4. Для каждого профиля пользователя, под которым в модели сервиса будет выполняться расширение конфигурации, необходимо создать в информационной базе пользователя с таким же набором ролей, но без роли АдминистраторСистемы (эта роль при работе в модели сервиса у обычных, т. е. разделенных, пользователей недопустима)

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

10. Методические рекомендации

10.1. Рекомендации по разработке

  1. При разработке расширения конфигурации рекомендуется применять версию платформы «1С:Предприятие 8» и версию конфигурации прикладного решения, используемые в сервисе
  2. Используйте программный интерфейс БСП и прикладных конфигураций. При этом вам не придется переписывать код расширения конфигурации каждый раз после обновления типовых конфигураций
  3. Если расширение конфигурации содержит формы, «выдерживайте» их в стиле конфигурации, для которой разработано расширение. Например, если в конфигурации принято команду «Записать и закрыть» располагать в верхней части формы, не размещайте ее в нижней части формы расширения конфигурации
  4. В расширении конфигурации не должно быть неиспользуемых элементов (программного кода, макетов, форм)
  5. Не «перегружайте» расширение конфигурации. По возможности, придерживайтесь минимализма: чем больше объектов и кода, тем больше вероятность ошибок
  6. Имена расширений конфигурации должны быть уникальными. Присваивайте расширениям конфигурации имена, которые не совпадут с именами, которые могут использовать другие разработчики расширений конфигурации
  7. Соблюдайте стандарты разработки (см. по ссылке)

10.2. О копировании кода из типовой конфигурации

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

10.3. Работа с базой данных

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

10.4. Работа в веб-клиенте

  1. Если действия на сервере могут выполняться продолжительное время, используйте механизм длительных операций БСП. В противном случае приложение может закрыться по ошибке таймаута веб-сервера
  2. Если расширение конфигурации могут использоваться при работе в веб-клиенте, то все ключевые возможности расширения конфигурации должны быть доступны пользователям без использования расширения работы с файлами

10.5. О безопасности данных пользователя

  1. Не предоставляйте конечному пользователю такие расширения конфигурации, с помощью которых он сможет испортить данные в своем приложении. Примеры:
    • универсальные «перенумераторы» и «перепрефиксаторы»
    • поиск и замена значений
    • универсальные редакторы значений реквизита
    • удаление помеченных объектов без контроля ссылочной целостности
  2. Желательно четко ограничивать функциональность расширений конфигурации, которые меняют данные пользователя. Например, если пользователю нужно перенумеровать кассовые документы, сделайте расширение конфигурации, которая будет делать именно это, без лишней универсальности
Комментарии для сайта Cackle