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