Доработка типовой 1С без снятия с поддержки: своё расширение с нуля

· 9 мин

Содержание

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

Частое заблуждение — «расширение можно сделать только программисту в отдельной базе». Создать расширение конфигурации может любой пользователь с правами администратора, а механизм работает на платформе 8.3 начиная с версии 8.3.6. Тонкость в другом: чем больше вы заимствуете и переопределяете, тем больше работы после каждого обновления типовой. Поэтому дорабатывать надо точечно.

Что подготовить перед созданием расширения

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

Перед стартом проверьте:

  • 🗂️ Копия базы. Разрабатывайте на копии: выгрузка Администрирование → Выгрузить информационную базу в Конфигураторе или копия файлового каталога базы. Готовое расширение потом переносится файлом .cfe.
  • 🔑 Права. У пользователя должна быть роль «Полные права» или право администрирования. Иначе пункт расширений в Конфигураторе будет недоступен для изменения.
  • 🧩 Версия платформы. Номер не ниже 8.3.6 — сами расширения. Аннотация &ИзменениеИКонтроль появилась позже, в 8.3.11. Если база работает в режиме совместимости со старой версией, часть возможностей будет закрыта.
  • 📌 Задача сформулирована. «Добавить поле „Ответственный склад“ в реализацию и выводить его в печатную форму» — это задача. «Доработать документ» — нет. От формулировки зависит, какие объекты заимствовать.

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

У каждого расширения есть свойство «Назначение». От него зависит порядок применения, если расширений несколько.

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

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

Создание расширения конфигурации в Конфигураторе по шагам

Шаг 1. Откройте список расширений

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

Шаг 2. Добавьте новое расширение

Нажмите «Добавить». Платформа создаст расширение и откроет его свойства:

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

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

Шаг 3. Откройте дерево расширения

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

Шаг 4. Сохраните пустое расширение

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

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

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

Заимствование объекта

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

В дереве расширения появится этот документ с пометкой заимствования. Вместе с ним платформа заберёт то, без чего объект не работает , — например, типы реквизитов.

Новый реквизит в заимствованном документе

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

Данные такого реквизита хранятся отдельно от таблиц основной конфигурации. Отсюда важное следствие:

При удалении расширения, которое добавило реквизиты, удаляются и данные этих реквизитов. Если нужно временно выключить доработку, снимите флажок «Активно», а не удаляйте расширение.

Изменение формы

Реквизит в документе ещё не виден пользователю — его нужно вывести на форму:

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

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

Что именно нужно доработать?

Код в расширении: аннотации и обработчики

Самое мощное в механизме — возможность вмешаться в процедуры типовой, не трогая её модули. Для этого служат аннотации.

АннотацияЧто делаетКогда брать
&Перед("Имя")Ваш код выполняется до типовогоДополнительные проверки, заполнение полей
&После("Имя")Ваш код выполняется после типовогоДонастройка результата, дописать данные
&Вместо("Имя")Ваш код заменяет типовойПолная замена логики; типовой можно вызвать через ПродолжитьВызов()
&ИзменениеИКонтроль("Имя")Копия типовой процедуры с вставками #Вставка и #УдалениеПравка в середине процедуры

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

Пример: проверка перед проведением

Задача: не давать провести реализацию без заполненного нового поля. В модуле объекта документа типовой есть процедура ПередЗаписью. Расширяем её аннотацией &Перед:

&Перед("ПередЗаписью")
Процедура Скл_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

    Если РежимЗаписи = РежимЗаписиДокумента.Проведение
        И Не ЗначениеЗаполнено(Скл_ОтветственныйСклад) Тогда

        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Укажите ответственный склад перед проведением.";
        Сообщение.Поле = "Скл_ОтветственныйСклад";
        Сообщение.УстановитьДанные(ЭтотОбъект);
        Сообщение.Сообщить();

        Отказ = Истина;

    КонецЕсли;

КонецПроцедуры

Параметры процедуры должны совпадать с параметрами типовой. Если заготовку создала платформа, это уже так.

Почему &ИзменениеИКонтроль лучше, чем &Вместо

С &Вместо вы полностью переписываете процедуру. Когда 1С в новом релизе исправит в ней ошибку, вы об этом не узнаете — ваша старая копия продолжит работать.

&ИзменениеИКонтроль хранит текст типовой процедуры. Если после обновления он перестал совпадать, расширение не применится, а платформа покажет, что изменилось. Вы осознанно переносите свою вставку в новую версию. Поэтому для правок в середине типовой процедуры берите именно эту аннотацию.

Комментируйте вставки: что, зачем, по чьей заявке. Через год это сэкономит разбор чужого кода — даже если чужой код ваш.

Выгрузка .cfe и подключение расширения в рабочей базе

Когда доработка проверена на копии, её переносят в рабочую базу файлом.

Выгрузка из Конфигуратора

В окне Конфигурация → Расширения конфигурации выделите расширение и в меню «Конфигурация» этого окна выберите «Сохранить в файл…». Получится файл с расширением .cfe.

Загрузка в рабочую базу: два способа

СпособГдеОсобенности
Через КонфигураторКонфигурация → Расширения конфигурации → «Конфигурация» → «Загрузить из файла…», затем F7Загрузка файла и обновление конфигурации базы данных — два отдельных шага
Из режима «1С:Предприятие»В типовых на БСП: Администрирование → Печатные формы, отчеты и обработки → РасширенияБез Конфигуратора; расширение применится при следующем запуске сеанса

В списке расширений в режиме «1С:Предприятие» есть флажки, на которые стоит посмотреть сразу после загрузки:

  • ✅ Активно — включает и выключает расширение без удаления.
  • 🛡️ Безопасный режим — код расширения работает с ограничениями: без доступа к файлам, внешним компонентам и привилегированным операциям. Для простых доработок форм и проверок этого достаточно. Снимайте флажок, только если доработке действительно нужен такой доступ и вы доверяете источнику.
  • ⚠️ Защита от опасных действий — предупреждает пользователя, если код пытается выполнить потенциально опасную операцию.

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

Обновление типовой, когда к ней подключены расширения

Ради этого расширения и придуманы: основная конфигурация остаётся на поддержке, обновление ставится обычным способом. Но проверить совместимость после обновления всё равно нужно.

Что может пойти не так:

  • 🔄 1С переименовала или удалила заимствованный объект, реквизит или форму.
  • 📝 Изменился текст процедуры, перехваченной через &ИзменениеИКонтроль.
  • 🧾 Поменялись параметры процедуры, к которой привязаны &Перед или &После.
  • 🏷️ В типовой появился объект с тем же именем, что у вашего, — от этого защищает префикс.

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

Перед обновлением типовой с расширениями
Выполнено: 0 / 6

Ограничения механизма и типичные ошибки

Расширения закрывают большинство доработок, но не все. Учитывайте границы заранее.

Что расширение не умеет или умеет с оговорками:

  • 🚫 Удалить объект или реквизит типовой. Скрыть с формы — можно, удалить из структуры — нет.
  • 🚫 Поменять тип существующего реквизита основной конфигурации.
  • ⚠️ Работать на старых режимах совместимости: часть возможностей привязана к версии платформы.
  • ⚠️ Переживать тяжёлые обновления без правок, если заимствовано пол-конфигурации.

Ошибки, которые чаще всего приходится разбирать:

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

Частые вопросы

Нужно ли снимать типовую с поддержки ради расширения?
Нет. Расширение подключается поверх конфигурации на поддержке, обновления ставятся как обычно.
Можно ли создать расширение без Конфигуратора?
Создать и редактировать — только в Конфигураторе. Загрузить готовый файл .cfe можно из режима «1С:Предприятие», в типовых на БСП — в разделе Администрирование → Печатные формы, отчеты и обработки → Расширения.
Работают ли расширения в облачной 1С и в модели сервиса?
Да, но с ограничениями: обычно разрешены только расширения в безопасном режиме, а порядок установки определяет провайдер.
Сколько расширений можно подключить к одной базе?
Жёсткого практического предела нет. На деле больше 5–7 расширений неудобно сопровождать: их проще объединить по назначению.
Чем расширение отличается от внешней обработки?
Внешняя обработка — отдельный файл, который добавляет отчёт или печатную форму. Расширение меняет сами объекты типовой: поля, формы, логику записи и проведения.