Куда 1С сохраняет варианты и пользовательские настройки внешних отчетов
Содержание
Настройки внешнего отчета 1С хранятся не в файле .erf, а в самой информационной базе: в файловом варианте это файл 1Cv8.1CD, в клиент-серверном — служебные таблицы СУБД. В сам файл отчета зашиты только настройки по умолчанию и предопределённые варианты из схемы компоновки данных. Всё, что пользователь поменял и сохранил, записывается в хранилища настроек базы, привязанные к имени отчета.
Отсюда практический вывод: перенесли .erf на другой компьютер или в другую базу — пользовательские варианты остались на старом месте. Переименовали отчет в конфигураторе — база перестала узнавать его старые настройки.
Какие настройки бывают и где лежит каждая
У отчета на СКД три слоя настроек. Они живут в разных местах, и путаница между ними — главная причина вопросов «куда всё делось».
| Что | Где хранится | Переживает перенос файла в другую базу |
|---|---|---|
| Настройки по умолчанию | внутри .erf, в схеме компоновки данных | да |
| Предопределённые варианты отчета | внутри .erf, в схеме компоновки данных | да |
| Сохранённые пользователем варианты | хранилище вариантов отчетов в базе | нет |
| Пользовательские настройки (отборы, период, быстрые настройки) | хранилище пользовательских настроек отчетов в базе | нет |
| Положение окна, размер колонок формы | хранилище системных настроек и настроек данных форм в базе | нет |
Какое именно хранилище используется, решает не платформа, а метаданные:
- 📦 У самого внешнего отчета в конфигураторе есть свойства
Хранилище вариантовиХранилище настроек. Если они заполнены, отчет пишет туда. - 🧩 Если пусты — берутся хранилища из свойств конфигурации:
Хранилище вариантов отчетовиХранилище пользовательских настроек отчетов. - 🗄️ Если не задано и там — платформа использует системное хранилище, то есть служебные таблицы базы.
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) хранилища в свойствах конфигурации заданы. Варианты отчетов, в том числе внешних, видны в списке Администрирование → Печатные формы, отчеты и обработки → Варианты отчетов.
Ключ, по которому база находит настройки, строится из имени объекта метаданных внутри файла (вида ВнешнийОтчет.ОстаткиПоСкладам), а не из имени файла на диске. Файл otchet_v2.erf можно переименовать как угодно — настройки подтянутся, пока внутреннее имя прежнее.
Файловая база: всё внутри 1Cv8.1CD
В файловом варианте отдельных файлов с настройками отчетов нет. Варианты, пользовательские и системные настройки лежат в том же 1Cv8.1CD, что и документы со справочниками.
Что из этого следует:
- Резервная копия файла
1Cv8.1CD(или выгрузка.dt) содержит и настройки отчетов. Отдельно их бэкапить не нужно. - Скопировали базу целиком на другой компьютер — настройки переехали вместе с ней.
- Папка профиля пользователя
%APPDATA%\1C\1cv8и%LOCALAPPDATA%\1C\1cv8хранит кэш и список баз, а не варианты отчетов. Очистка кэша их не трогает.
Запуск с ключом /ClearCache или удаление папок кэша не вернёт и не сбросит настройки отчета. Если отчет «запомнил» неудачный отбор, лечится это в самом отчете, а не чисткой профиля.
Прочитать настройки напрямую из 1Cv8.1CD сторонними утилитами не получится осмысленно: значения хранятся сериализованными и сжатыми. Работать с ними нужно средствами платформы — через объекты хранилищ во встроенном языке.
Клиент-серверная база: служебные таблицы СУБД
На сервере 1С с MS SQL Server или PostgreSQL системные хранилища настроек — это отдельные таблицы базы данных. Их имена начинаются с подчёркивания. Обычно встречаются такие:
_CommonSettings— общие настройки;_RepSettings— пользовательские настройки отчетов;_RepVarSettings— варианты отчетов;_FrmDtSettings— настройки данных форм;_SystemSettings— системные настройки (окна, интерфейс);_DynListSettings— настройки динамических списков.
Эти таблицы используются, только когда в конфигурации не задано своё хранилище. В типовых конфигурациях на БСП варианты отчетов хранятся в обычных таблицах справочника, а в системных таблицах остаются настройки форм и интерфейса.
Не правьте и не очищайте эти таблицы запросами SQL в рабочей базе. Поля содержат сжатые двоичные данные, ссылки на пользователей и служебные идентификаторы. Ошибка в запросе даёт неработающие формы у всех пользователей, а штатного отката нет. Любые операции с настройками — только через интерфейс 1С или встроенный язык.
Как понять, какое хранилище работает в вашей базе: откройте конфигурацию в конфигураторе, вызовите свойства корня дерева метаданных и посмотрите группу хранилищ. Пустые поля означают системные таблицы. Заполненные — объект «Хранилище настроек» из ветки Общие, у которого в модуле описано, куда именно пишутся данные.
Для администратора полезно другое: размер этих таблиц. Если _FrmDtSettings или _SystemSettings разрослись до сотен мегабайт, это повод почистить настройки неактивных пользователей штатными средствами, о них ниже.
Что зашито в сам файл отчета
Файл .erf хранит то, что заложил разработчик:
- 📐 схему компоновки данных (основную и дополнительные);
- ⚙️ настройки по умолчанию — отборы, группировки, поля, условное оформление;
- 📑 варианты отчета, описанные в схеме;
- 🧾 макеты, включая табличные документы для оформления.
Табличный документ .mxl к хранению настроек отношения не имеет. Это формат печатной формы или результата отчета. Если в отчете есть макет, он лежит внутри .erf как табличный документ, но отборы и группировки туда не пишутся.
Иногда настройки действительно хранят в отдельном файле. Так делают, чтобы раздать один набор отборов на несколько баз. Штатной кнопки для этого в типовых формах отчетов нет, нужен код. Пример выгрузки и загрузки настроек компоновки в XML:
// Выгрузка настроек в файл
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Temp\nastrojki_otcheta.xml");
СериализаторXDTO.ЗаписатьXML(Запись, КомпоновщикНастроек.Настройки, НазначениеТипаXML.Явное);
Запись.Закрыть();
// Загрузка настроек из файла
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("C:\Temp\nastrojki_otcheta.xml");
Настройки = СериализаторXDTO.ПрочитатьXML(Чтение);
Чтение.Закрыть();
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
Код выполняется на сервере, в модуле объекта отчета или в серверной процедуре формы. Если путь к файлу задан локальный, учтите: в клиент-серверной базе это диск сервера 1С, а не компьютера пользователя.
Чтобы «прошить» удачный вариант в сам .erf, откройте отчет в конфигураторе, в схеме компоновки данных на вкладке Настройки соберите нужные отборы и группировки и сохраните файл. Теперь вариант поедет вместе с файлом в любую базу.
Свой регистр сведений для настроек
Когда штатного хранилища мало — нужно хранить настройки по организации, отделу или делиться ими без БСП — заводят регистр сведений . Внешний отчет сам добавить регистр не может: регистр создаётся в конфигурации или в расширении.
Типичная структура регистра:
| Реквизит | Тип | Назначение |
|---|---|---|
| ИмяОтчета (измерение) | Строка | внутреннее имя внешнего отчета |
| Пользователь (измерение) | СправочникСсылка.Пользователи | чьи настройки |
| Настройки (ресурс) | ХранилищеЗначения | сами настройки компоновки |
Сохранение и чтение:
&НаСервере
Процедура СохранитьВРегистр()
Запись = РегистрыСведений.НастройкиВнешнихОтчетов.СоздатьМенеджерЗаписи();
Запись.ИмяОтчета = "ОстаткиПоСкладам";
Запись.Пользователь = Пользователи.ТекущийПользователь();
Запись.Настройки = Новый ХранилищеЗначения(Отчет.КомпоновщикНастроек.Настройки, Новый СжатиеДанных(9));
Запись.Записать();
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьИзРегистра()
Запись = РегистрыСведений.НастройкиВнешнихОтчетов.СоздатьМенеджерЗаписи();
Запись.ИмяОтчета = "ОстаткиПоСкладам";
Запись.Пользователь = Пользователи.ТекущийПользователь();
Запись.Прочитать();
Если Запись.Выбран() Тогда
Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Запись.Настройки.Получить());
КонецЕсли;
КонецПроцедуры
Здесь НастройкиВнешнихОтчетов — имя регистра из примера, Пользователи.ТекущийПользователь() — функция БСП. В конфигурации без БСП подставьте свой способ определить пользователя.
Есть и вариант попроще, без нового регистра: стандартное хранилище общих настроек.
ХранилищеОбщихНастроек.Сохранить("ВнешнийОтчет.ОстаткиПоСкладам", "НастройкиОтдела", Отчет.КомпоновщикНастроек.Настройки);
Настройки = ХранилищеОбщихНастроек.Загрузить("ВнешнийОтчет.ОстаткиПоСкладам", "НастройкиОтдела");
Без указания имени пользователя настройки пишутся для текущего. Чтобы сохранить для другого, передайте имя пользователя информационной базы пятым параметром метода Сохранить.
Сравнение способов:
| Способ | Когда подходит | Минусы |
|---|---|---|
| Штатные варианты отчета | обычная работа, БСП в конфигурации | привязка к имени отчета и базе |
| Файл XML | раздать набор отборов на несколько баз | нужен код, путь на сервере |
| Хранилище общих настроек | быстро, без изменения метаданных | сложно посмотреть и отредактировать списком |
| Свой регистр сведений | общие настройки отдела, контроль и права | нужна доработка конфигурации или расширение |
Как найти и вернуть пропавшие настройки
Сначала поймите, какой слой пропал. От этого зависит, где искать.
Проверить внутреннее имя отчета
- Откройте файл
.erfчерезФайл → Открытьв конфигураторе. - Посмотрите свойство
Имякорневого объекта в дереве. - Сравните с именем старой версии файла. Различие в одну букву — и база видит новый отчет.
Посмотреть настройки пользователей в типовой конфигурации
В конфигурациях на БСП откройте Администрирование → Настройки пользователей и прав и перейдите к настройкам пользователей. Там видны настройки отчетов выбранного пользователя. Их можно скопировать другому пользователю или очистить.
Этот же механизм решает обратную задачу: отчет «залип» на неправильном отборе и падает при открытии. Очистите настройки этого отчета у пользователя, и он откроется с настройками по умолчанию из файла.
Достать настройки из резервной копии
- Разверните копию
.dtв отдельную пустую базу. Рабочую базу не трогайте. - Откройте в копии тот же внешний отчет под тем же пользователем.
- Выберите нужный вариант и выгрузите настройки в XML кодом из раздела про файл отчета.
- В рабочей базе загрузите XML и сохраните как вариант.
Если вариантов много, в БСП их удобнее перенести как элементы справочника «Варианты отчетов» обработкой выгрузки и загрузки данных в XML. Перед загрузкой в рабочую базу сделайте её резервную копию.
Частые ошибки
- ❌ Искать файл настроек рядом с
.erf. Его нет. Всё в базе, кроме того, что разработчик заложил в схему. - ❌ Менять имя отчета «для порядка». Переименование внутри файла отрезает все сохранённые варианты пользователей.
- ❌ Чистить кэш , чтобы сбросить отбор. Кэш и настройки — разные вещи.
- ❌ Открывать один и тот же отчет как дополнительный и как внешний через
Файл → Открыть. В БСП зарегистрированный дополнительный отчет и тот же файл, открытый вручную, могут вести себя как разные объекты — варианты, сохранённые в одном режиме, не видны в другом. - ❌ Проверять отчет только под администратором. У администратора свои сохранённые настройки, у пользователя — свои. То, что работает у вас, не обязательно откроется у бухгалтера.