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