Разработка и Конфигурация · 11 мин
Как увеличить расширение в 1С: пошаговое руководство
Как увеличить функциональность расширения в 1С: добавление объектов, форм и кода, режим совместимости, типичные ошибки и проверка результата без снятия конфигурации с поддержки.
Расширение конфигурации в 1С — это механизм, который позволяет добавлять и изменять функциональность типовой конфигурации без снятия её с поддержки. Когда возможностей уже созданного расширения перестаёт хватать, возникает задача его «увеличения»: добавления новых объектов, форм, процедур, ролей или изменения заимствованных элементов. Сделать это можно штатными средствами конфигуратора, но важно понимать ограничения механизма и порядок безопасной доработки.
Увеличение расширения может означать три разные задачи: расширение состава объектов (новые справочники, документы, регистры), углубление изменения заимствованных объектов (добавление реквизитов, переопределение обработчиков форм и модулей) и расширение применимости (подключение расширения к большему числу пользователей, ролей или баз). Ниже разобраны все три сценария с конкретными действиями.
Что можно добавить в расширение и какие есть ограничения
Механизм расширений позволяет создавать собственные объекты метаданных: справочники, документы, регистры сведений и накопления, отчёты, обработки, роли, подсистемы, общие модули. Также можно заимствовать объекты основной конфигурации и изменять их: добавлять реквизиты, табличные части, формы, переопределять обработчики событий модулей с помощью аннотаций &ИзменениеИКонтроль, &После, &Вместо.
Однако есть жёсткие ограничения. В расширении нельзя изменять состав планов обмена, критерии отбора в полном объёме, нельзя менять типовые роли (только создавать свои), нельзя удалять заимствованные реквизиты и изменять их типы. Планы счетов и планы видов характеристик заимствуются с ограничениями. Если задача требует именно этих изменений, расширение не подойдёт — придётся либо дорабатывать основную конфигурацию, либо пересматривать архитектуру решения.
Подготовка: проверка режима совместимости и резервная копия
Перед любыми доработками проверьте режим совместимости конфигурации и версию платформы. Возможности расширений существенно зависят от релиза платформы 1С:Предприятие: в ранних версиях нельзя было добавлять собственные таблицы, в более поздних появилась работа с ролями, Web-сервисами, изменением командного интерфейса. Если расширение разрабатывалось под старую платформу, а база обновлена — часть механизмов может вести себя иначе.
Обязательно сделайте резервную копию базы перед подключением изменённого расширения. Хотя расширение не трогает типовые метаданные, ошибка в коде расширения способна повредить данные: например, некорректный обработчик проведения документа или фоновое задание, изменяющее регистры. Для файловой базы достаточно выгрузки в dt, для клиент-серверной — штатной копии средствами СУБД.
Как добавить новые объекты в существующее расширение
Откройте конфигуратор, перейдите в меню «Конфигурация → Расширения конфигурации» и откройте нужное расширение на редактирование. Дальше работа идёт так же, как с обычной конфигурацией: через контекстное меню ветки объектов добавьте новый справочник, документ, регистр, отчёт или обработку. Задайте имя, синоним, определите реквизиты и табличные части.
После добавления объектов создайте для них роли внутри расширения или заимствуйте типовые роли и добавьте права на новые объекты — без этого пользователи просто не увидят новые элементы. Затем настройте подсистемы, чтобы объекты попали в командный интерфейс. Завершите работу командой «Обновить конфигурацию базы данных» (F7) и проверьте результат под пользователем с целевыми правами.
- 1Откройте расширение в конфигураторе через меню «Конфигурация → Расширения конфигурации»
- 2Добавьте новый объект (справочник, документ, регистр, отчёт) через контекстное меню
- 3Определите реквизиты, формы и модули объекта
- 4Настройте роли и права на новый объект внутри расширения
- 5Добавьте объект в подсистемы для отображения в интерфейсе
- 6Обновите конфигурацию базы данных и проверьте работу под обычным пользователем
Как расширить изменение типовых объектов
Если нужно глубже доработать типовой объект, заимствуйте его в расширение: в дереве основной конфигурации вызовите контекстное меню объекта и выберите «Добавить в расширение». После этого можно добавлять собственные реквизиты, создавать свои формы или изменять заимствованные, дописывать обработчики событий.
Добавление реквизитов и табличных частей
В заимствованном объекте добавьте реквизит с префиксом, например Расш1_КомментарийКЗаказу. Префикс защищает от конфликтов при обновлении типовой конфигурации: если в новом релизе появится реквизит с таким же именем, без префикса возникнет коллизия и расширение перестанет применяться. Новые реквизиты физически хранятся в таблицах расширения, но для пользователя выглядят как часть объекта.
Переопределение обработчиков и кода
Для изменения логики модулей используйте аннотации. Безопаснее всего &ИзменениеИКонтроль — она копирует текст типовой процедуры и контролирует его при обновлении: если типовой код изменился, расширение покажет предупреждение. Аннотация &Вместо полностью заменяет типовой метод и при обновлении может привести к потере новых исправлений вендора — используйте её только когда без полной замены не обойтись.
&ИзменениеИКонтроль("ПриЗаписи")
Процедура Расш1_ПриЗаписи(Отказ)
// Вызов типовой логики
#Вставка
ПродолжитьВызов(Отказ);
#КонецВставки
// Собственная логика расширения
ЗаписатьДополнительныеДанные(Ссылка);
КонецПроцедурыКак увеличить область применения расширения
Иногда «увеличить расширение» означает распространить его действие на большее число пользователей или баз. В свойствах расширения есть параметры применения: можно настроить, чтобы расширение работало для всех пользователей или только для выбранных (через настройку в разделе «Администрирование → Печатные формы, отчеты и обработки → Расширения» в пользовательском режиме). Это удобно для поэтапного внедрения: сначала расширение включается тестовой группе, затем всем.
Для распространения расширения на несколько баз сохраните его в файл с расширением .cfe (команда «Сохранить в файл» в окне расширений) и загрузите в целевые базы. Учтите, что расширение привязано к структуре конкретной конфигурации: на базе с другой версией типовой оно может не примениться или работать некорректно. Перед загрузкой сверьте версии конфигураций.
Способы доработки: что выбрать
Подходит для добавления объектов, реквизитов, печатных форм и переопределения обработчиков. Не мешает обновлению. Ограничение: нельзя менять типовые роли, планы обмена и типы реквизитов.
Подходят для разовых инструментов и отчётов без изменения метаданных. Ограничение: нет собственных таблиц и форм объектов.
Нужна, когда расширение технически не может выполнить задачу. Ограничение: усложняет обновление, требует аккуратного ведения изменений.
Проверка результата и поведение после обновления типовой
После доработки проверьте расширение в нескольких сценариях: создание и проведение документов, работу форм, выполнение переопределённых обработчиков, права доступа под обычным пользователем, а не только под администратором. Особое внимание уделите местам, где использована аннотация &Вместо, — там выше риск скрытых конфликтов.
После каждого обновления типовой конфигурации открывайте расширение и выполняйте проверку применимости: конфигуратор покажет объекты, для которых нарушился контроль соответствия типовому коду. Процедуры с &ИзменениеИКонтроль нужно пересмотреть и синхронизировать с новым типовым текстом. Пренебрежение этой проверкой — самая частая причина того, что «расширение перестало работать после обновления».
Как проверить результат
В списке расширений статус «Подключено», ошибок контроля нет
Предупреждения о несоответствии заимствованных объектов типовым
Новые объекты видны и доступны пользователю с целевой ролью
Объект есть у администратора, но невидим для пользователя
Выполняется и типовая, и добавленная логика
Типовая логика пропала или выполняется дважды
Типичные ошибки при увеличении расширения
Первая ошибка — отсутствие префиксов в именах добавляемых объектов и реквизитов. При обновлении типовой конфигурации совпадение имён приводит к конфликту, и расширение отключается. Вторая частая проблема — злоупотребление аннотацией &Вместо: после обновления типовой вы теряете исправления вендора и получаете рассинхронизацию логики.
Третья ошибка — забытые роли. Разработчик видит новые объекты под полными правами и считает работу завершённой, а пользователи не видят ничего. Четвёртая — хранение данных в расширении без плана миграции: если расширение отключить, данные собственных таблиц станут недоступны в интерфейсе. Перед масштабным использованием собственных таблиц продумайте, как вы будете выгружать или переносить эти данные при необходимости.
Что важно запомнить
Увеличение расширения делается в конфигураторе: добавляйте объекты, заимствуйте типовые, используйте префиксы и аннотацию &ИзменениеИКонтроль, настраивайте роли. Перед работой делайте копию базы, после каждого обновления типовой проверяйте применимость расширения. Если задача выходит за ограничения механизма — рассмотрите доработку основной конфигурации.
Частые вопросы
Можно ли в расширении изменить тип существующего реквизита типового объекта?
Нет, изменение типа заимствованного реквизита не поддерживается. Можно добавить собственный реквизит нужного типа и выводить его на форму вместо типового, а типовой скрыть. Если требуется именно изменение типа существующего поля, придётся дорабатывать основную конфигурацию.
Что произойдёт с данными, если отключить расширение с собственными таблицами?
Физически данные в большинстве случаев сохраняются в базе, но становятся недоступны в интерфейсе и запросах, пока расширение отключено. При повторном подключении того же расширения доступ к данным возвращается. Удаление расширения с очисткой может привести к потере этих данных, поэтому перед удалением делайте выгрузку.
Почему расширение перестало работать после обновления конфигурации?
Чаще всего причина в изменении типовых объектов, которые заимствованы или переопределены: вендор изменил текст процедур, состав реквизитов или параметры методов. Откройте расширение в конфигураторе и выполните проверку применимости — конфигуратор покажет конкретные места несоответствия, которые нужно синхронизировать.
Можно ли подключить одно расширение к нескольким базам?
Да, расширение сохраняется в файл .cfe и загружается в другие базы. Условие — версии и структура типовой конфигурации в базах должны совпадать, иначе расширение не применится или будет работать некорректно. После загрузки проверьте применимость в каждой базе отдельно.
Нужно ли снимать конфигурацию с поддержки для работы расширений?
Нет, в этом главное преимущество механизма. Расширения работают поверх конфигурации на полной поддержке и не мешают автоматическому обновлению. Снятие с поддержки требуется только при прямой доработке основной конфигурации.
Как ограничить действие расширения для части пользователей?
В пользовательском режиме в списке расширений можно настроить применение: расширение может действовать для всех сеансов или только для указанных пользователей. Это удобно для тестирования доработок на пилотной группе перед включением для всей организации.