Правка расширения 1С без снятия типовой с поддержки: от Конфигуратора до рабочей базы

· 9 мин

Содержание

Чтобы изменить расширение конфигурации , откройте базу в Конфигураторе, выберите Конфигурация → Расширения конфигурации и дважды щёлкните нужную строку. Откроется отдельное дерево расширения: правите объекты и модули, затем нажимаете «Обновить конфигурацию базы данных» (F7) именно в окне расширения. Типовую конфигурацию при этом с поддержки снимать не нужно — в этом и смысл расширений.

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

Что такое расширение и чем оно отличается от правки самой конфигурации

Расширение — это отдельная мини-конфигурация, которая подключается поверх основной. Оно появилось в платформе 8.3.6 и с тех пор стало главным способом дорабатывать типовые решения.

Есть два пути изменить поведение типовой БП 3.0, ЗУП 3.1 или УТ 11:

ПутьЧто происходит с типовойОбновление типовойКогда выбирать
Правка основной конфигурацииВключается возможность изменения, объекты снимаются с поддержки или редактируются с сохранением поддержкиЧерез сравнение и объединение, вручную разбирать конфликтыГлубокие изменения, которые расширение не умеет
Расширение конфигурацииОстаётся на полной поддержке, не меняетсяОбычное, в один проход; потом проверить расширениеПечатные формы, реквизиты, правка модулей, отчёты

У расширения есть свойство «Назначение». От него зависит, как платформа применяет расширения:

  • 🔧 Исправление — срочные правки ошибок типовой;
  • 🔄 Адаптация — подгонка типовой под процессы компании;
  • ➕ Дополнение — новая функциональность, отдельные объекты.

Расширения применяются в порядке «Исправление → Адаптация → Дополнение». Если два расширения меняют один метод, порядок влияет на результат.

Где живут расширения

Расширение хранится в самой информационной базе, а не в файле. Файл .cfe — это лишь выгрузка для переноса. Поэтому все расширения базы видны в Конфигураторе, даже если их добавили через пользовательский режим.

В БП 3.0, ЗУП 3.1 и УТ 11 список расширений в режиме 1С:Предприятие открывается так: Администрирование → Печатные формы, отчёты и обработки → Расширения. Там их можно подключить, отключить флагом «Активно» или заменить из файла. Править код там нельзя — только в Конфигураторе.

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

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

  1. Сделайте копию базы . Выгрузка Администрирование → Выгрузить информационную базу в Конфигураторе создаёт .dt. Перед правкой расширения с данными копия обязательна.
  2. Сохраните текущее расширение в файл. В окне расширения: Конфигурация → Сохранить конфигурацию в файл. Получите .cfe — быстрый откат, если правка не удалась.
  3. Проверьте режим совместимости. Свойство «Режим совместимости» у расширения должно соответствовать режиму основной конфигурации. Смотрите его в свойствах корня обоих деревьев.
  4. Выясните, кто автор. Если расширение купили у разработчика, ваши правки потеряются при его следующей версии. Изменения лучше вынести в собственное расширение.
  5. Работайте на копии. Отладку ведите в тестовой базе, в рабочую переносите готовый .cfe.

Монопольный режим для самой правки не нужен. Он может понадобиться в момент применения расширения, которое меняет структуру данных, если в базе работают пользователи.

Как открыть расширение на редактирование и не трогать поддержку

Последовательность в Конфигураторе 8.3 (интерфейс «Такси», платформа 8.3.2x):

  1. Запустите базу в режиме «Конфигуратор» под пользователем с правами администратора.
  2. Откройте основную конфигурацию: Конфигурация → Открыть конфигурацию. Это нужно, чтобы видеть объекты, которые будете заимствовать.
  3. Выберите Конфигурация → Расширения конфигурации. Откроется список расширений базы.
  4. Дважды щёлкните строку расширения. Рядом с деревом основной конфигурации появится второе дерево — это и есть расширение.
  5. Вносите изменения в этом втором дереве.

Значок замка в дереве основной конфигурации никуда не денется — и не должен. Если вместо расширения вы видите предложение «Включить возможность изменения», значит, правите не то дерево.

Если нужно именно снять конфигурацию с поддержки

Иногда задачу не решить расширением: например, нужно поменять тип реквизита типового справочника. Тогда правят саму конфигурацию:

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

После снятия с поддержки каждое обновление типовой превращается в ручное сравнение и объединение. Прежде чем включать изменения, проверьте, не хватит ли расширения.

Правка объектов, модулей и свойств внутри расширения

Заимствование объекта

Расширение не может изменить объект типовой, пока не «заимствует» его. Порядок:

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

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

Пример: новый реквизит в типовом документе

Типичная задача — добавить в «Реализацию товаров и услуг» поле «Ответственный за доставку». Через расширение это делается без правки типовой:

  1. Заимствуйте документ: правая кнопка по нему в основном дереве → «Добавить в расширение».
  2. В дереве расширения раскройте документ и добавьте реквизит в группу «Реквизиты». Имя получит префикс, например Расш1_ОтветственныйЗаДоставку.
  3. Заимствуйте форму документа тем же способом — через контекстное меню формы.
  4. Откройте заимствованную форму и перетащите новый реквизит из дерева реквизитов формы в нужную группу элементов.
  5. Нажмите F7 в окне расширения и согласитесь с изменением структуры.

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

Изменение кода

В модуле расширения пишется метод с аннотацией. Аннотация говорит платформе, когда выполнить ваш код относительно типового метода:

АннотацияЧто делаетРиск при обновлении типовой
&Перед("Метод")Ваш код выполняется до типовогоНизкий
&После("Метод")Ваш код выполняется после типовогоНизкий
&Вместо("Метод")Заменяет типовой метод целикомВысокий: правки типовой в этом методе не дойдут
&ИзменениеИКонтроль("Метод")Копия типового метода с отмеченными вставками и удалениямиСредний: платформа сообщит, если исходный метод изменился

Пример: дописать проверку перед записью документа, не трогая типовой модуль.

&Перед("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	Если НЕ ЗначениеЗаполнено(Комментарий) Тогда
		ОбщегоНазначения.СообщитьПользователю("Заполните комментарий.", ЭтотОбъект, "Комментарий", , Отказ);
	КонецЕсли;
КонецПроцедуры

Расш1_ здесь — префикс имён расширения. Он задаётся в свойствах корня дерева расширения, и платформа подставляет его к новым объектам и методам. Так ваши имена не пересекаются с типовыми.

&ИзменениеИКонтроль — лучший выбор, когда нужно поменять пару строк в середине длинного типового метода. &Вместо с копией всего метода «замораживает» старую логику, и следующий релиз типовой её уже не исправит.

Свойства самого расширения

Щёлкните корень дерева расширения и откройте палитру свойств (Alt+Enter). Чаще всего меняют:

  • 🏷 Имя и синоним — как расширение видно в списке;
  • 🎯 Назначение — Исправление, Адаптация или Дополнение;
  • 🔤 Префикс имён — для новых объектов;
  • 🧩 Режим совместимости — должен соответствовать основной конфигурации;
  • 🔢 Версия — заполняйте при каждой правке, чтобы отличать файлы .cfe.

Свойства «Безопасный режим» и «Защита от опасных действий» задаются в списке Конфигурация → Расширения конфигурации, отдельно для каждого расширения в базе. Безопасный режим запрещает работу с файлами, COM-объектами и внешними компонентами. Если расширение должно выгружать файлы, флаг снимают сознательно и только для проверенного кода.

Применение изменений

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

Перед тем как сохранить расширение
Выполнено: 0 / 5

Перенос изменённого расширения в другую базу

Готовое расширение переносят файлом .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 поверх существующего расширения заменяет его целиком. Если в рабочей базе кто-то правил расширение напрямую, эти правки пропадут. Сначала сохраните рабочую версию в файл и сравните.

Перенос в распределённой базе

Если база участвует в РИБ, проверьте в списке расширений флаг «Использовать в распределённой информационной базе». С ним расширение попадёт в подчинённые узлы с обменом. Без него — придётся загружать в каждый узел вручную.

Что делать с расширением после обновления типовой конфигурации

Главная причина правок расширения — вышел новый релиз БП или ЗУП, и расширение перестало подключаться. Порядок действий:

  1. Обновите основную конфигурацию как обычно, расширение пока не трогайте.
  2. Откройте Конфигурация → Расширения конфигурации и проверьте применимость расширения — платформа покажет, какие заимствованные объекты и методы больше не совпадают.
  3. Откройте дерево расширения. Заимствованные объекты с расхождениями будут отмечены.
  4. Для &ИзменениеИКонтроль сравните ваш вариант метода с новым типовым и перенесите вставки.
  5. Если типовой метод переименовали или удалили, найдите новое место для своей логики — обычно в изменениях релиза это видно по имени.
  6. Обновите БД в окне расширения, увеличьте номер версии, сохраните .cfe.

Сначала прогоните всё это на копии рабочей базы, обновлённой до того же релиза. Тогда в рабочей базе останется только загрузить проверенный файл.

Типичные ошибки при изменении расширения

Диагностика: выберите симптом

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

Можно ли изменить расширение, если оно загружено через 1С:Предприятие, а не в Конфигураторе?
Да. Расширение хранится в базе, поэтому оно появится в списке Конфигурация → Расширения конфигурации и откроется на правку, как созданное в Конфигураторе.
Почему у купленного расширения не видно код модулей?
Разработчик может поставлять расширение без исходных текстов. Такое расширение можно подключить и отключить, но не изменить. Нужные правки делайте в своём отдельном расширении.
Нужно ли выгонять пользователей из базы, чтобы изменить расширение?
Для правки в Конфигураторе — нет. При применении расширения, которое меняет структуру данных, платформа может потребовать монопольный режим; работающие пользователи получат новую версию после перезапуска сеанса.
Как временно выключить расширение, не удаляя его?
Снимите флаг «Активно» в списке расширений — в Конфигураторе или в разделе администрирования. Данные расширения при этом сохраняются, его можно включить обратно.
Если удалить расширение, пропадут ли его данные?
Если расширение добавляло свои реквизиты и справочники, удаление уничтожит и их. Перед удалением сделайте выгрузку базы и сохраните расширение в файл.