Расширения конфигурации. Полезные советы для разработки
Механизм расширения конфигурации появился в платформе 8.3.6 и соответственно может применяться в конфигурациях с отключенной совместимостью. На текущий момент все типовые конфигурации на управляемых формах поддерживают работу с расширениями. Рассмотрим подробнее, что это за механизм.
"Механизм расширения конфигурации – это специальный механизм, предназначенный для доработки расширяемой конфигурации без изменения этой конфигурации (в том числе без снятия с поддержки).
Основное назначение расширения конфигурации – это доработка прикладного решения при внедрении (или в «облаке») под нужды клиента. При этом дорабатываемую конфигурацию не надо снимать с поддержки. В результате сохраняется простота обновления типового прикладного решения, стоящего на поддержке, с необходимостью выполнять доработки. При разработке расширения следует понимать некоторые особенности функционирования расширения конфигурации. Так, расширяемая конфигурация в любой момент может быть изменена, например, в результате обновления. При этом разработчик расширения не может никак повлиять на возможность или невозможность обновления. Также следует учитывать тот факт, что в системе могут функционировать более одного расширения и автор каждого расширения (в общем случае) не знает, как функционирует другое расширение."
Более подробно о расширениях можно почитать и посмотреть здесь:
Ниже я приведу полезные советы для работы с расширениями.
Возможно некоторые покажутся слишком простыми или очевидными, но они могут быть полезны тем, кто только начинает свою работу с расширениями. Также с удовольствием дополню вашими советами из комментариев.
1. Показать/скрыть неизмененные объекты
При добавлении новых объектов в расширение также автоматически добавляются связанные объекты. В результате в метаданных расширения скапливается много служебных объектов. Для того, чтобы показать только измененные объекты есть кнопка “Измененные и добавленные в расширении”. При нажатии отображаются только добавленные вручную и измененные объекты расширения. Принцип её работы показан ниже:
2. Последовательность выполнения обработчиков
Если в расширении переопределить событие или команду, то по умолчанию сначала выполняется обработчик из расширения, а затем обработчик типовой конфигурации. Это не всегда удобно, например, когда какие-то операции следует выполнить после типовых обработчиков. Рассмотрим примеры, которые позволяют изменить эту последовательность:
а) Выполнить сначала типовой код, затем код из расширения:
б) Выполнить сначала код из расширения, затем типовой код, затем опять код из расширения
в) Выполнить сначала типовой код, затем код из расширения, затем снова типовой код
Можно прибегнуть к хитрости: - Отменяем выполнение обработчиков из типовой конфигурации. - В расширении вызываем нужные процедуры из типового кода в перемешку с процедурами из расширения.
г) Отменить типовые обработчики
3. Создание и использование общего модуля, модуля менеджера или модуля объекта
На текущий момент механизм расширений не позволяет создавать или заимствовать общие модули, модули менеджера и модули объектов. Но в обработке, включенной в состав конфигурации, доступен модуль менеджера и к нему можно обращаться:
Модуль менеджера обработки:
Таким же образом можно организовать собственное подобие общего модуля, в котором можно хранить общие процедуры и функции, требующиеся для работы расширения, например, как здесь. Также можно включать в состав расширения внешние обработки. Напомню, что во внешней обработке модуль менеджера не доступен.
4. Как подключить отладку
В типовых конфигурациях на основе библиотеки стандартных подсистем (БСП) при отладке расширений встречается вот такое страшное сообщение:
Оно возникает если в конфигураторе открыто наше расширение и лечится только закрытием окна расширения.
Для того, чтобы подключить отладку в расширении следует и спользовать ключ командной строки - “РежимОтладки”
Это у прощает отладку кода. В частности:
- Все длительные операции выполняются сразу, без запуска фонового задания;
- При разработке расширений конфигурации, возможен запуск с установленными расширениями конфигурации, которые в данный момент открыты в конфигураторе (при условии, что версия конфигурации и версии расширений не менялись).
Для того чтобы его установить:
- Запустить предприятия с ключом командной строки - " /C РежимОтладки "
- В режиме конфигуратора установить параметр запуска: Сервис -> Параметры -> Запуск 1С:Предприятия -> Параметр запуска: ввести строку < РежимОтладки >
При первом подключении расширения или при изменении в версии расширения или поставщика, отладка может не подключится с таким же сообщением.
Для того, чтобы исправить эту ситуацию можно попробовать следующие действия:
1. В конфигураторе закрыть это расширение 2. Запустить конфигурацию в режиме предприятие и открыть форму, связанную с расширением 3. Открыть расширение в конфигураторе 4. Перезапустить отладку.
5. Как писать запросы
Расширение видит и работает только с теми объектами, которые заимствованы из основной конфигурации. Объекты, которые не заимствованы, в расширении не видны и при попытке обращения к ним, например, в тексте запроса, в режиме “Конфигуратор” вызывают ошибку. Хотя в пользовательском режиме код выполняется без проблем. Для того чтобы писать или редактировать запросы с большим количеством метаданных лучше воспользоваться любой внешней обработкой. В ней доступны все метаданные из основной конфигурации:
6. Как сохранять данные
Расширение не предназначено для хранения важных данных и тем более данных, влияющих на учет. Но настройки сохранять нужно. Для этого можно воспользоваться хранилищем общих настроек или сохранением данных формы:
а) Сохранение данных формы
В редактируемой форме можно установить свойство - “АвтоматическоеСохранениеДанныхВНастройках” в "Использовать" и поставить флаг "Сохранение" над нужными реквизитами. Это позволит сохранять значения реквизитов типовым механизмом платформы:
Такое сохранение данных реализовано здесь.
б) Хранилище общих настроек
В этом хранилище можно хранить любые данные. Подробнее можно Рассмотрим пример хранения произвольных данных.
7. Как добавить свой макет
К сожалению, в заимствованных документах нельзя добавлять или изменять макеты. Но макеты можно добавлять к обработкам, также можно вставлять внешние обработки, в которых уже существуют макеты. Эти макеты можно использовать для создания или изменения печатных форм, например так.
8. Как подменить кнопку заполнения табличной части
Иногда может потребоваться и добавить свою кнопку заполнения и оставить типовую кнопку. Для того, чтобы убрать типовую кнопку подальше, но не удалять её совсем можно установить свойство - “Только во всех действиях” - "Да":
В этом случае кнопка будет доступна из подменю “Еще”. Это позволит в случае непредвиденных ситуаций продолжить работу с типовой функциональностью.
9. Расширение как багфикс
Бывают такие ситуации, когда у клиента обнаруживается ошибка, но конфигурация на замке. Снимать с поддержки ради исправления ошибки не хочется. В таких ситуациях можно создать небольшое расширение, которое исправляет именно эту конкретную ошибку. Создав такое расширение один раз, можно легко подключать его у всех своих клиентов.
К тому же разработчики типовых иногда выкладывают текст исправления ошибки на партнерском форуме. Это позволит создать такое расширение еще проще.
Если ошибку исправить не легко, то можно сделать её хотя бы менее критичной, например, поставив в проблемном месте заглушку.
И не забываем отключить это расширение после того, как ошибка будет исправлена в типовой конфигурации.
10. Как вывести свою обработку в интерфейс
Для того, чтобы вывести свою обработку в интерфейс конфигурации необходимо включить её в состав требуемой подсистемы :
Также можно создать свою подсистему в расширении и складывать нужные объекты в неё. Например, можно поместить в расширение внешние обработки или отчеты и просто подключать их к любым конфигурациям:
11. Как перевести расширение на 8.3.8
Чтобы перевести расширение на 8.3.8 следует выполнить следующие действия:
1. Снять режим совместимости в расширении. Установить свойства совместимости такими же как и у основной конфигурации.
2. Устранить проблемы подключения. Необходимо проверить, что на новой версии расширение подключается. Причину ошибок можно посмотреть в журнале регистрации.
3. Обновить формы в расширении. Следует обновить формы расширений из основной конфигурации. Чтобы и в расширении и в конфигурации формы были одинаковыми.
4. Привести компоновку формы к новым правилам движка. С рекомендациями по адаптации форм к новой платформе можно ознакомиться по 5. Проверить, что расширение выглядит и работает правильно.
Более подробно по каждому пункту описано в этой памятке. Там же приведены полезные материалы по теме.