Расширение конфигурации 1С: в какой таблице оно лежит, как его найти и сохранить

· 9 мин

Содержание

Расширение конфигурации 1С 8.3 хранится внутри самой информационной базы, а не отдельным файлом рядом с ней. В файловом варианте оно лежит в файле 1Cv8.1CD, в клиент-серверном — в служебных таблицах базы данных на SQL-сервере. Отдельный файл .cfe появляется только тогда, когда вы сами выгружаете расширение из базы.

Отсюда главное следствие. Скопировали базу, выгрузили .dt или сделали бэкап SQL — расширение уехало вместе с ней. Искать «папку с расширениями» на диске бессмысленно: там бывают только кеши и копии, которые сделал кто-то из людей.

Как устроено хранение расширения в файловой базе

Файловая информационная база — это каталог, в котором главный файл 1Cv8.1CD. В нём платформа держит всё сразу:

  • 📦 основную конфигурацию и конфигурацию базы данных;
  • 🧩 все подключённые расширения с их свойствами;
  • 🗂 данные пользователей, в том числе данные собственных объектов расширений;
  • ⚙️ служебные параметры, список пользователей, настройки.

Рядом в каталоге базы бывают и другие файлы, но расширения там нет:

Файл или папкаЧто этоЕсть ли там расширение
1Cv8.1CDсама базада, внутри
1Cv8.cgrжурнал регистрации (старый формат)нет
папка 1Cv8Logжурнал регистрациинет
1Cv8tmp.1CDвременный файл при операциях с базойнет
папка 1Cv8FTxtиндекс полнотекстового поисканет

Вытащить расширение из 1Cv8.1CD руками, без платформы, нельзя: формат закрытый, и попытки «распаковать» файл сторонними утилитами — прямой путь к повреждённой базе.

Самая надёжная копия файловой базы вместе со всеми расширениями — копия 1Cv8.1CD, снятая, когда в базе никто не работает.

Где лежит расширение в клиент-серверной базе на SQL

В клиент-серверном варианте база живёт в СУБД: MS SQL Server или PostgreSQL. Расширения хранятся в служебных таблицах платформы, рядом с таблицами основной конфигурации Config и ConfigSave.

Что встречается в базе:

  • 🧾 _ExtensionsInfo — список расширений и их свойства: имя, версия, активность, порядок применения;
  • 📚 ConfigCAS — сами конфигурации расширений, которые применены к базе;
  • ✏️ ConfigCASSave — изменения расширений, сохранённые в Конфигураторе, но ещё не применённые к базе данных.

Данные собственных объектов расширения (справочников, документов, регистров, реквизитов в заимствованных объектах) лежат в обычных таблицах базы. По именам вида _Reference… их не отличить от таблиц основной конфигурации. Узнать, какая таблица к чему относится, можно функцией ПолучитьСтруктуруХраненияБазыДанных(), она доступна из встроенного языка.

Ничего не меняйте в этих таблицах напрямую через SQL. Платформа хранит там данные в своём формате и ведёт контрольные связи. Ручной DELETE или UPDATE даёт базу, которая не открывается или открывается с ошибками конфигурации. Удаляют и меняют расширения только средствами 1С.

Прямое чтение таблиц через SQL имеет смысл в одном случае: убедиться, что расширение в базе вообще есть. Например, когда база не запускается, а подозрение падает на расширение. Достать из таблицы рабочий .cfe этим способом не получится.

Что лежит на диске сервера и клиента

На дисках компьютеров файлы, связанные с расширением, всё же есть. Только это кеши и копии, а не хранилище.

На компьютере пользователя

Клиент 1С кеширует конфигурацию, включая расширения, в профиле пользователя Windows:

  • %APPDATA%\1C\1cv8\ — каталоги с идентификаторами баз (GUID);
  • %LOCALAPPDATA%\1C\1cv8\ — локальный кеш.

В каждой папке-GUID лежат кешированные метаданные одной базы. Если после обновления расширения пользователь видит старую форму или старые команды, причина часто в этом кеше. Его очищают запуском с ключом /ClearCache или удалением папки базы при закрытой 1С.

На сервере 1С

Кластер серверов держит служебные данные в каталоге srvinfo. Внутри — reg_1541 (номер совпадает с портом менеджера кластера), а в нём папки с GUID информационных баз. Там лежат кеши, данные сеансов и индекс полнотекстового поиска, но не исходник расширения.

Чистить серверный кеш в srvinfo можно только при остановленной службе агента сервера 1С. Остановка службы обрывает сеансы всех пользователей всех баз кластера, поэтому делают это в нерабочее время и после предупреждения пользователей.

Файлы .cfe и .cfu: чем они отличаются

Расширение файлаЧто этоГде появляется
.cfeвыгрузка одного расширениятам, куда его сохранили вручную или скриптом
.cfвыгрузка основной конфигурациитам же
.cfuфайл обновления поставки основной конфигурациив каталоге шаблонов обновлений
.dtвыгрузка всей базытуда, куда её выгрузили

Файл .cfu к расширениям отношения не имеет: это формат обновлений типовых конфигураций. Расширение выгружается только в .cfe.

Чтобы найти выгруженные .cfe на сервере или своём компьютере, достаточно поиска по маске:

dir C:\ /s /b *.cfe

Через PowerShell то же самое с датой изменения:

Get-ChildItem -Path D:\ -Filter *.cfe -Recurse -ErrorAction SilentlyContinue | Select-Object FullName, LastWriteTime

Как посмотреть расширения базы: Конфигуратор и режим Предприятия

В Конфигураторе

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

Из этого окна расширение сохраняют в файл .cfe и загружают обратно. Команды сохранения и загрузки находятся в меню Конфигурация открытого расширения и в командах окна списка.

В свойствах расширения смотрите четыре вещи:

  • ✅ Активно — применяется ли расширение к базе прямо сейчас;
  • 🛡 Безопасный режим и Защита от опасных действий — ограничения при работе кода;
  • 🎯 Назначение — исправление, адаптация или дополнение; от него зависит порядок применения;
  • 🌐 Область действия — вся информационная база или отдельная область данных (актуально при разделении данных).

В режиме 1С:Предприятие

Без Конфигуратора список расширений видно двумя способами:

  • в типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11): Администрирование → Печатные формы, отчеты и обработки → Расширения;
  • в любой конфигурации: Все функции → Стандартные → Управление расширениями конфигурации. Если пункта «Все функции» нет в меню, включите его в параметрах программы (Сервис и настройки → Параметры).

Оттуда расширение тоже можно сохранить в файл, загрузить новое или отключить. Нужны права администратора.

Из встроенного языка

Для массовой выгрузки удобно получить данные расширений кодом на сервере:

&НаСервере
Процедура ВыгрузитьРасширенияНаСервере(Каталог)
	Для Каждого Расширение Из РасширенияКонфигурации.Получить() Цикл
		Данные = Расширение.ПолучитьДанные();
		ИмяФайла = Каталог + "\" + Расширение.Имя + "_" + Расширение.Версия + ".cfe";
		Данные.Записать(ИмяФайла);
	КонецЦикла;
КонецПроцедуры

Файлы запишутся в каталог на сервере 1С (в файловом варианте — на компьютере, где выполняется серверный код). У учётной записи, под которой работает служба, должны быть права на запись в этот каталог.

Версии и резервные копии расширений

Расширение живёт в базе в одном экземпляре. Истории версий внутри самой базы нет: загрузили новый .cfe — старый вариант перезаписан. Поэтому версионирование придётся организовать самим.

Какие есть способы

СпособЧто сохраняетсяКогда подходит
Файл .cfe с датой в имениодно расширение целикоммелкие доработки, один разработчик
Хранилище конфигурацииистория версий с авторами и комментариямикоманда, параллельная разработка
Выгрузка в XML + Gitисходники в текстовом виде, построчная разницаразработка в EDT или с CI
Выгрузка .dt / бэкап СУБДбаза вместе со всеми расширениямирегулярная страховка

Хранилище для расширения

Расширение подключают к собственному хранилищу, отдельному от хранилища основной конфигурации. Делается это из окна открытого расширения: в меню Конфигурация → Хранилище конфигурации. Физически хранилище — каталог с файлом 1cv8ddb.1CD, лежит там, где его создали (локальный каталог, сетевая папка или сервер хранилища).

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

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

Пакетный режим Конфигуратора принимает параметр -Extension с именем расширения. Это удобно для ночного скрипта:

"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "" /DumpCfg "D:\Backup\Ispravleniya.cfe" -Extension "Исправления" /Out "D:\Backup\dump.log"

Для клиент-серверной базы вместо /F используют /S "сервер\имябазы". Номер платформы в пути подставьте свой. Для Git то же расширение выгружают в XML командой /DumpConfigToFiles "каталог" -Extension "Имя".

Страховка перед изменением расширений
Выполнено: 0 / 4

Типичные проблемы и как вернуть расширение

Расширение пропало после обновления конфигурации

Обычно оно не пропало, а перестало применяться. Если в новом релизе изменили или удалили объект, который расширение заимствует, платформа сообщает, что расширение не может быть применено. Сам объект расширения в базе остаётся.

Что делать:

  1. Откройте Конфигурация → Расширения конфигурации и проверьте флаг «Активно».
  2. Откройте расширение и выполните проверку (Конфигурация → Проверка конфигурации): она покажет, какие заимствованные объекты разошлись с основной конфигурацией.
  3. Исправьте расширение или загрузите версию, адаптированную под новый релиз.

Случайно удалили расширение

Если у расширения были собственные объекты с данными, при удалении эти данные тоже удаляются. Повторная загрузка того же .cfe данные не вернёт — только конфигурацию.

Порядок восстановления:

  • 📁 есть .cfe, данных в объектах не было — просто загрузите его заново;
  • 💾 данные нужны — разверните бэкап базы в отдельную копию, выгрузите оттуда .cfe, а данные перенесите обработкой или выгрузкой-загрузкой;
  • 🗃 расширение было в хранилище — получите последнюю версию из хранилища.

База не открывается из-за расширения

Бывает, что ошибка в коде расширения валит запуск в пользовательском режиме. Конфигуратор при этом открывается: отключите флаг «Активно» у расширения, сохраните и запустите базу. Затем разбирайтесь с кодом спокойно.

Изменения сохранены, но в базе их нет

Разработчик правил расширение в Конфигураторе, нажал «Сохранить», закрыл окно. Изменения записаны в базу как редактируемая версия, но к базе данных не применены. Пользователи их не увидят, пока не выполнить обновление конфигурации базы данных для этого расширения (клавиша F7 в окне расширения).

Пользователь видит старую версию

Расширение уже заменили, а у человека старые формы. Почти всегда это клиентский кеш. Закройте 1С у пользователя и запустите её с ключом /ClearCache или удалите папку базы в %APPDATA%\1C\1cv8\.

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

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

Переносится ли расширение вместе с выгрузкой .dt?
Да. Файл .dt содержит всю информационную базу, включая расширения и данные их объектов.
Попадает ли расширение в файл .cf основной конфигурации?
Нет. Файл .cf содержит только основную конфигурацию. Каждое расширение выгружают в свой .cfe.
Можно ли подключить один .cfe к нескольким базам?
Да, файл загружают в каждую базу отдельно. Расширение должно подходить к конфигурации и её релизу, иначе оно не применится.
Сколько расширений можно подключить к одной базе?
Жёсткого ограничения на практике нет, но каждое расширение замедляет запуск и обновление. Мелкие правки лучше собирать в одно-два расширения.
Где хранятся расширения в облачной базе с разделением данных?
Там же, в базе сервиса. Расширение с областью действия «Область данных» видно только в своей области, а расширение уровня всей базы ставит администратор сервиса.