Внесение изменений, как небольших, так и масштабных, в типовую конфигурацию, зачастую, является трудозатратным процессом. Сложности возникают на каждом этапе разработки: от первичного внесения изменений до последующих обновлений конфигурации. Если говорить о крупных проектах, где изменения затрагивают большое количество взаимосвязанных объектов — затраты на поддержание актуальности доработок увеличиваются в разы. Но есть ли возможность внести точечные изменения в типовой механизм и меньше беспокоиться за поддержание актуальности доработки?
В данной статье мы рассмотрим плюсы и минусы применения расширений для адаптации и доработки систем без внесения изменений в исходную конфигурацию.
В каких случаях применять расширения конфигурации 1С
Краткая теоретическая справка
Простым языком, расширение конфигурации — это механизм, позволяющий подменить/ дополнить стандартное поведение системы без изменения основной конфигурации. Расширений, подключаемых к одной конфигурации, может быть несколько — они будут применяться последовательно в зависимости от назначения (Исправление -> Адаптация -> Дополнение).
Мы несколько раз упомянули о том, что при работе с расширениями программист не изменяет объекты основной конфигурации, а точечно вносит изменения в заимствованные объекты и модули. Почему это важно?
- Упрощение обновления типовой базы. Мы не рискуем потерять доработки, сделанные непосредственно в типовых объектах и модулях, исключаем конфликты, возникающие в процессе снятия объектов с поддержки, а также сокращаем время процесса сравнения и объединения конфигураций.
- Возможность выпуска срочных обновлений, необходимых для исправления ошибок/ корректной работы функционала. Полноценное обновление базы — процесс, который может затянуться на несколько часов, что может быть совсем некстати.
- Удобство в передаче расширения заказчику. Готовое расширение сохраняется в небольшой по объему файл, который можно подключить к базе даже в пользовательском режиме. Это упрощает жизнь как заказчику, так и разработчику.
Однако, использование расширений не всегда позволяет избежать изменения исходной конфигурации. Далее поговорим о возможностях и ограничениях данного механизма.
Возможности механизма расширений конфигурации
Расширения, с первого взгляда, похожи на обычную конфигурацию — те же объекты, которые можно создавать, редактировать и удалять. Поскольку расширения являются дополнением к существующей конфигурации, реализована возможность заимствования объектов.
Заимствованные объекты конфигурации — объекты основной конфигурации, добавленные в расширение разработчиком. Заимствование объектов необходимо в случае выполнения доработок уже существующего функционала/ в случае, если существует связь между новыми объектами расширения и уже существующими объектами основной конфигурации.
На данный момент реализована возможность заимствования большинства объектов конфигурации (информация актуальна для платформы 8.3.25). Если объект не может быть собственным объектом расширения ‑ его расширение также не поддерживается.
Объекты, недоступные для расширения:
- Общие реквизиты, являющиеся разделителями;
- Хранилища настроек;
- Языки;
- Журналы документов.
Для создания в расширении недоступны следующие объекты:
- Не поддерживается изменение структуры регистров всех видов. Поддерживается только расширение состава регистраторов.
- Не поддерживается добавление реквизитов и табличных частей для:
- плана видов характеристик;
- плана счетов;
- плана видов расчетов.
Стоит обращать внимание на режим совместимости конфигурации. Режим совместимости показывает версию платформы, возможности которой используются при разработке конфигурации. Это важно, так как именно с релизом платформы 1С появляются новые возможности, в том числе и расширенный список доступных для заимствования объектов (к примеру, в режиме совместимости 8.3.25 список доступных для расширения объектов увеличен — добавлена возможность заимствования бизнес — процессов, однако не все могут пользоваться данным функционалом, так как большинство типовых конфигураций еще не подняли режим совместимости до 8.3.25).
Принципы использования расширений при доработке типовых конфигураций 1С
Правильно указывать назначение расширения
Расширение может иметь одно из следующих назначений:
- Исправление — временные расширения для срочного исправления ошибок конфигурации;
- Адаптация — доработка основной конфигурации под нужды клиента;
- Дополнение — разработка новых возможностей системы без изменения типовых объектов.
Создавать хранилища для расширений
Для расширения можно и нужно создавать хранилище, аналогично хранилищу конфигурации. Это упростит командную разработку и позволит отслеживать изменения в расширении. Исключением являются расширения с назначением исправление.
Минимизировать количество заимствованных объектов
Не следует добавлять в расширение объекты, которые не будут использоваться в разработке. Это усложнит поиск доработок в расширении и повысит шанс ложного срабатывания проверки контроля изменений при применении расширения.
Создавать новые объекты в основной конфигурации
Расширения позволяют создавать новые объекты напрямую в расширении, но при этом появляются риски потери сохраняемых в базе данных. При удалении расширения из конфигурации данные будут также удалены. Повторная установка расширения не вернет данные в базу. Поэтому сохраняемые данные (например, новый справочник, новый реквизит типового документа) рекомендуется добавлять непосредственно в основную конфигурацию.
Правильно выбирать аннотации расширяемого метода
При заимствовании метода основной конфигурации платформа предложит 4 варианта:
- Перед — код из расширения будет выполнен перед выполнением основного метода;
- После — код из расширения будет выполнен после выполнения основного метода;
- Вместо — код из расширения полностью заменит основной метод;
- Изменение и контроль — в расширение автоматически попадет полный текст основного метода. Далее разработчик, используя директивы препроцессора #Вставка … #КонецВставки и #Удаление … #КонецУдаления, вносит изменения в код.
Особенности аннотаций:
- Аннотации Перед и После недоступны для функций;
- Вместо — потенциально опасная аннотация, она не отслеживает наличие изменений в тексте основного метода. Рекомендуется использовать только для расширений с назначением исправление;
- Изменение и контроль — самая часто используемая аннотация при адаптации конфигураций. Такой подход позволяет в автоматическом режиме отслеживать изменения основного метода. При наличии изменений при запуске платформа не применит расширении и оповестит разработчика о наличии изменений.
Объединять расширения
Так как разработчик не может напрямую влиять на порядок применения расширений с одинаковым назначением, могут возникнуть ошибки и неявное поведение системы. Поэтому расширения с типом адаптация рекомендуется со временем объединять по области доработок, со временем уменьшая общее количество расширений. Кроме того, этот шаг уменьшит количество хранилищ расширений и упростит последующую доработку.
Заключение
В данной статье мы затронули общие моменты, необходимые для начального погружения в работу с расширениями. Инструмент продолжает развиваться, а его функционал — расширяться. Большинство объектов, существующих в дереве объектов конфигурации уже можно использовать в расширениях, но не забывайте обращать внимание на то, с каким режимом совместимости вы работаете. Изменения касаются не только визуальной конструкции, но и методов работы с расширениями во встроенном языке.