Приветствую Вас ГостьСреда, 08.05.2024, 02:27

Каталог статей


Расширения

Свойства расширения

"Назначение" может принимать одно из значений (последовательность важна):

  1. Исправление - предназначено для исправления ошибок в конфигурации
  2. Адаптация - предназначено для внесения изменений для конкретного заказчика
  3. Дополнение -  предназначено для внесения дополнительных сервисов и объектов, например отечтов

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

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

"Область действия" может принимать одно из значений (последовательность важна):

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

Безопасный режим.

Если прикладное решение работает в файловом варианте или в клиент-серверном варианте без профилей безопасности, то при применении расширения в безопасном режиме исполнения встроенного языка будут расширяться только клиентские методы и серверные обработчики форм, которые установлены через панель свойств. К остальным серверным методам (в т. ч. и к аннотированным серверным методам модулей) расширение применяться не будет.

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

Объекты с одинаковым именем.

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

Создание/подключение расширения

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

При загрузке или изменении расширения в конфигураторе есть возможность  проверить "возможность применения расширения". Эта команда доступна в списке расширений в подменю "Конфигурация". Если в расширении найдена критическая ошибка, например отсутствует справочник, то будет выдано соответствующее сообщение. Аналогичная команда есть и в 1С клиенте в форме "Управление расширениями конфигурации" в контекстном меню.

Можно запустить 1С из без проверки, но тогда при запуске клиента 1С будет введено сообщение об ошибку и расширение не будет применено.

Есть специальный метод ПроверитьВозможностьПрименения(), который проверяет применимость новой версии расширения, но только я пока не понял как и когда его надо запускать.

Расширение форм

Механизм применения расширения формы оперирует тремя вариантами формы:

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

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

При внесении изменений в форму в конфигурации в расширении в форме надо выполнит операцию "Обновить расширение формы"

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

Порядок загрузки расширения задается в свойстве "Назначение"  расширения (см. выше).  Если расширения имеют одинаковое назначение, то порядок определяется временем загрузки расширения в базу.

Модуль формы

Если несколько расширений дополняют (Перед/После) одну и тоже процедуру, то будут выполнены дополнения из всех расширений в очередности описанной выше. 

Отчеты

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

Для доработки отчета можно поступить 2 способами:

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

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

Макеты

При доработке макета табличного документа можно указать способ расширения Объединять или Замещать

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

Для удобства доработки макета можно включить режим отображения изменений в расширяемом макете с помощью команды главного меню Таблица – Расширение – Отображать изменения. В этом режиме зеленым цветом будут отображаться добавленные ячейки, белым - измененные, а серым - неизмененные.

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

Предопределенные значения

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

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

Если в расширении добавляется запрос (в отчете или в динамическом списке), в котором используются предопределенные значения, то они автоматически добавляются в расширение с контролем.

Расширение модулей

Нельзя расширить глобальные серверные модули. Расширенные привилегированные модули буду выполняться в непривилегированном режиме.

Из расширяющего модуля можно обращаться к переменным и методам расширяемого модуля.

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

Для расширения функций можно использовать только расширяющий метод с аннотацией &Вместо (недоступны аннотации Перед и После). Для расширения функций предусмотрен метод глобального контекста ПродолжитьВызов(). Он возвращает результат выполнения расширяемой функции.

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

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

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

Иллюстрация сценариев исполнения методов встроенного языка при условии применения к конфигурации двух расширений: сначала применяется Расширение1 с назначением Адаптация, а затем применяется Расширение2 с назначением Дополнение:

Модуль объекта

Если в расширении модуля в процедуре необходимо установить значение Отказ, то рекомендуется использовать аннотацию &Перед

Особенность срабатывания расширенных методов для нескольких расширений:

В первом расширении аннотация &Перед

Во втором расширении аннотация &Перед или &После

Расширяющий метод второго расширения будет иметь аннотацию &Вместо и оно применится первым.

Второе расширение применяется последним и аннотация &Вместо. 

Если требуется выполнение метода из обоих расширений, то в расширении с аннотацией &Вместо надо использовать метод ПродолжитьВызов()

Если в основной конфигурации было изменено объявление метода, например изменено количество параметров, то при запуске 1С клиента выйдет ошибка.

Исправить описание метода в расширении можно еще раз добавив метод в расширении, при этом система скажет, что метод уже существует, но различается количество параметров и предложит это исправить.

Расширение ролей

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

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

При установке прав для заимствованных ролей в расширении надо учитывать следующее:

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

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

Расширение (изменение) командного/основного интерфейса

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

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

Отчеты.

Если нужно убрать из интерфейса ссылку на отчет, надо выполнить следующие действия:

  • перенести в расширение отчет
  • перенести в расширение схему компоновки данных или другой макет отчета
  • в расширении в свойствах отчета установить признак "Изменять значение при подключении расширения" для основной схему компоновки данных. 

 

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

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

Обработки.

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

  • добавить команду в расширение
  • включить команду в подсистему в расширении

Если у обработки нет отдельных команд и она вводится в интерфейсе в разделе "Сервис", то, чтобы её убрать, надо:

  • добавить обработку в расширение
  • добавить обработку в подсистему в расширении
  • добавить основную обработку в форму расширения
  • в расширении в свойствах обработку установить признак "Изменять значение при подключении расширения" () для основной формы в разделе "Представление". Указать расширяемую форму.

После этого выполнить команду "Открыть командный интерфейс" подсистемы и убрать видимость у обработки/команды.

 

 

 

 

 

Категория: Администрирование | Добавил: leshic (15.03.2023)
Просмотров: 747 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [40]
Администрирование [35]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0