Доработка типовой 1С без снятия с поддержки: всё о расширениях
Содержание
Расширение конфигурации
1С — это отдельный пакет доработок (файл .cfe), который подключается к типовой конфигурации поверх неё и не меняет её код. Типовая остаётся на полной поддержке и обновляется в обычном порядке, а ваши изменения живут рядом: новые печатные формы, реквизиты, отчёты, правки логики. Механизм работает на платформе 1С:Предприятие 8.3 начиная с версии 8.3.6.
Расширение нужно, когда типовая почти подходит, но требует доработок под конкретную компанию. Вместо того чтобы «открывать» конфигурацию и потом мучиться с каждым обновлением, разработчик складывает изменения в расширение. Пользователь может подключить его даже без Конфигуратора — из пользовательского режима.
Что такое расширение и чем оно отличается от правки конфигурации
Классическая доработка выглядит так: в Конфигураторе включают возможность изменения (Конфигурация → Поддержка → Настройка поддержки), правят модули и формы прямо в основной конфигурации. После этого каждое обновление типовой превращается в сравнение и объединение: программист вручную решает, чьи изменения оставить.
Расширение устроено иначе. В нём есть два вида объектов:
- 🧩 Заимствованные — объекты основной конфигурации, которые вы «берёте» в расширение, чтобы изменить. Например, документ «Реализация (акт, накладная)» или его форму.
- ➕ Собственные — новые объекты, которых в типовой нет: справочники, отчёты, обработки, регистры, роли.
Код основной конфигурации не трогается. Платформа при запуске накладывает расширение поверх типовой и выполняет ваши обработчики до, после или вместо типовых.
| Признак | Правка конфигурации | Расширение |
|---|---|---|
| Поддержка поставщика | Снимается или ослабляется | Остаётся полной |
| Обновление типовой | Через сравнение и объединение | Обычное, расширение проверяется отдельно |
| Где хранится | Внутри основной конфигурации | Отдельно, в той же информационной базе |
| Можно ли отключить | Только откатом кода | Одним флажком |
| Возможности | Любые | Ограничены тем, что разрешает платформа |
Расширение хранится в информационной базе, а не в файле .cf. Если выгрузить конфигурацию в .cf, расширения в него не попадут — их сохраняют отдельно в .cfe.
Когда расширение нужно, а когда лучше обойтись без него
Расширение — стандартный путь для большинства доработок типовых БП 3.0, ЗУП 3.1, УТ 11 и ERP. Но не для всех.
Берите расширение, если:
- ✅ нужно добавить реквизит в документ или справочник и вывести его на форму;
- ✅ требуется своя печатная форма, отчёт или обработка, тесно связанная с данными типовой;
- ✅ надо поменять поведение при записи или проведении: дополнительная проверка, автозаполнение поля;
- ✅ важно обновлять типовую быстро и без программиста на каждое обновление;
- ✅ доработку нужно уметь быстро выключить, если с ней что-то пошло не так.
Расширение не подойдёт или будет неудобным, если:
- ❌ доработка переписывает половину конфигурации, по сути создавая другой продукт;
- ❌ задача решается настройкой: дополнительные реквизиты и сведения, пользовательские поля в отчётах, настройки печати — кода тут не нужно;
- ❌ нужна разовая операция — например, однажды загрузить данные из таблицы. Проще внешняя обработка;
- ❌ требуется изменить то, что расширение не умеет менять в вашей версии платформы. Список возможностей растёт от версии к версии, поэтому перед стартом проверьте, что нужный объект можно заимствовать и менять.
Расширение не освобождает от тестирования. Перехват типовой процедуры работает, пока она существует в типовой. Если в новом релизе процедуру переименуют, расширение перестанет применяться.
Как создать расширение в Конфигураторе: пошагово
Ниже — путь для платформы 8.3 в актуальных версиях. Монопольный доступ к базе для создания расширения не нужен, но работать лучше на копии.
Шаг 1. Создайте пустое расширение
- Откройте базу в Конфигураторе.
- Выберите
Конфигурация → Расширения конфигурации. - Нажмите «Добавить». Задайте имя (латиница или кириллица без пробелов), синоним и префикс — по умолчанию
Расш1_. - Выберите назначение: «Исправление», «Адаптация» или «Дополнение». Оно влияет на порядок применения, если расширений несколько: сначала исправления, затем адаптация, затем дополнения.
Префикс автоматически подставляется в имена новых объектов и процедур. Задайте осмысленный: Ком_ для коммерческого отдела, ПФ_ для печатных форм. Так через год никто не перепутает, откуда взялся реквизит.
Шаг 2. Позаимствуйте нужные объекты
- В дереве основной конфигурации найдите объект, например документ или его форму.
- Щёлкните правой кнопкой и выберите «Добавить в расширение».
- Объект появится в дереве расширения с пометкой заимствования.
Заимствуйте только то, что действительно меняете. Каждый лишний объект — это лишняя точка, которая может не совпасть с типовой после обновления.
Шаг 3. Внесите изменения
Что можно делать с заимствованным объектом:
- добавлять новые реквизиты и табличные части (в актуальных версиях платформы);
- добавлять элементы и команды на заимствованную форму;
- перехватывать процедуры модулей.
Для перехвата в модуле расширения пишут процедуру с аннотацией. Проще всего вызвать контекстное меню на процедуре в модуле типовой и выбрать «Добавить в расширение» — Конфигуратор сам создаст заготовку.
&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Делаем комментарий обязательным для заполнения
Элементы.Комментарий.АвтоОтметкаНезаполненного = Истина;
КонецПроцедуры
Варианты аннотаций:
| Аннотация | Что делает | Когда применять |
|---|---|---|
&Перед | Выполняет ваш код до типового | Подготовка данных, дополнительная проверка |
&После | Выполняет ваш код после типового | Донастройка формы, дозаполнение |
&Вместо | Заменяет типовой код целиком | Редко; внутри можно вызвать типовой через ПродолжитьВызов() |
&ИзменениеИКонтроль | Копия типовой процедуры с правками | Точечная вставка в середину алгоритма |
&ИзменениеИКонтроль появилась в 8.3.16. Правки внутри помечают инструкциями #Вставка … #КонецВставки и #Удаление … #КонецУдаления. Её главный плюс: если в новом релизе типовая процедура изменится, платформа не применит расширение и сообщит о расхождении. Вы не получите тихо сломанную логику.
Не злоупотребляйте &Вместо: такой перехват полностью отключает типовой код, и исправления фирмы 1С в этой процедуре до вас уже не дойдут.
Шаг 4. Выдайте права на новые объекты
Если в расширении есть собственные объекты, создайте в нём роль и дайте в ней права на эти объекты. Затем включите роль нужным пользователям или группам доступа. Без этого пользователи увидят ошибку о недостаточных правах.
Шаг 5. Проверьте и обновите базу
- В списке расширений выполните проверку применимости — Конфигуратор покажет конфликты с основной конфигурацией.
- Обновите конфигурацию базы данных — командой из меню окна расширения, отдельно от основной конфигурации.
- Запустите 1С:Предприятие и проверьте доработку на тестовых документах.
Сохранить расширение в файл можно из окна расширения: Конфигурация → Сохранить конфигурацию в файл. Получится .cfe.
Подключение готового расширения без Конфигуратора
Если программист прислал готовый файл .cfe, его можно подключить в пользовательском режиме. Нужны права администратора.
- 📂 БП 3.0, УТ 11, ЗУП 3.1:
Администрирование → Печатные формы, отчеты и обработки → Расширения. - 🔧 Универсальный путь в любой конфигурации:
Все функции → Стандартные → Управление расширениями конфигурации. Если пункта «Все функции» нет в главном меню, включите его в главном меню:Сервис → Параметры, флажок «Отображать команду Все функции».
Порядок:
- Нажмите «Добавить из файла» и выберите
.cfe. - Подтвердите предупреждение о безопасности. Подключайте только расширения из надёжного источника: код в нём выполняется с правами пользователя, а без безопасного режима — с полными.
- Перезапустите программу. Изменения применяются к новым сеансам; остальным пользователям тоже нужно перезайти.
Если в расширении есть собственные данные (новые справочники, регистры) или новые реквизиты типовых объектов, при подключении платформа меняет структуру базы. Делайте это вне рабочего времени и после резервной копии: уже открытые сеансы пользователей придётся завершить, чтобы изменения вступили в силу у всех.
Что делают расширениями на практике
Несколько типичных задач, которые закрываются расширением без снятия типовой с поддержки.
Бухгалтерия (БП 3.0):
- 🖨 своя печатная форма счёта с логотипом и подписью директора;
- 🧾 запрет проведения реализации без заполненного договора;
- 📊 отчёт по дебиторке в разрезе менеджеров, если поле «Менеджер» уже есть в документах.
Торговля (УТ 11):
- 🏷 дополнительный реквизит «Канал продаж» в заказе клиента с выводом на форму;
- 📦 автоматическое заполнение склада в документе по подразделению пользователя;
- 🔗 загрузка заказов от интернет-магазина через собственную обработку внутри расширения.
Кадры и зарплата (ЗУП 3.1):
- 📄 печатная форма приказа по шаблону компании;
- ✅ проверка при записи сотрудника, что заполнены поля, нужные вашему кадровику;
- 📈 отчёт по стажу или по отпускам в нестандартном разрезе.
Многие из этих задач решаются и без кода. В БП и УТ есть «Дополнительные реквизиты и сведения»: новое поле в справочник или документ добавляется в пару кликов. Расширение нужно, когда к полю привязана логика.
Перенос расширения в другую базу и обновление типовой
Как перенести
Есть три рабочих способа:
| Способ | Что переносится | Когда удобно |
|---|---|---|
Файл .cfe | Только расширение | Копия из рабочей базы в тестовую и обратно, передача клиенту |
Выгрузка .dt | Вся база вместе с расширениями | Полный перенос базы на другой сервер |
| Хранилище конфигурации расширения | Расширение с историей версий | Групповая разработка |
Важное условие для .cfe: основная конфигурация в базе-приёмнике должна быть совместима с той, на которой расширение делали. Если в приёмнике другой релиз типовой, сразу выполните проверку применимости.
Как обновлять типовую при подключённых расширениях
Само обновление типовой идёт как обычно. После него платформа проверяет каждое расширение. Если заимствованный объект или перехваченная процедура изменились, расширение может не примениться, а программа сообщит об этом при запуске.
Когда расширение не применилось после обновления, правят само расширение: обновляют заимствование объекта, переносят вставки в новую версию процедуры. Типовую трогать не нужно.
Расширение, внешняя обработка или доработка конфигурации
Три инструмента часто путают. Короткое сравнение:
| Критерий | Внешняя обработка / печатная форма (.epf, .erf) | Расширение (.cfe) | Правка конфигурации |
|---|---|---|---|
| Что умеет | Отдельная форма, отчёт, печать, заполнение табличной части | Менять формы, реквизиты, логику проведения и записи, добавлять объекты | Всё |
| Влияние на поддержку | Никакого | Никакого | Поддержка теряет полноту |
| Сложность обновления | Минимальная | Низкая, нужна проверка | Высокая |
| Кто подключает | Администратор в пользовательском режиме | Администратор или программист | Только программист |
| Пример задачи | Разовая загрузка остатков из Excel | Новое поле с логикой в документе | Глубокая переработка учёта |
Правило выбора простое. Нужна отдельная кнопка «сделай это» — внешняя обработка. Нужно встроиться в работу типовых объектов — расширение. Правку самой конфигурации оставляйте для случаев, когда расширение технически не справляется.
Ошибки при работе с расширениями
- ⚠️ Нет префикса или он невнятный. Собственные объекты без префикса легко спутать с типовыми, а при совпадении имён с объектами будущих релизов возникнет конфликт.
- ⚠️ Заимствовано «всё на всякий случай». Чем больше заимствований, тем чаще расширение ломается после обновлений. Берите только изменяемые объекты.
- ⚠️ Правки прямо в рабочей базе. Расширение тестируют на копии. Ошибка в обработчике
ПередЗаписьюможет заблокировать запись документа у всех пользователей сразу. - ⚠️ Забытая роль. Собственные объекты без прав видит только полноправный администратор, остальные получают отказ доступа.
- ⚠️ Несколько расширений перехватывают одну процедуру. Порядок их выполнения зависит от назначения расширений. Если два разработчика независимо меняют одну процедуру, результат трудно предсказать — согласуйте перехваты или объедините их в одно расширение.
- ⚠️ Безопасный режим выключен без нужды. В нём расширение не может работать с файлами, внешними компонентами и привилегированными операциями. Отключайте его только когда это действительно нужно и вы доверяете коду.