К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как работать с расширениями 1С: практическое руководство

Практическое руководство по расширениям конфигурации 1С: создание, подключение, обновление после релиза, типичные ошибки и проверка совместимости.

Расширение конфигурации — это механизм платформы 1С:Предприятие 8.3, который позволяет добавлять и изменять функциональность типовой конфигурации без снятия её с поддержки. Доработка хранится отдельным объектом, подключается к информационной базе и не затрагивает основной код поставщика. Благодаря этому обновление типового релиза проходит штатно, а расширение либо применяется автоматически, либо требует точечной адаптации.

Механизм подходит для большинства прикладных доработок: добавления печатных форм, дополнительных реквизитов на формы, отчётов, обработок заполнения, изменения логики отдельных процедур и функций. Однако расширения имеют ограничения: через них нельзя, например, менять состав измерений регистров, добавлять новые планы счетов или изменять роли типовой конфигурации. Понимание этих границ помогает сразу выбрать правильный инструмент и не тратить время на невыполнимую задачу.

Типичная жизненная ситуация: бухгалтерия просит добавить кнопку в документ, отдел продаж — свою печатную форму счёта, а руководство — дополнительный отчёт. Всё это реализуется расширениями, и один и тот же подход работает как в файловой базе, так и в клиент-серверном варианте или в облачном сервисе 1С:Фреш, где прямое изменение конфигурации вообще недоступно.

Когда расширение подходит, а когда нужна доработка конфигурации

Перед началом работы определите, решается ли задача расширением. Механизм позволяет добавлять новые объекты (справочники, документы, отчёты, обработки, регистры сведений), заимствовать объекты типовой конфигурации и расширять их формы и модули, перехватывать типовые процедуры и функции с помощью аннотаций «Вместо», «Перед», «После», «ИзменениеИКонтроль».

Ограничения принципиальны: в расширении нельзя изменять структуру типовых таблиц (добавлять измерения и ресурсы к типовым регистрам), менять типовые роли и права, создавать планы обмена с изменённым составом, изменять типовые критерии отбора. Если задача требует именно этого — придётся снимать конфигурацию с полной поддержки или искать обходной путь через добавленные объекты расширения.

Расширение или изменение конфигурации

Расширение

Подходит для форм, печати, отчётов, обработчиков, новых объектов. Сохраняет поддержку и простое обновление.

Доработка конфигурации

Нужна при изменении структуры типовых регистров, ролей, глубокой переработке учётных механизмов. Усложняет обновления.

Внешняя обработка или отчёт

Подходит, если не нужно менять формы и логику типовых объектов — только выполнять отдельные действия по кнопке или расписанию.

Как создать расширение в конфигураторе

Откройте конфигуратор и перейдите в меню «Конфигурация — Расширения конфигурации». В открывшемся списке нажмите «Создать». Задайте имя (латиницей, без пробелов — оно станет префиксом объектов), синоним и префикс. Свойство «Безопасный режим» оставьте включённым, если расширение будет работать у пользователей без административных прав; отключайте его только осознанно, когда код требует привилегированных операций.

Дальше доработка ведётся почти как обычная разработка. Чтобы изменить форму типового документа, найдите объект в дереве основной конфигурации, вызовите контекстное меню и выберите «Добавить в расширение». Заимствованный объект появится в дереве расширения, и его форму, модуль объекта или модуль менеджера можно доработать. Новые объекты — отчёты, обработки, общие модули — создаются прямо в дереве расширения.

Для перехвата типовых процедур используйте аннотации. Например, чтобы дополнить типовой обработчик проведения, заимствуйте процедуру и укажите «&После» с именем типового метода. Вариант «&ИзменениеИКонтроль» считается наиболее надёжным: платформа проверит, что типовой метод не изменился после обновления, и сообщит о конфликте.

Создание простого расширения
  1. 1
    Откройте Конфигурация — Расширения конфигурации и нажмите «Создать»
  2. 2
    Укажите имя, синоним и префикс расширения
  3. 3
    Добавьте нужные типовые объекты через «Добавить в расширение» или создайте новые
  4. 4
    Внесите доработки в формы и модули, установите аннотации перехвата
  5. 5
    Сохраните расширение и обновите конфигурацию базы данных (F7)
  6. 6
    Проверьте работу под пользователем с типовыми правами, а не под администратором

Как подключить готовое расширение к базе

Готовое расширение распространяется файлом с расширением .cfe. В пользовательском режиме подключение выполняется через «Администрирование — Печатные формы, отчеты и обработки — Расширения» (в некоторых конфигурациях путь называется «Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки — Расширения»). Нажмите «Добавить из файла», выберите .cfe и подтвердите загрузку. После добавления убедитесь, что у расширения установлен флажок «Используется».

Альтернативный путь — конфигуратор: откройте список расширений, выберите «Добавить из файла» и после загрузки обновите конфигурацию базы данных. Этот способ удобнее разработчику, потому что сразу показывает ошибки применения и позволяет открыть расширение на доработку.

Безопасный режим, профили и права доступа

Расширения исполняют произвольный код, поэтому платформа контролирует их выполнение. Если у пользователя нет права «Администрирование расширений конфигурации», расширение работает в безопасном режиме: недоступны файловая система, COM-объекты, внешние компоненты, запуск приложений. Для большинства прикладных доработок это нормально.

Если расширению объективно нужны такие операции (например, обмен файлами с локальной папкой), администратор может отключить безопасный режим в свойствах расширения либо настроить профиль безопасности в кластере серверов 1С. Делайте это только для расширений из доверенного источника: код вне безопасного режима имеет полный доступ к серверу и данным.

Обновление типового релиза и адаптация расширений

Главное преимущество расширений — сохранение поддержки — оборачивается обязанностью: после каждого обновления типовой конфигурации проверяйте совместимость. Если поставщик переименовал или изменил процедуру, которую ваше расширение перехватывает, платформа отключит расширение с диагностикой в свойствах либо будет выдавать ошибку при обращении к методу.

Порядок безопасного обновления такой: сначала обновите конфигурацию на копии базы, затем откройте список расширений и проверьте статусы. Для расширений с ошибками откройте их в конфигураторе — платформа подсветит заимствованные методы, изменившиеся в новом релизе. Актуализируйте перехваты, сверившись с новым текстом типовых процедур, и только после успешной проверки повторите обновление в рабочей базе.

Типичные ошибки при работе с расширениями
01
Перехват методов через «&Вместо» без крайней необходимости — любое изменение типовой процедуры ломает расширение; предпочитайте «&После» или «&ИзменениеИКонтроль»
02
Обновление рабочей базы без проверки расширений на копии — пользователи получают ошибки в середине рабочего дня
03
Несколько расширений перехватывают один и тот же метод — порядок применения неочевиден, возникают конфликты логики
04
Отключение безопасного режима «на всякий случай» — расширение получает полный доступ к серверу и становится уязвимостью
05
Хранение единственной копии расширения только в базе — при повреждении базы доработка теряется; выгружайте .cfe или храните исходники в EDT/хранилище

Отладка и проверка результата

Расширение отлаживается так же, как основная конфигурация: включите отладку в конфигураторе («Отладка — Подключение»), установите точки останова в модулях расширения и выполните действие в пользовательском режиме. Код расширения виден в стеке вызовов рядом с типовым кодом, что удобно при анализе перехватов.

После внедрения проверьте три зоны: доработанная функция работает у рядового пользователя (не только у администратора), типовые сценарии, не затронутые доработкой, выполняются без изменений, а в журнале регистрации нет новых ошибок, связанных с расширением. Если расширение добавляет печатную форму или отчёт, дополнительно проверьте права: объекты расширения должны быть включены в подсистемы или роли, иначе пользователи их просто не увидят.

Контрольные точки

Как проверить результат

Статус расширения в списке
Норма

Флажок «Используется» установлен, ошибок применения нет

Тревожный признак

Расширение отключено платформой, в свойствах текст ошибки совместимости

Работа под обычным пользователем
Норма

Доработка доступна и выполняется без ошибок прав

Тревожный признак

У администратора работает, у пользователя — ошибка доступа или кнопка не видна

Журнал регистрации
Норма

Нет новых ошибок после включения расширения

Тревожный признак

Появляются ошибки вызова методов расширения при типовых операциях

Поведение после обновления релиза
Норма

Расширение применено, перехваты соответствуют новым типовым методам

Тревожный признак

Платформа сообщает о несоответствии заимствованных методов

Выгрузка, перенос и хранение расширений

Для переноса расширения в другую базу выгрузите его в файл: в списке расширений конфигуратора выберите нужное и нажмите «Сохранить в файл». Полученный .cfe загружается в любую базу с той же или совместимой конфигурацией. Учтите: расширение, заимствующее объекты, которых нет в целевой конфигурации (например, перенос из «Управления торговлей» в «Бухгалтерию»), не применится.

Для командной разработки и контроля версий используйте выгрузку расширения в файлы конфигурации или проект 1C:EDT — расширения там являются полноценным типом проекта. Храните исходники отдельно от базы: это единственная гарантия восстановления доработки при сбоях и возможность отследить, кто и когда изменил перехват.

Маршрут решения

Как выбрать действие

Нужна печатная форма, отчёт или кнопка в формеСоздайте расширение или внешнюю печатную форму — конфигурацию не трогайте
Нужно изменить состав измерений типового регистраРасширение не поможет — планируйте доработку конфигурации с оценкой стоимости будущих обновлений
Расширение отключилось после обновленияОткройте его в конфигураторе на копии, актуализируйте изменённые перехваты и повторите обновление
Несколько расширений конфликтуют за один методОбъедините логику в одно расширение или согласуйте порядок перехватов, убрав дублирование

Частые вопросы о расширениях 1С

Можно ли подключить несколько расширений к одной базе?

Да, количество расширений не ограничено. Проблемы возникают, когда несколько расширений перехватывают один и тот же метод или изменяют одну форму — тогда результат зависит от порядка применения. Практическая рекомендация: группируйте связанные доработки в одно расширение и избегайте пересекающихся перехватов.

Что произойдёт с данными, если отключить расширение?

Данные объектов, добавленных расширением (например, записи нового регистра сведений), физически удаляются из базы при удалении расширения вместе с таблицами. Простое снятие флажка «Используется» временно отключает код и объекты без удаления данных. Перед удалением расширения с данными сделайте копию базы.

Почему расширение работает у администратора, но не у пользователя?

Наиболее частые причины: объекты расширения не включены в роли или подсистемы, доступные пользователю, либо расширение работает в безопасном режиме, а код требует привилегированных операций. Проверьте права на объекты расширения и журнал регистрации на предмет ошибок доступа.

Можно ли редактировать расширение прямо в рабочей базе без остановки?

Технически платформа позволяет обновить расширение в работающей базе, но в клиент-серверном варианте это может потребовать монопольного доступа или вызвать ошибки у активных сеансов. Безопасный порядок: доработка и проверка на копии, затем загрузка в рабочую базу в период минимальной нагрузки.

Чем расширение отличается от внешней обработки?

Внешняя обработка запускается как отдельное действие и не может менять формы и модули типовых объектов. Расширение встраивается в конфигурацию: добавляет кнопки на типовые формы, перехватывает проведение документов, создаёт собственные объекты метаданных. Если задача — разовое действие по кнопке, достаточно обработки; если нужно изменить поведение типовых объектов — нужно расширение.

Итог

Что важно запомнить

Расширения позволяют дорабатывать типовую конфигурацию без снятия с поддержки. Создавайте их в конфигураторе, переносите файлом .cfe, проверяйте на копии базы, используйте безопасные аннотации перехвата и обязательно контролируйте совместимость после каждого обновления релиза.