Расширение вместо правки типовой: что можно доработать в 1С 8.3 без снятия с поддержки
Содержание
Расширения конфигурации нужны, чтобы дорабатывать типовую 1С — добавлять реквизиты, печатные формы, отчёты, менять поведение документов — и при этом не снимать её с поддержки. Типовая остаётся «на замке», доработка живёт отдельным слоем поверх неё, а обновление проходит в обычном режиме, за минуты, а не за дни ручного сравнения и объединения.
Частое заблуждение: «расширение — это та же внешняя обработка, только сложнее». Нет. Внешняя обработка живёт рядом с базой и умеет только то, что ей разрешили механизмы подключения. Расширение встраивается в саму конфигурацию: оно может вмешаться в код модуля, добавить поле на форму документа, новую роль или целый справочник. Механизм появился в платформе 8.3.6 и с каждой версией получал новые возможности.
Что дают расширения конфигурации: главные преимущества
Главный выигрыш — типовая не меняется. Отсюда вытекает всё остальное.
- 🔒 Конфигурация остаётся на поддержке. Обновление ставится как у обычного пользователя без доработок: через
Администрирование → Интернет-поддержка и сервисыили стандартным способом в Конфигураторе. - ⏱ Обновления в разы быстрее. Не нужно сравнивать и объединять свою доработанную конфигурацию с новым релизом поставщика. Программист проверяет только те места, которые заимствовал расширением.
- 📦 Доработка видна целиком. Всё, что изменили, лежит в одном дереве расширения. Через год не придётся искать по тысячам модулей, где «что-то подкручивали».
- 🔁 Можно отключить одной галочкой. Если после релиза что-то пошло не так, расширение выключают, и база работает как чистая типовая.
- 🚚 Переносится файлом. Расширение сохраняют в файл
.cfeи загружают в другую базу — копию, тестовую, базу филиала. - 👥 Несколько доработок независимы. В одной базе может работать несколько расширений от разных исполнителей: одно — печатные формы, другое — интеграция с сайтом.
- ☁️ Работают в облаке. В облачных сервисах, где Конфигуратор недоступен, расширения часто единственный способ хоть что-то доработать (сервис проверяет их перед подключением).
Когда без расширения не обойтись: типовые сценарии
Расширение уместно везде, где нужно изменить поведение или структуру типовой, а не просто разово обработать данные.
Доработки форм и данных
- новый реквизит у документа или справочника: «Номер договора у покупателя», «Ответственный менеджер»;
- дополнительное поле, кнопка или вкладка на форме документа;
- новый справочник или регистр под свой учёт: например, учёт пропусков на склад;
- своя роль с узкими правами, которую не нужно пересоздавать после каждого обновления.
Изменение поведения
- проверка перед проведением: «не проводить реализацию без договора с отметкой о подписании»;
- автозаполнение полей при создании документа;
- изменение типовой печатной формы: свой логотип, дополнительная строка, другой порядок колонок;
- исправление ошибки типового релиза до выхода исправления от поставщика.
Интеграции
- обмен с сайтом, складской программой, банком через свои HTTP-сервисы;
- выгрузка данных по расписанию через регламентное задание из расширения.
Если задача — один раз загрузить файл, пересчитать остатки или распечатать нестандартную справку, расширение избыточно. Здесь проще внешняя обработка или отчёт.
Ограничения расширений и технические нюансы
Расширение не всемогуще. Оно надстраивается поверх типовой, но не переписывает её.
Что расширение сделать не может
- ❌ удалить объект, реквизит или табличную часть основной конфигурации;
- ❌ изменить тип существующего реквизита типовой;
- ❌ переименовать объекты основной конфигурации;
- ❌ сработать в версии платформы ниже той, для которой его делали: перечень доступных объектов зависит от режима совместимости.
Набор того, что можно добавить, расширяется от версии к версии платформы. В актуальных версиях 8.3 расширение умеет добавлять справочники, документы, регистры, реквизиты и табличные части к заимствованным объектам. Если нужен редкий тип объекта, проверьте его в дереве расширения в Конфигураторе: недоступные пункты просто нельзя создать.
Заимствование и зависимость от релиза
Чтобы изменить типовой объект, его заимствуют: копируют в расширение «ссылку» на объект основной конфигурации. Дальше в заимствованный модуль или форму вносят свои изменения.
Здесь и кроется главный риск. Если в новом релизе поставщик переименовал процедуру, которую вы перехватили, или убрал элемент формы, расширение перестаёт применяться. Платформа сообщает об этом при запуске и отключает такое расширение.
Безопасный режим
При подключении в пользовательском режиме расширение по умолчанию работает в безопасном режиме. Ему запрещены опасные действия: работа с файлами на сервере, внешние компоненты, привилегированный режим. Для интеграций и печати с обращением к файлам безопасный режим снимают явно, отключив флажок у конкретного расширения. Снимайте защиту только у расширений из проверенного источника: полученный от неизвестного исполнителя файл .cfe с отключённым безопасным режимом получает почти полный доступ к данным.
Данные в расширении
Если расширение добавляет свои реквизиты или справочники, в базе появляются новые таблицы. Удаление такого расширения удаляет и его данные. Перед удалением сделайте резервную копию и решите, нужны ли эти данные.
Расширение, внешняя обработка или правка типовой: сравнение
Три способа доработки решают разные задачи. Выбор сводится к вопросу: нужно ли вмешаться в работу самой конфигурации.
| Способ | Когда выбирать | Влияние на обновления | Риски |
|---|---|---|---|
| Внешняя обработка, отчёт, печатная форма | Разовые операции, свои отчёты, дополнительная печать через стандартный механизм | Нет | Не может менять поведение документов и их формы |
| Расширение конфигурации | Новые поля, проверки, изменения форм и печати, интеграции | Минимальное, проверяются только заимствованные места | Перестаёт применяться, если поставщик сильно изменил перехваченный код |
| Изменение самой конфигурации (снятие с поддержки) | Глубокая переделка учёта, которую расширение не тянет | Каждое обновление — сравнение и объединение вручную | Дорогое сопровождение, ошибки при объединении |
На практике правку типовой с отключением поддержки сегодня выбирают редко: для большинства задач франчайзи и штатные программисты уходят в расширения. Внешние обработки остаются для того, что не должно жить внутри базы постоянно.
Как создать первое расширение конфигурации: пошагово
Разберём простую задачу: добавить реквизит «Ответственный за доставку» к документу реализации и вывести его на форму. Права нужны административные, работа идёт в Конфигураторе.
Шаг 1. Создать расширение
- Сделайте резервную копию базы:
Администрирование → Выгрузить информационную базув Конфигураторе. - Откройте Конфигуратор и выберите
Конфигурация → Расширения конфигурации. - Нажмите Добавить. В свойствах укажите:
- Имя — понятное, например
ДоработкиДоставки; - Префикс — добавляется к именам новых объектов и процедур, например
Дост_; - Назначение — «Дополнение» для новой функциональности, «Исправление» для заплатки типового релиза, «Адаптация» для настройки под компанию.
- Имя — понятное, например
Шаг 2. Заимствовать объект
- Откройте дерево основной конфигурации.
- Найдите документ реализации, щёлкните правой кнопкой и выберите команду «Добавить в расширение».
- В дереве расширения появится заимствованный документ — со значком, который отличает его от собственных объектов.
Шаг 3. Добавить реквизит и вывести на форму
- У заимствованного документа добавьте реквизит
Дост_ОтветственныйЗаДоставкус типом ссылки на справочник сотрудников или пользователей. - Заимствуйте основную форму документа тем же способом.
- В редакторе формы перетащите новый реквизит из списка реквизитов объекта в нужную группу элементов.
Шаг 4. Добавить логику (если нужна)
Код в расширении не правит типовой модуль, а перехватывает его процедуры аннотациями:
&Перед— ваш код выполняется до типовой процедуры;&После— после неё;&Вместо— вместо, с возможностью вызвать типовую черезПродолжитьВызов();&ИзменениеИКонтроль— точечная вставка и удаление строк внутри типовой процедуры с контролем, что исходный текст не изменился.
Пример перехвата функции общего модуля, которую вы заимствовали:
&Вместо("ПредставлениеДокумента")
Функция Дост_ПредставлениеДокумента(Документ)
Результат = ПродолжитьВызов(Документ);
Возврат Результат + " (доставка)";
КонецФункции
Здесь ПредставлениеДокумента — условное имя: подставьте имя функции из модуля, который заимствовали. Параметры должны совпадать с исходной функцией.
Для событий формы обработчики назначают в палитре свойств заимствованной формы: у события выбирают, когда вызывать ваш обработчик — перед типовым, после него или вместо.
Шаг 5. Применить и проверить
- Обновите конфигурацию базы данных (клавиша
F7): без этого новый реквизит не появится в данных. - Запустите 1С:Предприятие, откройте документ реализации и убедитесь, что поле на месте и сохраняется.
- Сохраните расширение в файл: в списке расширений — команда сохранения в файл, результат — файл
.cfe.
Загрузка .cfe в другую базу и обновление конфигурации базы данных — два отдельных действия. После загрузки файла обязательно выполните обновление структуры, иначе новые реквизиты не заработают.
Подключение без Конфигуратора
Готовое расширение можно подключить и в пользовательском режиме. В типовых конфигурациях на БСП это Администрирование → Печатные формы, отчеты и обработки → Расширения. Там же видно, какие расширения включены, и можно снять флажок «Безопасный режим». Альтернатива для любой конфигурации — Все функции → Стандартные → Управление расширениями конфигурации.
Обслуживание: что происходит с расширением при обновлении 1С
Расширения не избавляют от проверки после обновления, но сводят её к нескольким точкам.
Порядок обновления базы с расширениями
- Сделайте резервную копию.
- Обновите основную конфигурацию обычным способом.
- Запустите базу. Если расширение несовместимо с новым релизом, платформа покажет сообщение и не применит его.
- В Конфигураторе откройте расширение и выполните проверку применимости к основной конфигурации. Ошибки укажут, какой заимствованный объект, реквизит или процедура пропали или изменились.
- Исправьте расширение, обновите конфигурацию базы данных и проверьте доработку в работе.
Что ломается чаще всего
- Аннотация
&ИзменениеИКонтроль. Она проверяет текст исходной процедуры. Любая правка поставщика в этой процедуре — и расширение не применяется. Зато вы узнаёте об изменении сразу, а не по жалобам пользователей. - Перехват по имени. Поставщик переименовал или удалил процедуру —
&Перед,&После,&Вместобольше некуда подключать. - Элементы формы. Типовую форму перекомпоновали, и группа, в которую вы добавили поле, исчезла.
Чем меньше заимствовано, тем дешевле обновление. Не тяните в расширение весь документ, если меняете одну процедуру его модуля. По той же причине &Перед и &После надёжнее, чем &Вместо и &ИзменениеИКонтроль.
Хранение и версии
Расширение можно подключить к хранилищу конфигурации отдельно от основной конфигурации. Тогда несколько разработчиков работают с ним по захвату объектов, а история изменений сохраняется. Для одиночного программиста минимум — архив файлов .cfe с датой и номером релиза типовой, на котором версия проверена.
Частые ошибки при работе с расширениями
- 🚫 Нет префикса. Новые объекты без префикса рискуют совпасть по имени с объектами следующего релиза типовой. Тогда расширение перестанет применяться.
- 🚫 Разработка прямо в рабочей базе. Ошибка в коде расширения бьёт по всем пользователям сразу. Делайте и проверяйте на копии.
- 🚫 Забытое обновление структуры. Расширение загружено, а поле не видно — потому что не выполнили обновление конфигурации базы данных.
- 🚫 Одно расширение «на всё». Печать, интеграция и проверки в одном расширении: сломалась одна часть — отключать приходится всё. Делите по задачам.
- 🚫 Удаление вместо отключения. Если доработка временно мешает, снимите флажок активности. Удаление сотрёт данные, которые расширение хранило.