Варианты и пользовательские настройки отчетов: куда их пишет платформа и БСП
Содержание
Настройки отчетов пользователей 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-сериализацией | Выборочно, по списку | Регулярный перенос, много пользователей | Нужно сопоставить имена пользователей |
Перенос внутри одной базы: от пользователя к пользователю
Самый частый случай — не другая база, а новый сотрудник, которому нужны отчеты как у предшественника. Здесь код не нужен. В обработке Администрирование → Настройки пользователей и прав → Настройки пользователей выберите пользователя-источник и команду копирования настроек. Дальше отметьте получателей и группы настроек: только отчеты или ещё внешний вид и прочие настройки.
Пользовательские варианты из справочника копировать не нужно. Достаточно открыть автору доступ к ним для всех или для нужных людей: вариант останется в одном экземпляре, и правка в нём сразу дойдёт до всех.
💡 Если копируете настройки уволенного сотрудника, сделайте это до отключения его входа в программу и до удаления пользователя ИБ: при чистке учётных записей настройки легко потерять вместе с ними, и вернуть их можно будет только из резервной копии.
Что проверить при переносе в другую базу
Несколько вещей, о которых узнают уже после переноса:
- Пользовательские настройки привязаны к имени пользователя ИБ. Если в базе-приёмнике пользователь называется иначе, настройки не подхватятся. Сначала сверьте имена.
- Отборы хранят ссылки, а не названия. Вариант с отбором «Организация = ООО Ромашка» в другой базе покажет битую ссылку, если у организации другой уникальный идентификатор. Отбор придётся выставить заново.
- Версии конфигураций должны совпадать. Вариант ссылается на поля СКД. Если в новом релизе поле переименовали, оно выпадет из варианта при открытии.
Перед загрузкой вариантов в рабочую базу сделайте её резервную копию. Ошибка в обработке, которая пишет в справочник, затронет всех пользователей.
Почему вариант отчета пропал и как его найти
Вариант почти никогда не исчезает бесследно. Чаще он есть в базе, но не виден конкретному человеку.
Поиск варианта запросом
Если вариант не находится через интерфейс, проверьте справочник запросом в консоли запросов:
ВЫБРАТЬ
ВариантыОтчетов.Ссылка,
ВариантыОтчетов.Наименование,
ВариантыОтчетов.Автор,
ВариантыОтчетов.Пользовательский,
ВариантыОтчетов.ПометкаУдаления,
ВариантыОтчетов.КлючВарианта
ИЗ
Справочник.ВариантыОтчетов КАК ВариантыОтчетов
ГДЕ
ВариантыОтчетов.Наименование ПОДОБНО &Название
И ВариантыОтчетов.Пользовательский
Параметр &Название задайте с подстановочными знаками, например "%оборотка%". Запрос покажет и помеченные на удаление варианты, и варианты других авторов.
Если вариант найден, но автор — уволенный сотрудник, дальше всё просто: администратор открывает карточку варианта и делает его доступным другим пользователям. Если вариант не найден и удаление помеченных уже прошло, вернуть его можно только из резервной копии: разверните копию рядом, найдите вариант и перенесите его одним из способов из таблицы выше.
Сброс испорченных настроек
Когда отчет у одного пользователя падает с ошибкой, а у других работает, причина обычно в его пользовательских настройках. Очистите их через Администрирование → Настройки пользователей и прав → Настройки пользователей, вкладка с настройками отчетов, — только для этого отчета и этого пользователя. Сохранённые варианты при этом не удаляются, сбрасываются лишь последние правки поверх них.