Правка расширения 1С без снятия типовой с поддержки: от Конфигуратора до рабочей базы
Содержание
Чтобы изменить расширение конфигурации
, откройте базу в Конфигураторе, выберите Конфигурация → Расширения конфигурации и дважды щёлкните нужную строку. Откроется отдельное дерево расширения: правите объекты и модули, затем нажимаете «Обновить конфигурацию
базы данных» (F7) именно в окне расширения. Типовую конфигурацию
при этом с поддержки снимать не нужно — в этом и смысл расширений.
Сложности начинаются в деталях: расширение загружено пользователем через 1С:Предприятие, типовую обновили и оно «отвалилось», правки не видны у бухгалтеров. Разберём весь путь — от подготовки до переноса изменённого расширения в рабочую базу.
Что такое расширение и чем оно отличается от правки самой конфигурации
Расширение — это отдельная мини-конфигурация, которая подключается поверх основной. Оно появилось в платформе 8.3.6 и с тех пор стало главным способом дорабатывать типовые решения.
Есть два пути изменить поведение типовой БП 3.0, ЗУП 3.1 или УТ 11:
| Путь | Что происходит с типовой | Обновление типовой | Когда выбирать |
|---|---|---|---|
| Правка основной конфигурации | Включается возможность изменения, объекты снимаются с поддержки или редактируются с сохранением поддержки | Через сравнение и объединение, вручную разбирать конфликты | Глубокие изменения, которые расширение не умеет |
| Расширение конфигурации | Остаётся на полной поддержке, не меняется | Обычное, в один проход; потом проверить расширение | Печатные формы, реквизиты, правка модулей, отчёты |
У расширения есть свойство «Назначение». От него зависит, как платформа применяет расширения:
- 🔧 Исправление — срочные правки ошибок типовой;
- 🔄 Адаптация — подгонка типовой под процессы компании;
- ➕ Дополнение — новая функциональность, отдельные объекты.
Расширения применяются в порядке «Исправление → Адаптация → Дополнение». Если два расширения меняют один метод, порядок влияет на результат.
Где живут расширения
Расширение хранится в самой информационной базе, а не в файле. Файл .cfe — это лишь выгрузка для переноса. Поэтому все расширения базы видны в Конфигураторе, даже если их добавили через пользовательский режим.
В БП 3.0, ЗУП 3.1 и УТ 11 список расширений в режиме 1С:Предприятие открывается так: Администрирование → Печатные формы, отчёты и обработки → Расширения. Там их можно подключить, отключить флагом «Активно» или заменить из файла. Править код там нельзя — только в Конфигураторе.
Подготовка базы перед изменением расширения
Правка расширения не трогает данные типовой. Но если расширение добавляет свои реквизиты или справочники, при обновлении меняется структура таблиц. Поэтому готовимся так же, как к любому изменению.
- Сделайте копию базы
. Выгрузка
Администрирование → Выгрузить информационную базув Конфигураторе создаёт.dt. Перед правкой расширения с данными копия обязательна. - Сохраните текущее расширение в файл. В окне расширения:
Конфигурация → Сохранить конфигурацию в файл. Получите.cfe— быстрый откат, если правка не удалась. - Проверьте режим совместимости. Свойство «Режим совместимости» у расширения должно соответствовать режиму основной конфигурации. Смотрите его в свойствах корня обоих деревьев.
- Выясните, кто автор. Если расширение купили у разработчика, ваши правки потеряются при его следующей версии. Изменения лучше вынести в собственное расширение.
- Работайте на копии. Отладку ведите в тестовой базе, в рабочую переносите готовый
.cfe.
Монопольный режим для самой правки не нужен. Он может понадобиться в момент применения расширения, которое меняет структуру данных, если в базе работают пользователи.
Как открыть расширение на редактирование и не трогать поддержку
Последовательность в Конфигураторе 8.3 (интерфейс «Такси», платформа 8.3.2x):
- Запустите базу в режиме «Конфигуратор» под пользователем с правами администратора.
- Откройте основную конфигурацию:
Конфигурация → Открыть конфигурацию. Это нужно, чтобы видеть объекты, которые будете заимствовать. - Выберите
Конфигурация → Расширения конфигурации. Откроется список расширений базы. - Дважды щёлкните строку расширения. Рядом с деревом основной конфигурации появится второе дерево — это и есть расширение.
- Вносите изменения в этом втором дереве.
Значок замка в дереве основной конфигурации никуда не денется — и не должен. Если вместо расширения вы видите предложение «Включить возможность изменения», значит, правите не то дерево.
Если нужно именно снять конфигурацию с поддержки
Иногда задачу не решить расширением: например, нужно поменять тип реквизита типового справочника. Тогда правят саму конфигурацию:
Конфигурация → Поддержка → Настройка поддержки.- Кнопка «Включить возможность изменения».
- Для нужных объектов выберите правило «Объект поставщика редактируется с сохранением поддержки». Полное снятие с поддержки оставьте на крайний случай.
После снятия с поддержки каждое обновление типовой превращается в ручное сравнение и объединение. Прежде чем включать изменения, проверьте, не хватит ли расширения.
Правка объектов, модулей и свойств внутри расширения
Заимствование объекта
Расширение не может изменить объект типовой, пока не «заимствует» его. Порядок:
- В дереве основной конфигурации щёлкните правой кнопкой по объекту — справочнику, документу, форме, общему модулю.
- Выберите «Добавить в расширение» и укажите нужное расширение.
- Объект появится в дереве расширения с пометкой заимствованного.
Заимствованный объект показывает свойства исходного, но менять можно не всё. В основном добавляют реквизиты, табличные части, формы, команды, макеты. Изменить тип существующего типового реквизита через расширение нельзя.
Пример: новый реквизит в типовом документе
Типичная задача — добавить в «Реализацию товаров и услуг» поле «Ответственный за доставку». Через расширение это делается без правки типовой:
- Заимствуйте документ: правая кнопка по нему в основном дереве → «Добавить в расширение».
- В дереве расширения раскройте документ и добавьте реквизит в группу «Реквизиты». Имя получит префикс, например
Расш1_ОтветственныйЗаДоставку. - Заимствуйте форму документа тем же способом — через контекстное меню формы.
- Откройте заимствованную форму и перетащите новый реквизит из дерева реквизитов формы в нужную группу элементов.
- Нажмите F7 в окне расширения и согласитесь с изменением структуры.
Данные нового реквизита хранятся в базе вместе с документом, но принадлежат расширению. Отключите расширение — поле исчезнет из формы, включите — значения вернутся.
Изменение кода
В модуле расширения пишется метод с аннотацией. Аннотация говорит платформе, когда выполнить ваш код относительно типового метода:
| Аннотация | Что делает | Риск при обновлении типовой |
|---|---|---|
&Перед("Метод") | Ваш код выполняется до типового | Низкий |
&После("Метод") | Ваш код выполняется после типового | Низкий |
&Вместо("Метод") | Заменяет типовой метод целиком | Высокий: правки типовой в этом методе не дойдут |
&ИзменениеИКонтроль("Метод") | Копия типового метода с отмеченными вставками и удалениями | Средний: платформа сообщит, если исходный метод изменился |
Пример: дописать проверку перед записью документа, не трогая типовой модуль.
&Перед("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если НЕ ЗначениеЗаполнено(Комментарий) Тогда
ОбщегоНазначения.СообщитьПользователю("Заполните комментарий.", ЭтотОбъект, "Комментарий", , Отказ);
КонецЕсли;
КонецПроцедуры
Расш1_ здесь — префикс имён расширения. Он задаётся в свойствах корня дерева расширения, и платформа подставляет его к новым объектам и методам. Так ваши имена не пересекаются с типовыми.
&ИзменениеИКонтроль — лучший выбор, когда нужно поменять пару строк в середине длинного типового метода. &Вместо с копией всего метода «замораживает» старую логику, и следующий релиз типовой её уже не исправит.
Свойства самого расширения
Щёлкните корень дерева расширения и откройте палитру свойств (Alt+Enter). Чаще всего меняют:
- 🏷 Имя и синоним — как расширение видно в списке;
- 🎯 Назначение — Исправление, Адаптация или Дополнение;
- 🔤 Префикс имён — для новых объектов;
- 🧩 Режим совместимости — должен соответствовать основной конфигурации;
- 🔢 Версия — заполняйте при каждой правке, чтобы отличать файлы
.cfe.
Свойства «Безопасный режим» и «Защита от опасных действий» задаются в списке Конфигурация → Расширения конфигурации, отдельно для каждого расширения в базе. Безопасный режим запрещает работу с файлами, COM-объектами и внешними компонентами. Если расширение должно выгружать файлы, флаг снимают сознательно и только для проверенного кода.
Применение изменений
После правки нажмите F7 или кнопку «Обновить конфигурацию базы данных» в окне расширения. Обновление основной конфигурации расширение не применяет. Пользователям, которые уже в базе, нужно перезапустить сеанс, чтобы получить новую версию.
Перенос изменённого расширения в другую базу
Готовое расширение переносят файлом .cfe. Способов три — выбирайте по ситуации.
| Способ | Где | Когда удобно |
|---|---|---|
| Конфигуратор | В окне расширения: Конфигурация → Загрузить конфигурацию из файла, затем F7 | Есть доступ к Конфигуратору, нужна проверка перед применением |
| Пользовательский режим | Администрирование → Печатные формы, отчёты и обработки → Расширения, замена существующего из файла | Бухгалтер или администратор без Конфигуратора |
| Командная строка | Пакетный запуск Конфигуратора | Много баз, автоматизация через планировщик |
Для пакетного режима используются параметры /LoadCfg и /UpdateDBCfg с ключом -Extension:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Base\Buh" /N "Администратор" /P "" ^
/LoadCfg "D:\Ext\Расширение1.cfe" -Extension Расширение1 ^
/UpdateDBCfg -Extension Расширение1 ^
/Out "D:\Ext\log.txt"
Подставьте свой путь к 1cv8.exe, номер платформы, базу и имя расширения. Имя после -Extension — это имя расширения в базе, а не имя файла. Для серверной базы вместо /F указывают /S "сервер\база".
Выгрузить расширение в файл из командной строки можно параметром /DumpCfg "путь.cfe" -Extension Имя.
Загрузка .cfe поверх существующего расширения заменяет его целиком. Если в рабочей базе кто-то правил расширение напрямую, эти правки пропадут. Сначала сохраните рабочую версию в файл и сравните.
Перенос в распределённой базе
Если база участвует в РИБ, проверьте в списке расширений флаг «Использовать в распределённой информационной базе». С ним расширение попадёт в подчинённые узлы с обменом. Без него — придётся загружать в каждый узел вручную.
Что делать с расширением после обновления типовой конфигурации
Главная причина правок расширения — вышел новый релиз БП или ЗУП, и расширение перестало подключаться. Порядок действий:
- Обновите основную конфигурацию как обычно, расширение пока не трогайте.
- Откройте
Конфигурация → Расширения конфигурациии проверьте применимость расширения — платформа покажет, какие заимствованные объекты и методы больше не совпадают. - Откройте дерево расширения. Заимствованные объекты с расхождениями будут отмечены.
- Для
&ИзменениеИКонтрольсравните ваш вариант метода с новым типовым и перенесите вставки. - Если типовой метод переименовали или удалили, найдите новое место для своей логики — обычно в изменениях релиза это видно по имени.
- Обновите БД в окне расширения, увеличьте номер версии, сохраните
.cfe.
Сначала прогоните всё это на копии рабочей базы, обновлённой до того же релиза. Тогда в рабочей базе останется только загрузить проверенный файл.
Типичные ошибки при изменении расширения
Частые вопросы
Можно ли изменить расширение, если оно загружено через 1С:Предприятие, а не в Конфигураторе?
Конфигурация → Расширения конфигурации и откроется на правку, как созданное в Конфигураторе.