Где найти и как отредактировать расширение в 1С 8.3

· 9 мин

Содержание

Расширение конфигурации в 1С 8.3 открывают в Конфигураторе: Конфигурация → Открыть конфигурацию, затем Конфигурация → Расширения конфигурации и двойной щелчок по нужной строке списка. Откроется отдельное дерево объектов расширения, с модулями, формами и макетами. Посмотреть список расширений без Конфигуратора можно и в пользовательском режиме, но редактировать код там нельзя.

Частое заблуждение — искать расширение в дереве основной конфигурации. Его там нет: расширение живёт отдельно и только «подключается» к типовой. Механизм одинаков для всех прикладных решений на платформе 8.3: БП 3.0, ЗУП 3.1, УТ 11 и других. Появился он в платформе 8.3.6.

Что проверить до того, как открывать расширение

Три вещи определяют, получится ли вообще добраться до кода.

🔑 Права пользователя. Для работы в Конфигураторе нужна роль с правом «Администрирование». В типовых конфигурациях это роль «Полные права» (профиль «Администратор»). Если вход в Конфигуратор не пускает или список расширений пуст при заведомо подключённых доработках — сначала смотрите права.

🖥️ Версия платформы. Номер платформы должен быть не ниже того, на котором расширение создавали. Свойство «Режим совместимости» у расширения не может быть выше, чем у основной конфигурации.

💾 Резервная копия. Само открытие ничего не меняет. Но как только вы правите расширение и обновляете базу, изменения сразу действуют для пользователей. Перед правками выгрузите базу через Администрирование → Выгрузить информационную базу или сохраните расширение в файл .cfe (как — ниже).

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

Как открыть расширение конфигурации в Конфигураторе

Шаг 1. Запустите базу в режиме Конфигуратора

В окне запуска 1С выделите базу и нажмите кнопку Конфигуратор. Войдите пользователем с полными правами.

Шаг 2. Откройте основную конфигурацию

Меню Конфигурация → Открыть конфигурацию. Без этого шага расширения можно увидеть в списке, но работать с заимствованными объектами неудобно: не с чем сравнивать.

Шаг 3. Вызовите список расширений

Меню Конфигурация → Расширения конфигурации. Появится окно со списком: имя, синоним, версия, назначение, флаг активности.

Шаг 4. Откройте нужное расширение

Дважды щёлкните по строке. Рядом с деревом основной конфигурации откроется второе дерево — это и есть расширение. Его корень подписан именем расширения, например Расширение1 или ДоработкиПечати.

Шаг 5. Работайте с деревом

Дальше всё как в обычной конфигурации:

  1. Раскройте ветку Общие → Общие модули или ветку нужного документа.
  2. Дважды щёлкните по модулю или форме — откроется редактор.
  3. После правок нажмите F7 или выберите Обновить конфигурацию базы данных, находясь в окне расширения. Обновится только расширение, основная конфигурация не затрагивается.

Если одновременно открыты основная конфигурация и расширение, следите, в каком окне вы нажимаете F7. Обновление основной конфигурации и расширения — разные действия.

Расширения в режиме 1С:Предприятие

Иногда нужно не код смотреть, а проверить, подключено ли расширение, отключить его или выгрузить. Для этого Конфигуратор не нужен.

Где открытьПутьЧто можно сделать
БП 3.0, ЗУП 3.1, УТ 11Администрирование → Печатные формы, отчеты и обработки → РасширенияДобавить из файла, включить или отключить, удалить, сохранить в файл
Любая конфигурацияГлавное меню → Функции для технического специалиста → Стандартные → Управление расширениями конфигурацииТо же, через стандартную форму платформы

Если пункта для технического специалиста нет в главном меню, включите его в параметрах программы: Главное меню → Сервис и настройки → Параметры.

Здесь видно ключевые свойства расширения:

  • ✅ Активно — подключено ли расширение к базе.
  • 🛡️ Безопасный режим — ограничивает доступ кода к файлам, внешним компонентам и COM. Расширения, добавленные пользователем в режиме Предприятия, по умолчанию включаются в безопасном режиме.
  • 🚧 Защита от опасных действий — показывать ли предупреждение, когда расширение пытается выполнить потенциально опасную операцию.
  • 🔁 Используется в распределённой ИБ — передаётся ли расширение в узлы обмена.

Если доработка «пропала» после переноса базы, первым делом откройте этот список. Часто расширение есть, но снят флаг «Активно».

Файл .cfe: как открыть расширение из файла

Расширение хранят и передают в виде файла с расширением .cfe. Двойным щелчком в проводнике он не открывается: файл нужно загрузить в информационную базу.

Загрузить .cfe в Конфигураторе

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

Загрузка файла и обновление базы — два разных шага. Пока не нажато F7, расширение лежит в Конфигураторе, но пользователи его не видят.

Сохранить расширение в файл

В том же меню Конфигурация окна расширений есть команда сохранения в файл. Делайте так перед каждой правкой: это быстрый откат, если что-то пойдёт не так.

Посмотреть .cfe, не трогая рабочую базу

Хотите изучить чужое расширение? Создайте пустую файловую базу на той же конфигурации или на демо-базе, загрузите туда .cfe и открывайте. Рабочая база останется нетронутой.

Сравнить файл с тем, что уже в базе

Откройте расширение в Конфигураторе и выберите Конфигурация → Сравнить, объединить с конфигурацией из файла… — находясь в окне расширения. Укажите .cfe. Покажутся все различия по модулям и формам. Удобно, когда подрядчик прислал новую версию доработки.

Выгрузить и загрузить расширение из командной строки

Когда расширений много или их надо разнести по нескольким базам, удобнее пакетный режим Конфигуратора. Ключ -Extension указывает, что команда относится к расширению, а не к основной конфигурации:

rem Выгрузить расширение в файл
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "" /DumpCfg "D:\Backup\ДоработкиПечати.cfe" -Extension ДоработкиПечати

rem Загрузить расширение из файла и обновить его в базе
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "" /LoadCfg "D:\Backup\ДоработкиПечати.cfe" -Extension ДоработкиПечати /UpdateDBCfg -Extension ДоработкиПечати

Путь к 1cv8.exe и номер платформы подставьте свои. Для серверной базы вместо /F используется /S "сервер\имя_базы". Результат выполнения удобно писать в журнал ключом /Out "D:\log.txt" — если загрузка не прошла, причина будет там.

Открыть расширение в 1С:EDT

Разработчики, которые ведут доработки в Git, открывают расширение в 1С:EDT. Для этого создают проект расширения, связанный с проектом основной конфигурации, и импортируют его из информационной базы или из файла .cfe. Код и формы там те же, но поиск по проекту и сравнение версий удобнее, чем в Конфигураторе.

Как читать дерево расширения: свои и заимствованные объекты

В открытом расширении объекты бывают двух видов.

Собственные объекты созданы в самом расширении: новый общий модуль, отчёт, обработка, роль. У них обычная иконка, правьте их как угодно.

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

Чтобы найти, что именно изменено в заимствованном объекте, откройте его модуль и ищите аннотации перед процедурами:

&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    // код выполнится после типового обработчика
КонецПроцедуры

&Вместо("ЗаполнитьТабличнуюЧасть")
Процедура Расш1_ЗаполнитьТабличнуюЧасть()
    // типовая процедура не выполнится, если не вызвать ПродолжитьВызов()
КонецПроцедуры

Что означают аннотации:

АннотацияКогда срабатываетРиск при обновлении типовой
&ПередДо типовой процедурыНизкий
&ПослеПосле типовой процедурыНизкий
&ВместоВместо типовой; её можно вызвать через ПродолжитьВызов()Средний: новая логика типовой может потеряться
&ИзменениеИКонтрольПравка внутри текста типовой процедурыВысокий: при изменении исходника расширение не применится

Быстро найти все перехватчики можно глобальным поиском по расширению: Правка → Глобальный поиск, строка &Вместо, область поиска — только расширение.

Ещё одна вещь, которую смотрят первым делом, — свойство «Назначение» в свойствах корня расширения: исправление, адаптация или дополнение. От него зависит, в каком порядке применяются расширения, если их несколько.

Если расширений несколько

В одной базе их может быть пять и больше: печатные формы от одного подрядчика, исправление ошибки от другого, интеграция с сайтом от третьего. Платформа применяет их по очереди. Сначала расширения с назначением «Исправление», затем «Адаптация», затем «Дополнение».

Отсюда практическое правило: если два расширения перехватывают одну и ту же процедуру через &Вместо, сработает только одно. Такие конфликты ищут, открывая расширения по очереди и сравнивая списки заимствованных модулей. Если пересечение нашлось, логику лучше собрать в одном расширении, а второе упростить: так поведение программы станет предсказуемым, и при следующем обновлении типовой не придётся гадать, чей код выполнился.

Отладка кода расширения

Расширение отлаживают так же, как основную конфигурацию. Точки останова ставятся прямо в модулях расширения.

Файловая база

  1. Откройте расширение в Конфигураторе и обновите его (F7) — отладчик работает с тем кодом, который применён к базе.
  2. Поставьте точку останова: F9 на нужной строке.
  3. Запустите Отладка → Начать отладку → Тонкий клиент (или F5).
  4. Выполните в программе действие, которое вызывает код. Выполнение остановится на точке.

Клиент-серверная база

Серверный код ловится, только если на сервере 1С включена отладка: служба агента сервера запускается с ключом -debug. Если ключа нет, точки в серверных процедурах будут игнорироваться.

Чтобы добавить ключ, службу агента придётся перезапустить. Все сеансы пользователей оборвутся — делайте это вне рабочего времени и предупредите людей заранее.

Чтобы подключиться к уже работающему сеансу пользователя, используйте Отладка → Подключение и выберите нужный предмет отладки.

Полезные приёмы при отладке

  • 🔍 Табло (Shift+F9 на выражении) — посмотреть значения переменных и вычислить выражение.
  • 📞 Стек вызовов — видно, вызвалась ли сначала типовая процедура, потом процедура расширения.
  • 🧪 Если точка не срабатывает, проверьте флаг «Активно» и не стоит ли перехват &Вместо в другом расширении на ту же процедуру.

Почему расширение не открывается или не применяется

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

Флаг «Безопасный режим» снимайте только для расширений из надёжного источника. Код без ограничений получает доступ к файловой системе сервера и может запускать внешние программы.

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

Можно ли открыть расширение без Конфигуратора и поправить код?
Нет. В режиме 1С:Предприятие можно только подключить, отключить, удалить или сохранить расширение в файл. Код правят в Конфигураторе или в 1С:EDT.
Можно ли редактировать расширение, пока пользователи работают в базе?
Да, монопольный режим не нужен. После обновления расширения уже открытые сеансы получат изменения только после перезапуска программы.
Чем расширение отличается от снятия конфигурации с поддержки?
Расширение меняет поведение типовой, не трогая её код. Конфигурация остаётся на поддержке и обновляется в обычном режиме. Снятие с поддержки заставляет каждое обновление сравнивать и объединять вручную.
Почему в дереве расширения не все реквизиты документа?
В расширение заимствуются только нужные объекты и их части. Остальное остаётся в основной конфигурации. Чтобы использовать реквизит в коде формы, его заимствуют вместе с формой или объектом.
Как узнать, какое расширение меняет конкретную форму?
Откройте форму в режиме Предприятия, затем откройте каждое активное расширение в Конфигураторе и проверьте, есть ли эта форма среди заимствованных. Быстрее — глобальный поиск по имени формы с ограничением области поиска расширениями.