Чтобы создать расширение в 1С, откройте конфигуратор, выберите в главном меню «Конфигурация» → «Расширения конфигурации» и нажмите «Добавить». Укажите имя, синоним, префикс и назначение, затем заимствуйте в расширение нужные объекты типовой конфигурации и внесите изменения. После этого обновите конфигурацию базы данных — доработка заработает, а типовая конфигурация останется на поддержке и будет обновляться как обычно.

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

Зачем вообще расширения

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

Что можно сделать расширением:

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

Если нужно только подключить готовую внешнюю обработку или печатную форму, расширение может и не понадобиться — об этом в статье как добавить обработку в 1С.

Что подготовить

  1. Копию рабочей базы. Расширение создают и отлаживают на копии, а не на живой базе. Как сделать копию — в статье про резервное копирование 1С.
  2. Права администратора в информационной базе и доступ в конфигуратор.
  3. Понимание, что именно меняем. Запишите: какой объект, какое поле, какое поведение. Так проще не заимствовать лишнего.

Основную конфигурацию снимать с поддержки не нужно — это главное преимущество расширений.

Шаг 1. Создайте расширение

  1. Запустите базу в режиме «Конфигуратор».
  2. Откройте основную конфигурацию: «Конфигурация» → «Открыть конфигурацию».
  3. Выберите в главном меню «Конфигурация» → «Расширения конфигурации».
  4. В открывшемся списке нажмите «Добавить».
  5. Заполните четыре поля:
  • Имя — латиницей или кириллицей без пробелов, например «ДоработкиУчета».
  • Синоним — понятное название для пользователей.
  • Префикс — короткая метка для всех новых объектов и процедур расширения, например «мр_». По префиксу потом легко отличить свой код от типового и не получить конфликт имён при обновлении.
  • Назначение — «Исправление», «Адаптация» или «Дополнение».
  1. Нажмите «ОК». Расширение появится в списке, и у него будет своё дерево объектов — пока почти пустое.

Какое назначение выбрать

Назначение появилось в платформе 8.3.10 и влияет на порядок, в котором платформа применяет расширения к базе: сначала все «Исправления», затем «Адаптации», затем «Дополнения».

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

Шаг 2. Заимствуйте нужные объекты

Расширение не может просто так изменить типовой документ. Сначала объект нужно заимствовать — добавить в расширение его «копию-ссылку». Сам типовой объект при этом не меняется.

Заимствование объектов в расширение 1С: объект основной конфигурации переносится в дерево расширения
Заимствование объектов в расширение 1С: объект основной конфигурации переносится в дерево расширения

Как заимствовать:

  1. В дереве основной конфигурации найдите объект, например документ «Реализация товаров и услуг».
  2. Щёлкните по нему правой кнопкой и выберите «Добавить в расширение».
  3. Если расширений несколько, выберите, в какое именно добавить.

Объект появится в дереве расширения. Важно понимать, что заимствуется только то, что вы явно выбрали: сам объект — это ещё не его формы, модули и реквизиты. Если нужно поменять форму, заимствуйте и её — так же, через «Добавить в расширение» на нужной форме.

Что можно делать с заимствованным объектом:

  • добавить собственный реквизит или табличную часть — он сохраняется в базе вместе с типовыми данными;
  • заимствовать форму и добавить на неё свои элементы, команды, обработчики;
  • заимствовать модуль объекта или формы и перехватить процедуры.

Не заимствуйте объекты «про запас». Каждый лишний заимствованный объект — это ещё одно место, которое может сломаться при обновлении.

Шаг 3. Доработайте форму или модуль

Новое поле на форме

Простой пример: менеджеры хотят видеть в реализации поле «Ответственный за доставку».

  1. Заимствуйте документ «Реализация товаров и услуг».
  2. В дереве расширения у этого документа добавьте реквизит с префиксом, например «мр_ОтветственныйЗаДоставку», тип — «Справочник.Пользователи».
  3. Заимствуйте основную форму документа.
  4. В редакторе формы перетащите новый реквизит на нужное место.

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

Изменение кода

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

  • &Перед — ваш код выполнится до типовой процедуры. Удобно для дополнительных проверок.
  • &После — ваш код выполнится после типовой. Удобно, чтобы дозаполнить данные.
  • &Вместо — типовая процедура не выполнится, вместо неё работает ваша. Если внутри вызвать ПродолжитьВызов(), типовой код всё же выполнится в нужном месте.
  • &ИзменениеИКонтроль — вы правите копию типового кода: вставляете и удаляете строки. Платформа следит, чтобы исходный код не изменился. Если в новом релизе 1С поменяла эту процедуру, расширение перестанет применяться, и вы сразу увидите, что пора переносить правку.

Мой совет: начинайте с «&Перед» и «&После». «&Вместо» без ПродолжитьВызов() полностью отключает типовую логику, и после обновления вы можете потерять важное исправление от 1С, даже не заметив этого.

Шаг 4. Примените расширение и проверьте

  1. Сохраните расширение.
  2. Обновите конфигурацию базы данных — командой «Обновить конфигурацию базы данных» в меню «Конфигурация» окна расширения или клавишей F7.
  3. Запустите базу в режиме «1С:Предприятие» и проверьте доработку: откройте документ, заполните новое поле, запишите, проведите.
  4. Проверьте не только то, что добавили, но и соседний типовой функционал: печать, обмен, проведение.

Как перенести расширение в рабочую базу

Отлаженное расширение сохраняют в файл с расширением .cfe и загружают в рабочую базу — через конфигуратор или прямо в пользовательском режиме, через раздел администрирования. Как это сделать пошагово и какие флажки безопасности при этом проверить — в отдельной статье как установить расширение в 1С.

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

Типовые ошибки и проблемы

  • Расширение не применяется после обновления типовой. В новом релизе изменились заимствованные объекты или код, который контролирует «&ИзменениеИКонтроль». Откройте расширение в конфигураторе — платформа покажет, что именно не совпадает. Перенесите правки и снова примените.
  • Конфликт имён. Вы создали реквизит без префикса, а 1С в новом релизе добавила реквизит с тем же именем. Поэтому префикс — не формальность.
  • Расширение загружено, но доработки не видно. Проверьте, что расширение активно и применено к базе, а у пользователей нет кэша старой версии — перезапустите сеансы.
  • Ошибки безопасного режима. Расширение пытается работать с файлами, внешними компонентами или COM, а запущено в безопасном режиме. Либо меняйте код, либо осознанно снимайте ограничение — только если вы доверяете источнику расширения.
  • Пропали данные после удаления расширения. Собственные реквизиты расширения хранятся в базе, пока расширение подключено. Если удалить его, значения исчезнут, и повторное подключение их не вернёт.
  • Слишком много расширений на одном объекте. Когда три расширения перехватывают одну процедуру, отладка превращается в квест. Держите доработки одного участка в одном расширении.

Если нужно сделать доработку, которая переживёт обновления, или разобраться с расширением, которое перестало применяться, — помогу удалённо: доработки через расширения 1С, доработка 1С под задачи, консультация программиста 1С.

Итог

  • Расширение создаётся в конфигураторе: «Конфигурация» → «Расширения конфигурации» → «Добавить».
  • Сразу задайте префикс и назначение: «Исправление», «Адаптация» или «Дополнение».
  • Типовые объекты дорабатываются только после заимствования — команда «Добавить в расширение».
  • В модулях используйте «&Перед» и «&После», а «&Вместо» — осторожно и с ПродолжитьВызов().
  • Применяйте расширение через обновление конфигурации базы данных и проверяйте на копии.
  • После каждого обновления 1С проверяйте, что расширение по-прежнему применяется.