Куда 1С сохраняет варианты и пользовательские настройки внешних отчетов

· 9 мин

Содержание

Настройки внешнего отчета 1С хранятся не в файле .erf, а в самой информационной базе: в файловом варианте это файл 1Cv8.1CD, в клиент-серверном — служебные таблицы СУБД. В сам файл отчета зашиты только настройки по умолчанию и предопределённые варианты из схемы компоновки данных. Всё, что пользователь поменял и сохранил, записывается в хранилища настроек базы, привязанные к имени отчета.

Отсюда практический вывод: перенесли .erf на другой компьютер или в другую базу — пользовательские варианты остались на старом месте. Переименовали отчет в конфигураторе — база перестала узнавать его старые настройки.

Какие настройки бывают и где лежит каждая

У отчета на СКД три слоя настроек. Они живут в разных местах, и путаница между ними — главная причина вопросов «куда всё делось».

ЧтоГде хранитсяПереживает перенос файла в другую базу
Настройки по умолчаниювнутри .erf, в схеме компоновки данныхда
Предопределённые варианты отчетавнутри .erf, в схеме компоновки данныхда
Сохранённые пользователем вариантыхранилище вариантов отчетов в базенет
Пользовательские настройки (отборы, период, быстрые настройки)хранилище пользовательских настроек отчетов в базенет
Положение окна, размер колонок формыхранилище системных настроек и настроек данных форм в базенет

Какое именно хранилище используется, решает не платформа, а метаданные:

  • 📦 У самого внешнего отчета в конфигураторе есть свойства Хранилище вариантов и Хранилище настроек. Если они заполнены, отчет пишет туда.
  • 🧩 Если пусты — берутся хранилища из свойств конфигурации: Хранилище вариантов отчетов и Хранилище пользовательских настроек отчетов.
  • 🗄️ Если не задано и там — платформа использует системное хранилище, то есть служебные таблицы базы.

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

Ключ, по которому база находит настройки, строится из имени объекта метаданных внутри файла (вида ВнешнийОтчет.ОстаткиПоСкладам), а не из имени файла на диске. Файл otchet_v2.erf можно переименовать как угодно — настройки подтянутся, пока внутреннее имя прежнее.

Файловая база: всё внутри 1Cv8.1CD

В файловом варианте отдельных файлов с настройками отчетов нет. Варианты, пользовательские и системные настройки лежат в том же 1Cv8.1CD, что и документы со справочниками.

Что из этого следует:

  1. Резервная копия файла 1Cv8.1CD (или выгрузка .dt) содержит и настройки отчетов. Отдельно их бэкапить не нужно.
  2. Скопировали базу целиком на другой компьютер — настройки переехали вместе с ней.
  3. Папка профиля пользователя %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раздать набор отборов на несколько базнужен код, путь на сервере
Хранилище общих настроекбыстро, без изменения метаданныхсложно посмотреть и отредактировать списком
Свой регистр сведенийобщие настройки отдела, контроль и праванужна доработка конфигурации или расширение

Как найти и вернуть пропавшие настройки

Сначала поймите, какой слой пропал. От этого зависит, где искать.

Что именно пропало?

Проверить внутреннее имя отчета

  1. Откройте файл .erf через Файл → Открыть в конфигураторе.
  2. Посмотрите свойство Имя корневого объекта в дереве.
  3. Сравните с именем старой версии файла. Различие в одну букву — и база видит новый отчет.

Посмотреть настройки пользователей в типовой конфигурации

В конфигурациях на БСП откройте Администрирование → Настройки пользователей и прав и перейдите к настройкам пользователей. Там видны настройки отчетов выбранного пользователя. Их можно скопировать другому пользователю или очистить.

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

Достать настройки из резервной копии

  1. Разверните копию .dt в отдельную пустую базу. Рабочую базу не трогайте.
  2. Откройте в копии тот же внешний отчет под тем же пользователем.
  3. Выберите нужный вариант и выгрузите настройки в XML кодом из раздела про файл отчета.
  4. В рабочей базе загрузите XML и сохраните как вариант.

Если вариантов много, в БСП их удобнее перенести как элементы справочника «Варианты отчетов» обработкой выгрузки и загрузки данных в XML. Перед загрузкой в рабочую базу сделайте её резервную копию.

Перед заменой файла внешнего отчета
Выполнено: 0 / 4

Частые ошибки

  • ❌ Искать файл настроек рядом с .erf. Его нет. Всё в базе, кроме того, что разработчик заложил в схему.
  • ❌ Менять имя отчета «для порядка». Переименование внутри файла отрезает все сохранённые варианты пользователей.
  • ❌ Чистить кэш , чтобы сбросить отбор. Кэш и настройки — разные вещи.
  • ❌ Открывать один и тот же отчет как дополнительный и как внешний через Файл → Открыть. В БСП зарегистрированный дополнительный отчет и тот же файл, открытый вручную, могут вести себя как разные объекты — варианты, сохранённые в одном режиме, не видны в другом.
  • ❌ Проверять отчет только под администратором. У администратора свои сохранённые настройки, у пользователя — свои. То, что работает у вас, не обязательно откроется у бухгалтера.

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

Сохранятся ли настройки, если обновить конфигурацию?
Да. Обновление типовой конфигурации не трогает сохранённые варианты и пользовательские настройки внешних отчетов, если внутреннее имя отчета не менялось.
Можно ли сделать вариант общим для всех пользователей?
В конфигурациях на БСП при сохранении варианта можно указать, что он доступен всем или выбранным пользователям. Без БСП общий вариант надёжнее зашить в схему компоновки внутри файла.
Попадают ли настройки отчетов в выгрузку .dt?
Попадают. Выгрузка информационной базы содержит и данные, и хранилища настроек, поэтому после загрузки .dt в новую базу варианты сохраняются.
Почему у одного пользователя отчет показывает другие колонки?
У него сохранены свои пользовательские настройки или выбран другой вариант. Сбросьте настройки отчета у этого пользователя или выберите нужный вариант вручную.
Где хранятся настройки внешней обработки, не отчета?
Тоже в базе: значения реквизитов формы при закрытии сохраняются в хранилище настроек данных форм, если у реквизитов включено сохранение значений.