Механизм расширения конфигурации
1С: Предприятие 8.3.13 . Документация
Руководство администратора
Глава 33. Расширение конфигурации
33.1. Общая информация
33.1.1. Термины и определения
Механизм расширения конфигурации ‑ это специальный механизм, предназначенный для доработки расширяемой конфигурации без изменения этой конфигурации (в том числе без снятия с поддержки).
При рассмотрении механизма расширения конфигурации будут использоваться следующие термины:
● Расширяемая конфигурация ‑ основная конфигурация информационной базы, для которой применяется расширение или для которой расширение разрабатывается.
● Расширение конфигурации ‑ набор объектов конфигурации, подключаемых к расширяемой конфигурации и содержащий набор объектов, добавляемых к расширяемой конфигурации. Расширение может включать в себя как объекты расширяемой конфигурации, так и объекты, которые отсутствуют в расширяемой конфигурации.
● Собственный объект ‑ самодостаточный объект конфигурации, который может находиться как в расширяемой конфигурации, так и в расширении.
● Заимствованный объект ‑ собственный объект, добавленный в расширение конфигурации.
● Расширяемый объект ‑ собственный объект, для которого в заимствованном объекте изменены какие-либо параметры (свойства, формы и т. д.).
● Расширяющий объект ‑ это заимствованный объект, в который внесены изменения относительно расширяемого объекта. Наличие в заимствованном объекте только контролируемых свойств не делает заимствованный объект расширяющим.
● Результирующий объект ‑ это собственный объект плюс объединение всех расширяющих объектов (если расширений несколько). Если для собственного объекта нет расширяющих объектов ‑ он становится результирующим «без изменений». Т.е. в конфигурации, с которой работает пользователь ‑ все объекты являются результирующими, вне зависимости от наличия и количества установленных расширений.
● Расширяющее свойство ‑ свойство заимствованного объекта, которое изменяет одноименное свойство расширяемого объекта.
● Контролируемое свойство ‑ свойство заимствованного объекта, значение которого проверяется при подключении расширения к расширяемой конфигурации. Если при подключении расширения (в режиме 1С:Предприятие) значение контролируемого свойства в расширении не совпадет со значением этого же свойства в расширяемой конфигурации, расширение не будет подключено.
● Модифицируемое свойство ‑ свойство заимствованного объекта, значение которого в результирующем объекте будет получаться из расширения.
● Расширение данных ‑ это возможность расширять структуру хранимых данных расширяемой конфигурации с помощью заимствованных и собственных объектов расширения.
Свойство заимствованного объекта не может быть одновременно контролируемым и модифицируемым.
33.1.2. Краткое описание механизма
Основное назначение расширения конфигурации ‑ это доработка прикладного решения при внедрении (или в «облаке») под нужды клиента. При этом дорабатываемую конфигурацию не надо снимать с поддержки. В результате сохраняется простота обновления типового прикладного решения, стоящего на поддержке, с необходимостью выполнять доработки. При разработке расширения следует понимать некоторые особенности функционирования расширения конфигурации. Так, расширяемая конфигурация в любой момент может быть изменена, например, в результате обновления. При этом разработчик расширения не может никак повлиять на возможность или невозможность обновления. Также следует учитывать тот факт, что в системе могут функционировать более одного расширения и автор каждого расширения (в общем случае) не знает, как функционирует другое расширение.
Объекты, размещенные в расширении конфигурации, могут изменять поведение существующих объектов расширяемой конфигурации, не изменяя структуру данных, которые хранятся в информационной базе. В тоже время объекты, расположенные в расширении конфигурации, имеют возможность дополнять структуру хранения расширяемых объектов конфигурации (добавлять реквизиты) и создавать собственные объекты расширения, которые будут хранить «свои» данные в информационной базе расширяемой конфигурации.
Каждое расширение имеет свое назначение (свойство расширения Назначение расширения конфигурации). Назначение расширения конфигурации описывает, для какой цели создается это расширение. Расширение может иметь одно из следующих назначений:
● Исправление ‑ такое расширение предназначено для исправления ошибок в прикладном решении. В таких расширениях предполагается использование потенциально «опасных» возможностей расширений, например, применение расширения метода с помощью аннотации Вместо. Исправления предназначено для определенной версии прикладного решения. При выходе следующей версии этого решения автор расширения должен проводить анализ применимости созданных расширений в новой версии. Допускается наличие нескольких расширений с таким назначением, но необходимо обеспечить отсутствие конфликтов между такими расширениями, например, несколько таких расширений не должны расширять один и тот же метод с разными целями. Такие расширения могут не учитывать наличия расширений другого назначения.
● Адаптация ‑ такое расширение предназначено для адаптации прикладного решения под условия конкретного клиента. В таких расширениях рекомендуется не использовать потенциально «опасных» возможностей, т. е. тех возможностей, которые могут привести к конфликту расширений при их совместной работе или которые зависят от порядка подключения расширений. Тем не менее, допускается аккуратное использование «опасных» возможностей, при условии, что автор расширения берет на себя полную ответственность за обеспечение корректного функционирования результирующей конфигурации в новых версиях прикладных решений, и с учетом расширений, имеющих назначение Исправление. Предполагается, что в каждый момент времени в информационной базе существует минимальное количество таких расширений. Если в одно расширение невозможно включить весь набор изменений, то рекомендуется расширения с назначениемАдаптация разбивать по максимально крупным блокам расширяемого прикладного решения.
● Дополнение ‑ такое расширение предназначено для реализации новых возможностей прикладных решений, которые минимально привязаны к конкретной версии прикладного решения. Примером такого расширения может служить создание нового набора отчетов, который отсутствует в расширяемом прикладном решении. Предполагается, что такие расширения должны корректно работать в случае обновления расширяемого прикладного решения. При этом расширение с назначением Дополнение не должно учитывать в своей работе возможное наличие расширений с другим назначением. Предполагается, что таких расширений может быть произвольное количество.
Если расширение подключается к разделенной информационной базе, то для такого расширения имеется возможность указать область действия расширения: вся информационная база или область данных. Подробнее про эту возможность см. здесь.
Расширение создается в конфигураторе, хранится в информационной базе и может быть сохранено в файл. Для добавления (подключения) расширения, сохраненного в файл, в прикладное решение конкретного клиента нет необходимости использовать конфигуратор. Подключить расширение можно с помощью специальной стандартной функции (Все функции ‑ Стандартные ‑ Управление расширениями конфигурации). Подключить расширение также можно с помощью инструментария прикладного решения, которое использует программный интерфейс, предоставляемый платформой. Подключение расширения (интерактивно или из встроенного языка) возможно в следующих случаях:
1. в небезопасном режиме (см. здесь);
2. в том случае, когда профиль безопасности (подробнее см. здесь), под управлением которого работает сеанс, разрешает доступ к подключаемому расширению.
33.1.3. Особенности и ограничения
В расширении конфигурации не поддерживается создание следующих собственных объектов:
● Параметры сеанса.
● Общие реквизиты.
● Критерии отбора.
● Подписки на события.
● Регламентные задания.
● Функциональные опции и параметры функциональных опций.
● Определяемые типы.
● Хранилища настроек.
● Языки.
● Константы.
● Журналы документов.
● Бизнес-процессы и задачи.
● Внешние источники данных.
Не поддерживается расширение следующих объектов:
● Нельзя создавать подчиненные подсистемы.
● Если объект не может быть собственным объектом расширения ‑ его расширение также не поддерживается.
● Состав значений перечислений;
● Не поддерживается добавление реквизитов и табличных частей для:
● План видов характеристик;
● План счетов;
● План видов расчетов.
● Не поддерживается изменение структуры регистров всех видов. Поддерживается только расширение состава регистраторов.
Среди контролируемых свойств следует особо выделить:
● Состав плана обмена;
● Предопределенные элементы для справочников, планов видов характеристик, планов счетов и планов видов расчетов.
При расширении данных следует помнить о следующих особенностях и ограничениях:
● В расширении не поддерживается использование типа ЛюбаяСсылка. Тип ЛюбаяСсылка, использованный в расширяемой конфигурации, не включает в себя типы, предоставленные расширениями.
● В расширении конфигурации не поддерживается использование заимствованных определяемых типов.
● После подключения расширения конфигурации, расширяющего данные, не поддерживается использование фоновой реструктуризация.
● Тестирование и исправление обрабатывает только структуры данных расширяемой конфигурации.
● Особенности поведения системы с включенным разделением см. здесь.
В базовых версиях прикладных решений работа с расширениями не поддерживается.