Заметки из Зазеркалья

05.10.2018

Развитие механизма расширений конфигурации

Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.

Реализовано в версии 8.3.14.1565.

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

Добавление собственных параметров сеанса и значений перечислений

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

Теперь мы добавили такую возможность. Собственные параметры сеанса становятся доступны при первом вызове события УстановкаПараметровСеанса(), и вы можете использовать их в ограничениях доступа.

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

Например, вы заимствовали перечисление и добавили в него собственное значение Отменен.

001.png

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

Если после этого вы деактивируете расширение, то собственные значения останутся в базе данных, но не будут показаны в пользовательском режиме. Вместо этого будет выведена надпись <Объект из отключенного расширения конфигурации>.

003.png

Также эти значения не будут доступны вам из встроенного языка:

002.png

При последующем подключении расширения собственные значения расширения будут восстановлены.

004.png

Комментарии к объектам в расширении

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

005.png

Добавленное нами свойство Комментарий никак не используется платформой в процессе применения расширения ни для контроля, ни для изменения одноимённого свойства расширяемого объекта. Оно предназначено исключительно для вас, для того, чтобы вы могли сохранять какие-то заметки к изменяемым и добавляемым объектам.

Ослабление контроля обработчиков событий при применении расширения

Раньше при расширении модулей количество параметров обработчика события в расширении и в расширяемом модуле должно было быть одинаковым. Платформа контролировала это соответствие и не применяла расширение метода, если количество параметров отличалось.

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

Раньше это приводило к тому, что расширение не применялось, так как количество параметров не совпадало. Теперь мы отменили этот контроль, и при применении расширения количество параметров и описателей Знач в обработчиках событий не контролируется.

Упрощение работы с расширениями формы

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

Изначально, создавая этот механизм, мы хотели добиться того, чтобы форма в расширении (после заимствования) выглядела бы максимально похожей на свой окончательный вид. Для этого вместе с формой автоматически заимствовалось большое количество объектов, которые требуются для её отображения (реквизиты, параметры, команды и связанные с ними объекты).

С одной стороны это было хорошо, так как вы всегда (даже в отсутствие расширяемой конфигурации) можете посмотреть на форму в том виде, в котором она задумывалась. С другой стороны подавляющее большинство заимствованных при этом объектов лично вам не нужно для контроля или доработки. А любое их изменение в расширяемой конфигурации сразу же приводит к тому, что ваше расширение перестаёт подключаться, и его нужно адаптировать.

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

006.png

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

007.png

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

008.png

Работа с формами, заимствованными ранее, никак не изменяется. Они работают так, как будто все возможные реквизиты, команды и параметры были заимствованы вручную.

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

Теги: расширения  8.3.14