Расширения конфигурации 1С: с какой версии платформы и как они менялись
Содержание
Расширения конфигурации появились в 1С в платформе 8.3.6, которая вышла в 2015 году. С тех пор механизм прошёл длинный путь: от правки форм и ролей до собственных справочников, документов и точечной правки кода типовых процедур.
Типичная ситуация: программист приходит на новый проект, видит типовую Бухгалтерию 3.0 «на поддержке» и десяток доработок в одном файле .cfe. Вопрос «а с какой версии это вообще работает и что можно сделать расширением» возникает сразу. История механизма отвечает на него лучше любой документации: по ней видно, какие возможности добавлялись и почему одни доработки до сих пор приходится делать иначе.
Как дорабатывали типовые конфигурации до расширений
До 8.3.6 у разработчика было два пути, и оба с издержками.
Путь 1. Снять конфигурацию с поддержки или включить возможность изменения. В конфигураторе включали редактирование объектов типовой конфигурации и правили модули, формы и макеты напрямую. Дальше начиналась боль:
- 🔧 каждое обновление релиза превращалось в сравнение и объединение трёх конфигураций: старой поставки, новой поставки и вашей доработанной;
- ⏱ на крупной доработке обновление одного релиза занимало от нескольких часов до нескольких дней работы программиста;
- 🧩 при пропуске пары релизов конфликты накапливались, и база «застывала» на старой версии;
- 📉 бухгалтерия годами сидела без свежих форм отчётности, потому что обновить базу было дорого.
Путь 2. Внешние обработки и отчёты. Файлы .epf и .erf не трогали конфигурацию и не мешали обновлениям. Через подсистему дополнительных отчётов и обработок их подключали как печатные формы, заполнение табличных частей, регламентные задания.
Но внешняя обработка не может вмешаться в поведение типового объекта. Добавить реквизит в документ, изменить проверку при проведении, спрятать кнопку на форме ей не под силу.
Частично спасали подписки на события и общие модули, но они тоже жили внутри конфигурации. Любая такая доработка снова требовала включить возможность изменения.
Поэтому фирма 1С искала способ дорабатывать типовые решения, не трогая их код. Ответом стали расширения.
В какой версии платформы появились расширения 1С
Механизм расширений конфигурации появился в платформе 8.3.6. Это первый релиз, где можно было создать расширение , подключить его к базе и при этом оставить основную конфигурацию на полной поддержке.
В ряде материалов встречается версия 8.3.10. Это ошибка или подмена понятий. К 8.3.10 механизм просто стал достаточно зрелым для массовых доработок, но первые расширения работали уже на 8.3.6.
Что умела первая версия:
- Заимствовать объекты. В расширение «переносится» ссылка на объект основной конфигурации, и его можно дополнять.
- Менять управляемые формы. Добавлять элементы, команды, обработчики событий.
- Перехватывать процедуры с помощью аннотаций перед объявлением метода:
&Перед— ваш код выполняется до типового;&После— после типового;&Вместо— вместо типового.
- Добавлять роли, подсистемы, общие команды и менять командный интерфейс.
Пример перехвата в модуле формы расширения:
&НаКлиенте
&После("ПриОткрытии")
Процедура Расш1_ПриОткрытииПосле(Отказ)
Если Не Отказ Тогда
Элементы.Комментарий.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
Префикс Расш1_ задаётся в свойствах расширения. Платформа подставляет его в имена новых объектов и методов, чтобы они не пересекались с именами основной конфигурации.
Возможности первых релизов были узкими. Если в базе стоит старая платформа 8.3.6–8.3.9, многие современные расширения на ней просто не подключатся: их режим совместимости требует номер платформы не ниже указанного в свойствах расширения.
Эволюция расширений по версиям платформы 8.3
Механизм рос постепенно. Ниже — основные вехи, сгруппированные по этапам.
| Этап | Версии платформы | Что добавилось |
|---|---|---|
| Старт | 8.3.6 | Заимствование, правка управляемых форм, аннотации &Перед, &После, &Вместо, роли и подсистемы |
| Расширение области | 8.3.7–8.3.10 | Собственные отчёты и обработки в расширении, перехват в модулях объектов и менеджеров, свойство «Назначение», безопасный режим и защита от опасных действий |
| Свои данные | 8.3.11–8.3.12 | Собственные справочники, документы, регистры и другие объекты, хранящие данные; новые реквизиты и табличные части у заимствованных объектов |
| Точечная правка кода | 8.3.16 | Аннотация &ИзменениеИКонтроль с блоками #Вставка и #Удаление |
| Зрелость | 8.3.17 и новее | Улучшения проверки применимости, работа с расширениями в 1С:EDT, оптимизация загрузки большого числа расширений |
Собственные отчёты, обработки и назначение расширения
Возможность класть в расширение свои отчёты и обработки сразу сократила число внешних файлов. Печатную форму или служебную обработку теперь можно держать рядом с доработкой формы, в одном .cfe.
Свойство «Назначение» разделило расширения на три вида. Платформа применяет их в строгом порядке:
- Исправление — срочная правка ошибки типовой конфигурации, обычно временная.
- Адаптация — подгонка типового решения под учёт конкретной компании.
- Дополнение — новая функциональность поверх типовой.
Порядок важен, когда несколько расширений перехватывают одну процедуру: исправления срабатывают раньше адаптаций, адаптации раньше дополнений.
Безопасный режим
Расширение по умолчанию работает в безопасном режиме. В нём запрещены операции с файлами, внешними компонентами, COM-объектами и привилегированный режим. Снять ограничение может только администратор при подключении расширения.
Это сделало расширения пригодными для облачных сервисов: в тонком клиенте сервиса пользователь подключает свою доработку, а сервер защищён от опасного кода.
Собственные данные
До 8.3.11 расширение умело только менять поведение. Хранить новые данные приходилось в реквизитах, заранее заложенных типовой конфигурацией, или во внешних регистрах.
С появлением собственных объектов расширение стало полноценной мини-конфигурацией: свой справочник «Пропуска сотрудников», свой регистр сведений , свой документ. Появилась и возможность добавлять реквизиты к типовым документам.
&ИзменениеИКонтроль
Раньше, чтобы поменять одну строку внутри длинной типовой процедуры, её копировали целиком под &Вместо. После обновления типовой код менялся, а копия в расширении оставалась старой. Ошибки было трудно поймать.
&ИзменениеИКонтроль решил эту проблему. Вы берёте типовую процедуру, помечаете вставки и удаления, а платформа при каждом подключении сверяет остальной текст с исходником. Если поставщик поменял код, расширение получает ошибку применимости, и программист сразу видит, где разбираться.
&ИзменениеИКонтроль("ОбработкаПроверкиЗаполнения")
Процедура Расш1_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// ... типовой текст процедуры без изменений ...
#Вставка
ПроверяемыеРеквизиты.Добавить("Комментарий");
#КонецВставки
// ... типовой текст процедуры без изменений ...
КонецПроцедуры
Строки с комментариями здесь только обозначают место. В реальном расширении конфигуратор копирует туда полный текст типовой процедуры.
Расширение конфигурации и внешняя обработка: в чём разница
Оба механизма не трогают основную конфигурацию, поэтому их часто путают. Задачи у них разные.
| Критерий | Расширение (.cfe) | Внешняя обработка или отчёт (.epf, .erf) |
|---|---|---|
| Где хранится | В информационной базе | В отдельном файле или в справочнике дополнительных обработок |
| Меняет типовые объекты | Да: формы, модули, реквизиты, роли | Нет |
| Перехват событий | Да, через аннотации | Нет |
| Свои справочники и регистры | Да, с 8.3.11 | Нет |
| Как подключить | Конфигуратор или режим «Предприятие» | Открыть файл или зарегистрировать в дополнительных обработках |
| Нужно ли обновление структуры БД | Да, если расширение добавляет данные | Нет |
| Типичная задача | Изменить логику типового документа | Печатная форма, разовая загрузка, отчёт |
Правило выбора простое. Если задача решается «рядом» с типовой конфигурацией и не меняет её поведение, хватит внешней обработки. Если нужно изменить, как ведёт себя документ, форма или права, нужно расширение.
Внешнюю печатную форму в конфигурациях на БСП подключить проще: ничего не нужно обновлять и согласовывать с правами на расширения. Расширение оправдано, когда печатная форма требует новых реквизитов или правки формы документа.
Где расширения применяют сейчас
Сегодня расширения стали стандартным способом дорабатывать типовые конфигурации. Основные сценарии:
- 🧾 печатные формы и отчёты с данными, которых нет в типовых;
- 🔒 контроль при проведении: запрет провести реализацию без договора, проверка лимита по контрагенту;
- 🖥 правка форм: скрыть лишние поля, добавить кнопку, поменять порядок колонок;
- 🔗 интеграции с сайтом, складской системой, банком через HTTP-сервисы и регламентные задания;
- 🩹 исправления ошибок релиза до выхода исправленной версии от поставщика;
- ☁️ доработки в облачных сервисах, где снять конфигурацию с поддержки нельзя в принципе.
Подключают расширения двумя способами.
В конфигураторе: меню Конфигурация → Расширения конфигурации. Там создают новое расширение, загружают файл .cfe, открывают дерево объектов и обновляют расширение в базе.
В режиме «Предприятие»: через Все функции → Стандартные → Управление расширениями конфигурации. В конфигурациях на БСП, например в Бухгалтерии 3.0, есть отдельный раздел: Администрирование → Печатные формы, отчеты и обработки → Расширения. Там же можно включить или отключить расширение
и снять безопасный режим.
Ограничения расширений и нюансы в работе
Расширение не всесильно. Часть ограничений заложена в механизм сознательно.
Чего расширение не умеет:
- ❌ удалять объекты основной конфигурации и их реквизиты;
- ❌ менять тип существующего реквизита типового объекта;
- ❌ переименовывать объекты основной конфигурации;
- ❌ работать без проверки применимости: если основная конфигурация изменилась несовместимо, расширение не подключится.
Нюансы, о которых узнают на практике:
- Обновление типовой конфигурации может сломать расширение. Поставщик переименовал элемент формы, а расширение к нему обращается. При запуске появится ошибка применимости. Проверку запускают в конфигураторе, в окне расширений, командой проверки применимости.
- Расширения с данными требуют обновления структуры базы. Если расширение добавляет справочник или реквизит, при его установке нужна реструктуризация. Это не мгновенная операция на большой базе.
- Отключение расширения с данными не удаляет данные сразу. Но и пользоваться ими без расширения нельзя. Перед удалением такого расширения выгрузите нужные сведения.
- Порядок срабатывания. Если два расширения перехватывают одну процедуру через
&Вместо, результат зависит от назначения и порядка подключения. Это частая причина «необъяснимых» ошибок. - Производительность. Каждое подключённое расширение платформа применяет при старте сеанса. Десятки мелких расширений заметно замедляют вход.
Удаление или отключение расширения с собственными данными в рабочей базе делайте только после резервной копии. Обновление структуры при этом требует монопольного доступа: работу пользователей нужно заранее завершить и предупредить их.
Если расширение не применяется
Сначала проверьте режим совместимости расширения и номер платформы. Затем откройте расширение в конфигураторе и найдите объект, на который ругается проверка применимости. Обычно достаточно заново заимствовать изменённый объект и перенести свою правку.
Если ошибку даёт &ИзменениеИКонтроль, сравните текст процедуры с новым типовым и перенесите вставки в обновлённый код. Это та ситуация, ради которой аннотация и создавалась.
Будущее механизма расширений
Фирма 1С последовательно смещает доработки типовых решений в расширения. В новых релизах типовых конфигураций всё больше точек, рассчитанных на расширение: отдельные процедуры-«крючки» в общих модулях, переопределяемые модули БСП.
Тенденции видны уже сейчас:
- 📦 конфигурация остаётся на поддержке во всё большем числе внедрений, а доработки живут в одном или нескольких .cfe;
- 🛠 разработка в 1С:EDT с хранением расширений в Git становится нормой для команд;
- 🧪 автоматическая проверка применимости перед обновлением встраивается в сборочные конвейеры;
- ☁️ облачные сервисы опираются на расширения как на единственный способ кастомизации.
Для бухгалтерии это значит одно: базы обновляются быстрее и дешевле. Программист переносит доработку на новый релиз за минуты там, где раньше тратил день на объединение конфигураций.
Ожидать, что расширения когда-нибудь позволят удалять типовые объекты или менять их структуру, не стоит. Ограничения в механизме не временные: именно они гарантируют, что типовую конфигурацию можно обновить, не разбирая чужие доработки.
Частые вопросы
С какой версии платформы появились расширения 1С?
Можно ли пользоваться расширениями на платформе 8.2?
Снимается ли конфигурация с поддержки при установке расширения?
Можно ли подключить расширение без конфигуратора?
Все функции → Стандартные → Управление расширениями конфигурации или в конфигурациях на БСП через раздел Администрирование. Нужны права администратора.