Где хранятся настройки внешних отчетов в 1С и почему они могут пропадать у пользователя?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

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

Где платформа 1С хранит настройки отчетов

Место хранения вариантов настроек зависит от типа формы, конфигурации и способа подключения отчета к системе:

  1. Регистр сведений «Сохраненные настройки»: В конфигурациях на обычных формах (УТ 10.3, УПП 1.3) данный регистр применяется для сохранения пользовательских вариантов внутренних отчетов и внешних отчетов, если для них корректно подключен типовой механизм сохранения через СКД. В управляемых формах (УТ 11, ERP, КА) аналогичные данные записываются в регистр сведений НастройкиВариантовОтчетов.
  2. Системное хранилище настроек платформы: Если внешняя обработка или отчет запускается из справочника дополнительных обработок, платформа записывает автосохраняемые реквизиты и варианты пользовательских настроек в служебные таблицы базы данных. Настройки связываются с именем объекта или его внутренней ссылкой.
  3. Локальный кэш пользователя и временные файлы: Значения реквизитов формы и кэшированные данные элементов интерфейса сохраняются во временных файлах операционной системы (каталоги AppData\Local и AppData\Roaming) и окончательно фиксируются при правильном завершении сеанса работы в клиентском приложении.

Основные причины сброса настроек внешних отчетов

Проанализируем ситуации, из-за которых сохраненные значения у конкретного пользователя могут пропадать:

  1. Некорректное завершение сеанса: Если пользователь закрывает программу аварийно (например, при обрыве RDP-соединения или завершении процесса через диспетчер задач), автосохраняемые параметры не успевают записаться из оперативной памяти на диск.
  2. Совпадение уникальных идентификаторов (GUID) или имен отчетов: Если новый внешний отчет создавался путем копирования файла другого отчета в конфигураторе, у них могут остаться одинаковые внутренние идентификаторы или имена объектов. В этом случае платформа перезаписывает настройки одного отчета настройками другого.
  3. Динамическое пересоздание временных файлов: При вызове внешнего отчета из справочника дополнительных обработок платформа сохраняет его во временный каталог. Если при каждом запуске формируется уникальное имя файла, платформа воспринимает отчет как новый объект и не может сопоставить с ним ранее сохраненные варианты.
  4. Повреждение кэша пользователя: При сбоях сетевого подключения или некорректном завершении работы локальный кэш настроек пользователя может быть поврежден.
  5. Отсутствие прав доступа: У роли пользователя в конфигураторе может быть снят флаг Сохранение данных пользователя. В таком случае пользователь может менять настройки в рамках одного сеанса, но они не будут сохраняться в базе.

Способы решения проблемы

Способ 1. Программная очистка кэша настроек пользователя

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

ОчиститьНастройкиПользователя(ПараметрыСеанса.ТекущийПользователь);

Важно: Данный метод сбрасывает текущие пользовательские настройки форм, поэтому перед его вызовом рекомендуется зафиксировать критически важные параметры отчетов.

Способ 2. Устранение коллизии идентификаторов (пересоздание отчета)

Если настройки пропадают из-за совпадения внутренних ключей объектов, выполним разбор по шагам:

  1. Откроем исходный внешний отчет в режиме «Конфигуратор».
  2. Экспортируем схему компоновки данных (СКД) во внешний файл через конструктор схемы.
  3. Создадим новый файл внешнего отчета (Файл — Новый — Внешний отчет), чтобы платформа сгенерировала уникальный идентификатор объекта.
  4. Загрузим сохраненную схему компоновки данных в новый отчет и назначим ему уникальное имя.
  5. Обновим файл отчета в справочнике дополнительных обработок и проверим сохранение вариантов под пользователем.

Способ 3. Явное программное сохранение через Хранилище Пользовательских Настроек

Чтобы гарантировать независимость сохранения вариантов от локального кэша и имён временных файлов, опишем явное управление настройками в модуле формы или отчета с помощью объекта ХранилищеПользовательскихНастроекОтчетов.

Посмотрим на пример записи настроек в хранилище при сохранении:


КлючОбъекта = "ВнешнийОтчет_ПродажиПоПокупателям";
КлючНастроек = "Настройка_Пользователя_1";

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

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


ЗагруженныеНастройки = ХранилищеПользовательскихНастроекОтчетов.Загрузить(
    КлючОбъекта, 
    КлючНастроек, 
    , 
    ИмяПользователя()
);

Если ЗагруженныеНастройки <> Неопределено Тогда
    Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ЗагруженныеНастройки);
КонецЕсли;

Способ 4. Проверка прав и корректного завершения работы

Выясним корректность пользовательских настроек операционной системы и 1С:

  1. В конфигураторе откроем роль, назначенную пользователю, и проверяем наличие права Сохранение данных пользователя.
  2. Убедимся, что пользователь завершает сеанс через меню Файл — Выход или закрытием основного окна программы, а не просто закрывает терминальную сессию RDP.
  3. Проверим, что профиль пользователя Windows не является временным и папки Temp не очищаются автоматическими скриптами во время работы приложения.
← На главную