Варианты и пользовательские настройки отчетов: куда их пишет платформа и БСП

· 10 мин

Содержание

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

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) варианты дополнительно уходят в справочник ВариантыОтчетов. Поэтому ответ на вопрос «где лежит мой отчет» зависит от того, что именно потерялось: вариант целиком или только последние правки пользователя.

Как устроено хранение вариантов и настроек отчетов

Отчет на системе компоновки данных (СКД) держит три слоя настроек. Их легко спутать, а лежат они в разных местах.

СлойЧто в нёмГде хранится
Настройки вариантаГруппировки, поля, отборы, оформление, заданные при сохранении вариантаХранилище вариантов отчетов
Пользовательские настройкиЧто человек поменял в шапке отчета: период, организация, быстрые отборыХранилище пользовательских настроек отчетов
Системные настройкиКакой вариант открыт последним, размеры окна, служебные параметры формыХранилище системных настроек

Какие хранилища использовать, задаётся в свойствах корня конфигурации в Конфигураторе, группа «Хранение настроек»:

  • 🗂 Хранилище вариантов отчетов — свойство ХранилищеВариантовОтчетов;
  • 👤 Хранилище пользовательских настроек отчетов — свойство ХранилищеПользовательскихНастроекОтчетов;
  • ⚙️ Хранилище общих настроек, хранилище настроек данных форм — для остального интерфейса.

Если свойство не заполнено, платформа использует стандартное хранилище. Оно пишет данные в системные таблицы базы. Если в свойстве указан объект метаданных «Хранилище настроек», запись и чтение идут через его модуль менеджера — так поступает БСП.

Системные таблицы в клиент-серверной базе

В базе на MS SQL или PostgreSQL стандартные хранилища — это отдельные таблицы:

  • _RepVarSettings — варианты отчетов;
  • _RepSettings — пользовательские настройки отчетов;
  • _SystemSettings — системные настройки;
  • _CommonSettings — общие настройки;
  • _FrmDtSettings — настройки данных форм.

В каждой строке есть идентификатор пользователя, ключ объекта, ключ настроек и сами данные в сжатом двоичном виде.

Не правьте эти таблицы запросами в СУБД. Формат данных внутренний, а прямая запись в обход платформы может испортить настройки всех пользователей сразу. Читать и менять настройки нужно средствами 1С — об этом ниже.

Почему в %APPDATA% настроек отчетов нет

Частая ошибка — искать настройки в профиле Windows. В %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8 лежат кэш метаданных и список баз, но не варианты отчетов. Поэтому очистка кэша не удаляет сохранённые варианты, а переустановка платформы их не возвращает.

Из чего состоят настройки отчета на СКД

Всё, что пользователь видит в окне «Настройки» отчета, — это объекты компоновщика настроек. У формы отчета есть реквизит Отчет, у него — КомпоновщикНастроек типа КомпоновщикНастроекКомпоновкиДанных.

Основные свойства компоновщика:

  • 📐 Настройки — тип НастройкиКомпоновкиДанных, полная настройка варианта: структура, выбранные поля, отбор, порядок, условное оформление, параметры данных;
  • ✏️ ПользовательскиеНастройки — тип ПользовательскиеНастройкиКомпоновкиДанных, только элементы, вынесенные в пользовательские (флажок «Включать в пользовательские настройки» в редакторе СКД);
  • 🔒 ФиксированныеНастройки — то, что задано кодом и пользователем не меняется.

При сохранении варианта в хранилище вариантов уходит объект НастройкиКомпоновкиДанных. При закрытии отчета в хранилище пользовательских настроек уходит ПользовательскиеНастройкиКомпоновкиДанных. Отсюда практическое следствие: если пользователь поменял группировку и не сохранил вариант, правка останется только у него и только до сброса пользовательских настроек.

💡 Элемент отбора виден в шапке отчета, только если в СКД у него включён режим пользовательской настройки. Если отбор «пропал из шапки», проверьте этот флажок в варианте, а не хранилище.

Где лежат варианты в типовых конфигурациях на БСП

Подсистема «Варианты отчетов» БСП подменяет стандартное хранилище своим объектом «Хранилище настроек». Его модуль менеджера сохраняет варианты в справочник ВариантыОтчетов. Настройки компоновки лежат там в реквизите типа «Хранилище значения».

В интерфейсе пользователя список вариантов открывается так:

КонфигурацияПуть к списку вариантов
Бухгалтерия предприятия 3.0Администрирование → Печатные формы, отчеты и обработки → Варианты отчетов
ЗУП 3.1Администрирование → Печатные формы, отчеты и обработки → Варианты отчетов
Управление торговлей 11НСИ и администрирование → Печатные формы, отчеты и обработки → Варианты отчетов

Если в разделе нет этой ссылки, откройте справочник напрямую: Сервис и настройки → Функции для технического специалиста → Справочники → Варианты отчетов. Команда «Функции для технического специалиста» включается в параметрах пользователя.

Что хранят справочник и связанные объекты

В БСП варианты описаны несколькими объектами. Их роли:

  • 📚 Справочник ВариантыОтчетов — и пользовательские, и типовые варианты отчетов конфигурации: ссылка на отчет, ключ варианта, автор, признак пользовательского варианта, сами настройки;
  • 📦 Справочник ПредопределенныеВариантыОтчетов — описания вариантов, поставляемых в конфигурации. Его заполняет обновление, руками его не правят;
  • 🧭 Регистр сведений НастройкиВариантовОтчетов — персональная видимость: в каких разделах панели отчетов вариант показан конкретному пользователю и входит ли он в быстрый доступ.

Отдельного регистра, где лежат сами настройки вариантов, в БСП нет. Регистр отвечает за то, показывать ли вариант, справочник — за то, что в варианте. Это различие важно при поиске: вариант может быть цел в справочнике, но скрыт у пользователя через регистр.

А пользовательские правки поверх варианта?

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

Чтение и запись настроек из кода

Платформа даёт глобальные менеджеры ХранилищеВариантовОтчетов, ХранилищеПользовательскихНастроекОтчетов и ХранилищеСистемныхНастроек. Методы у всех одинаковые: Сохранить, Загрузить, ПолучитьСписок, Удалить. Если в конфигурации назначено своё хранилище, вызовы уходят в него.

Ключ объекта для отчета начинается с Отчет. и имени отчета из метаданных. Точный формат ключа настроек меняется от конфигурации к конфигурации, поэтому сначала посмотрите, что реально сохранено.

Список сохранённых настроек пользователя

Код выполняется на сервере, в режиме администратора — например, во внешней обработке:

&НаСервере
Процедура ПоказатьНастройкиОтчетаНаСервере(ИмяОтчета, ИмяПользователя)

	КлючОбъекта = "Отчет." + ИмяОтчета;

	Список = ХранилищеПользовательскихНастроекОтчетов.ПолучитьСписок(КлючОбъекта, ИмяПользователя);
	Для Каждого Элемент Из Список Цикл
		Сообщить(СтрШаблон("Ключ настроек: %1 | Представление: %2",
			Элемент.Значение, Элемент.Представление));
	КонецЦикла;

	Если Список.Количество() = 0 Тогда
		Сообщить("Для этого пользователя настроек отчета не найдено");
	КонецЕсли;

КонецПроцедуры

ИмяПользователя — это имя пользователя информационной базы (поле «Имя» в Конфигураторе), а не ФИО из справочника «Пользователи».

Загрузка и сохранение одной настройки

&НаСервере
Процедура СкопироватьНастройкуНаСервере(КлючОбъекта, КлючНастроек, ОтКого, Кому)

	Настройки = ХранилищеПользовательскихНастроекОтчетов.Загрузить(КлючОбъекта, КлючНастроек, , ОтКого);
	Если Настройки = Неопределено Тогда
		Сообщить("У пользователя " + ОтКого + " такой настройки нет");
		Возврат;
	КонецЕсли;

	ХранилищеПользовательскихНастроекОтчетов.Сохранить(КлючОбъекта, КлючНастроек, Настройки, , Кому);
	Сообщить("Настройка скопирована пользователю " + Кому);

КонецПроцедуры

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

Выгрузка настроек варианта в XML

Настройки компоновки сериализуются штатно, это удобно для сравнения и переноса:

&НаСервере
Функция НастройкиВариантаВXML(ВариантСсылка)

	Настройки = ВариантСсылка.Настройки.Получить();
	Если Настройки = Неопределено Тогда
		Возврат "";
	КонецЕсли;

	Запись = Новый ЗаписьXML;
	Запись.УстановитьСтроку();
	СериализаторXDTO.ЗаписатьXML(Запись, Настройки);
	Возврат Запись.Закрыть();

КонецФункции

Обратная операция — ЧтениеXML и СериализаторXDTO.ПрочитатьXML, затем запись объекта справочника с новым ХранилищеЗначения.

Перенос настроек отчетов в другую базу

Способ зависит от того, что и куда переносите.

СпособЧто переноситКогда подходитРиски
Выгрузка в .dt и загрузкаВсё: варианты, пользовательские и системные настройкиКопия базы целиком, тестовый контурПерезаписывает всю базу-приёмник
Универсальная выгрузка XML справочника ВариантыОтчетовВарианты БСПДве базы одной конфигурации, перенос части вариантовСсылки на элементы отборов (организации, склады) могут не совпасть
Внешняя обработка с XML-сериализациейВыборочно, по спискуРегулярный перенос, много пользователейНужно сопоставить имена пользователей

Перенос внутри одной базы: от пользователя к пользователю

Самый частый случай — не другая база, а новый сотрудник, которому нужны отчеты как у предшественника. Здесь код не нужен. В обработке Администрирование → Настройки пользователей и прав → Настройки пользователей выберите пользователя-источник и команду копирования настроек. Дальше отметьте получателей и группы настроек: только отчеты или ещё внешний вид и прочие настройки.

Пользовательские варианты из справочника копировать не нужно. Достаточно открыть автору доступ к ним для всех или для нужных людей: вариант останется в одном экземпляре, и правка в нём сразу дойдёт до всех.

💡 Если копируете настройки уволенного сотрудника, сделайте это до отключения его входа в программу и до удаления пользователя ИБ: при чистке учётных записей настройки легко потерять вместе с ними, и вернуть их можно будет только из резервной копии.

Что проверить при переносе в другую базу

Несколько вещей, о которых узнают уже после переноса:

  1. Пользовательские настройки привязаны к имени пользователя ИБ. Если в базе-приёмнике пользователь называется иначе, настройки не подхватятся. Сначала сверьте имена.
  2. Отборы хранят ссылки, а не названия. Вариант с отбором «Организация = ООО Ромашка» в другой базе покажет битую ссылку, если у организации другой уникальный идентификатор. Отбор придётся выставить заново.
  3. Версии конфигураций должны совпадать. Вариант ссылается на поля СКД. Если в новом релизе поле переименовали, оно выпадет из варианта при открытии.

Перед загрузкой вариантов в рабочую базу сделайте её резервную копию. Ошибка в обработке, которая пишет в справочник, затронет всех пользователей.

Почему вариант отчета пропал и как его найти

Вариант почти никогда не исчезает бесследно. Чаще он есть в базе, но не виден конкретному человеку.

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

Поиск варианта запросом

Если вариант не находится через интерфейс, проверьте справочник запросом в консоли запросов:

ВЫБРАТЬ
	ВариантыОтчетов.Ссылка,
	ВариантыОтчетов.Наименование,
	ВариантыОтчетов.Автор,
	ВариантыОтчетов.Пользовательский,
	ВариантыОтчетов.ПометкаУдаления,
	ВариантыОтчетов.КлючВарианта
ИЗ
	Справочник.ВариантыОтчетов КАК ВариантыОтчетов
ГДЕ
	ВариантыОтчетов.Наименование ПОДОБНО &Название
	И ВариантыОтчетов.Пользовательский

Параметр &Название задайте с подстановочными знаками, например "%оборотка%". Запрос покажет и помеченные на удаление варианты, и варианты других авторов.

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

Сброс испорченных настроек

Когда отчет у одного пользователя падает с ошибкой, а у других работает, причина обычно в его пользовательских настройках. Очистите их через Администрирование → Настройки пользователей и прав → Настройки пользователей, вкладка с настройками отчетов, — только для этого отчета и этого пользователя. Сохранённые варианты при этом не удаляются, сбрасываются лишь последние правки поверх них.

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

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