Расширение вместо правки типовой: что можно доработать в 1С 8.3 без снятия с поддержки

· 9 мин

Содержание

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

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

Что дают расширения конфигурации: главные преимущества

Главный выигрыш — типовая не меняется. Отсюда вытекает всё остальное.

  • 🔒 Конфигурация остаётся на поддержке. Обновление ставится как у обычного пользователя без доработок: через Администрирование → Интернет-поддержка и сервисы или стандартным способом в Конфигураторе.
  • ⏱ Обновления в разы быстрее. Не нужно сравнивать и объединять свою доработанную конфигурацию с новым релизом поставщика. Программист проверяет только те места, которые заимствовал расширением.
  • 📦 Доработка видна целиком. Всё, что изменили, лежит в одном дереве расширения. Через год не придётся искать по тысячам модулей, где «что-то подкручивали».
  • 🔁 Можно отключить одной галочкой. Если после релиза что-то пошло не так, расширение выключают, и база работает как чистая типовая.
  • 🚚 Переносится файлом. Расширение сохраняют в файл .cfe и загружают в другую базу — копию, тестовую, базу филиала.
  • 👥 Несколько доработок независимы. В одной базе может работать несколько расширений от разных исполнителей: одно — печатные формы, другое — интеграция с сайтом.
  • ☁️ Работают в облаке. В облачных сервисах, где Конфигуратор недоступен, расширения часто единственный способ хоть что-то доработать (сервис проверяет их перед подключением).

Когда без расширения не обойтись: типовые сценарии

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

Доработки форм и данных

  • новый реквизит у документа или справочника: «Номер договора у покупателя», «Ответственный менеджер»;
  • дополнительное поле, кнопка или вкладка на форме документа;
  • новый справочник или регистр под свой учёт: например, учёт пропусков на склад;
  • своя роль с узкими правами, которую не нужно пересоздавать после каждого обновления.

Изменение поведения

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

Интеграции

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

Если задача — один раз загрузить файл, пересчитать остатки или распечатать нестандартную справку, расширение избыточно. Здесь проще внешняя обработка или отчёт.

Ограничения расширений и технические нюансы

Расширение не всемогуще. Оно надстраивается поверх типовой, но не переписывает её.

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

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

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

Заимствование и зависимость от релиза

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

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

Безопасный режим

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

Данные в расширении

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

Расширение, внешняя обработка или правка типовой: сравнение

Три способа доработки решают разные задачи. Выбор сводится к вопросу: нужно ли вмешаться в работу самой конфигурации.

СпособКогда выбиратьВлияние на обновленияРиски
Внешняя обработка, отчёт, печатная формаРазовые операции, свои отчёты, дополнительная печать через стандартный механизмНетНе может менять поведение документов и их формы
Расширение конфигурацииНовые поля, проверки, изменения форм и печати, интеграцииМинимальное, проверяются только заимствованные местаПерестаёт применяться, если поставщик сильно изменил перехваченный код
Изменение самой конфигурации (снятие с поддержки)Глубокая переделка учёта, которую расширение не тянетКаждое обновление — сравнение и объединение вручнуюДорогое сопровождение, ошибки при объединении

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

Какой способ доработки выбрать?

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

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

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

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

Шаг 2. Заимствовать объект

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

Шаг 3. Добавить реквизит и вывести на форму

  1. У заимствованного документа добавьте реквизит Дост_ОтветственныйЗаДоставку с типом ссылки на справочник сотрудников или пользователей.
  2. Заимствуйте основную форму документа тем же способом.
  3. В редакторе формы перетащите новый реквизит из списка реквизитов объекта в нужную группу элементов.

Шаг 4. Добавить логику (если нужна)

Код в расширении не правит типовой модуль, а перехватывает его процедуры аннотациями:

  • &Перед — ваш код выполняется до типовой процедуры;
  • &После — после неё;
  • &Вместо — вместо, с возможностью вызвать типовую через ПродолжитьВызов();
  • &ИзменениеИКонтроль — точечная вставка и удаление строк внутри типовой процедуры с контролем, что исходный текст не изменился.

Пример перехвата функции общего модуля, которую вы заимствовали:

&Вместо("ПредставлениеДокумента")
Функция Дост_ПредставлениеДокумента(Документ)
	
	Результат = ПродолжитьВызов(Документ);
	Возврат Результат + " (доставка)";
	
КонецФункции

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

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

Шаг 5. Применить и проверить

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

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

Подключение без Конфигуратора

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

Перед передачей расширения в рабочую базу
Выполнено: 0 / 6

Обслуживание: что происходит с расширением при обновлении 1С

Расширения не избавляют от проверки после обновления, но сводят её к нескольким точкам.

Порядок обновления базы с расширениями

  1. Сделайте резервную копию.
  2. Обновите основную конфигурацию обычным способом.
  3. Запустите базу. Если расширение несовместимо с новым релизом, платформа покажет сообщение и не применит его.
  4. В Конфигураторе откройте расширение и выполните проверку применимости к основной конфигурации. Ошибки укажут, какой заимствованный объект, реквизит или процедура пропали или изменились.
  5. Исправьте расширение, обновите конфигурацию базы данных и проверьте доработку в работе.

Что ломается чаще всего

  • Аннотация &ИзменениеИКонтроль. Она проверяет текст исходной процедуры. Любая правка поставщика в этой процедуре — и расширение не применяется. Зато вы узнаёте об изменении сразу, а не по жалобам пользователей.
  • Перехват по имени. Поставщик переименовал или удалил процедуру — &Перед, &После, &Вместо больше некуда подключать.
  • Элементы формы. Типовую форму перекомпоновали, и группа, в которую вы добавили поле, исчезла.

Чем меньше заимствовано, тем дешевле обновление. Не тяните в расширение весь документ, если меняете одну процедуру его модуля. По той же причине &Перед и &После надёжнее, чем &Вместо и &ИзменениеИКонтроль.

Хранение и версии

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

Частые ошибки при работе с расширениями

  • 🚫 Нет префикса. Новые объекты без префикса рискуют совпасть по имени с объектами следующего релиза типовой. Тогда расширение перестанет применяться.
  • 🚫 Разработка прямо в рабочей базе. Ошибка в коде расширения бьёт по всем пользователям сразу. Делайте и проверяйте на копии.
  • 🚫 Забытое обновление структуры. Расширение загружено, а поле не видно — потому что не выполнили обновление конфигурации базы данных.
  • 🚫 Одно расширение «на всё». Печать, интеграция и проверки в одном расширении: сломалась одна часть — отключать приходится всё. Делите по задачам.
  • 🚫 Удаление вместо отключения. Если доработка временно мешает, снимите флажок активности. Удаление сотрёт данные, которые расширение хранило.

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

Сколько расширений можно подключить к одной базе?
Жёсткого практического предела нет, в базах нередко работают пять–десять расширений. Ограничение скорее организационное: каждое расширение нужно проверять после обновления типовой.
Влияет ли расширение на скорость работы 1С?
Само по себе почти нет. Тормозит неудачный код внутри: например, тяжёлый запрос в обработчике перед записью документа. Проверяйте производительность на копии с реальным объёмом данных.
Можно ли из расширения изменить типовой макет печатной формы?
Да. Макет заимствуют вместе с объектом и правят в расширении. После обновления типовой стоит сравнить его с новым макетом поставщика, если тот тоже менялся.
Работают ли расширения в файловой базе?
Да, механизм одинаков для файлового и клиент-серверного варианта.
Что будет с расширением при переходе на новую редакцию конфигурации?
При смене редакции структура объектов меняется сильно. Расширение придётся проверять и часто переделывать почти заново, как отдельный проект.