Как сбросить кэш и обновить настройки во внешнем отчете СКД в 1С

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

Каждый разработчик, работающий с Системой компоновки данных (СКД) в «1С:Предприятие 8.3», рано или поздно сталкивается с неприятной особенностью платформы. Вы вносите изменения в схему компоновки данных внешнего отчета в Конфигураторе (например, добавляете новое поле, меняете группировку или параметры), сохраняете файл, открываете его в режиме «1С:Предприятие» через меню Файл — Открыть, но... ничего не меняется! Отчет упорно отображает старую структуру, игнорируя ваши правки.

В этой статье мы подробно разберем природу этого поведения платформы 1С и изучим все существующие способы решения проблемы: от простых манипуляций в пользовательском интерфейсе до программных методов сброса настроек.

Почему 1С блокирует обновление настроек СКД?

Давайте выясним первопричину такого поведения системы. Дело в том, что платформа 1С стремится сделать работу пользователей максимально комфортной. Для этого в системе реализован механизм автоматического сохранения пользовательских настроек (выбранных полей, отборов, сортировок). Эти данные записываются в специальное системное хранилище (таблица ХранилищеНастроек в базе данных).

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

Переименование файла или самого объекта в метаданных помогает именно потому, что для платформы этот отчет становится «новым» объектом с чистой историей настроек. Однако постоянно переименовывать отчет — крайне неудобный и неэффективный путь. Рассмотрим более профессиональные методы.

---

Способ 1. Принудительный сброс к стандартным настройкам в интерфейсе

Самый быстрый способ заставить платформу перечитать XML-схему из файла отчета — выполнить интерактивный сброс настроек в режиме «1С:Предприятие». Разберем этот процесс по шагам:

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

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

---

Способ 2. Программный сброс настроек компоновщика

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

Проанализируем пример кода, который можно разместить в модуле формы отчета в обработчике события ПриСозданииНаСервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Сбрасываем текущие настройки к настройкам по умолчанию, заданным в схеме СКД
    ЭтотОбъект.Отчет.КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновщикаИКомпоновкиДанных.Полное);
    
КонецПроцедуры

Использование параметра СпособВосстановленияНастроекКомпоновщикаИКомпоновкиДанных.Полное гарантирует, что компоновщик полностью перечитает структуру схемы компоновки данных и сбросит все пользовательские изменения, вернув отчет к первозданному виду, спроектированному в Конфигураторе.

Если отчет разработан на базе Библиотеки стандартных подсистем (БСП), для сброса настроек можно вызвать специализированный метод:

ВариантыОтчетов.СброситьПользовательскиеНастройки(КлючВарианта, ТипыНастроек);

Этот метод очистит сохраненные варианты в системных таблицах БСП для конкретного отчета.

---

Способ 3. Изменение уникального идентификатора формы (UUID)

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

Выполним следующие шаги в Конфигураторе:

  1. Откройте свойства вашего внешнего отчета.
  2. Перейдите на вкладку Формы.
  3. Удалите текущую основную форму отчета (предварительно можно скопировать из нее уникальный программный код, если он там был).
  4. Создайте новую форму отчета с тем же именем и назначьте её основной.

При создании новой формы платформа автоматически сгенерирует для неё новый уникальный идентификатор (UUID). Поскольку в системной базе данных нет сохраненных настроек для этого нового идентификатора, отчет откроется с абсолютно чистыми настройками из конфигуратора.

---

Способ 4. Корректная настройка Хранилища вариантов в свойствах отчета

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

Рассмотрим порядок настройки:

  1. Откройте свойства внешнего отчета в Конфигураторе.
  2. Найдите свойство Хранилище вариантов (оно находится на вкладке «Основные»).
  3. Установите в этом поле значение ХранилищеВариантовОтчетов.

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

---

Способ 5. Централизованная очистка настроек пользователей администратором

Что делать, если вы обновили внешний отчет у пользователей, и у них поплыла верстка или перестали формироваться данные из-за кэша настроек? Требовать от каждого пользователя заходить в настройки для технического специалиста неэффективно. Администратор базы данных может сбросить эти настройки централизованно. В случае необходимости автоматизировать другие повторяющиеся действия в пользовательском интерфейсе платформа для создания программных роботов One RPA позволяет настроить выполнение необходимых сценариев без ручного вмешательства.

Разберем, как это сделать в типовых конфигурациях 1С:

  1. Перейдите в раздел Администрирование (или НСИ и администрирование).
  2. Выберите пункт Настройки пользователей и прав.
  3. Перейдите по ссылке Очистка настроек (в подразделе «Персональные настройки пользователей»).
  4. В открывшемся окне выберите пользователей (можно выбрать «Все пользователи») и найдите в списке ваш проблемный отчет.
  5. Нажмите кнопку Очистить.

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

---

Способ 6. Отключение кэширования на рабочем месте разработчика

При активной разработке и отладке внешних отчетов постоянный сброс настроек утомляет. Мы можем настроить платформу так, чтобы она в принципе не кэшировала файлы во время сеанса отладки.

Вариант А. Параметр запуска /ClearCache

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

  1. Запустите окно выбора информационных баз 1С.
  2. Выберите нужную базу, нажмите кнопку Изменить и перейдите на последнюю вкладку настроек. При необходимости автоматизировать регламентное обслуживание систем программа для автоматического архивирования, обновления и тестирования баз 1С поможет выполнять эти и другие административные задачи по расписанию.
  3. В поле Дополнительные параметры запуска впишите команду: /ClearCache.

Вариант Б. Настройка параметров публикации на веб-сервере

Если вы ведете разработку или тестирование через веб-клиент или в файловом варианте с публикацией, убедитесь, что в настройках публикации на веб-сервере активен режим отладки. В конфигураторе перейдите в меню Администрирование — Публикация на веб-сервере. На вкладке «Дополнительно» установите флаг Режим отладки (это предотвратит агрессивное кэширование файлов веб-сервером).

Вариант В. Физическое удаление временных файлов

Если настройки зависли «намертво» и ни один способ не помогает, закройте 1С и очистите папки локального кэша на вашем компьютере. Удалите содержимое папок по следующим путям:

Подводя итог, отметим: при разработке внешних отчетов СКД лучшей практикой является использование комбинации программного вызова метода Восстановить() для компоновщика настроек на этапе отладки и обязательное указание ХранилищеВариантовОтчетов перед передачей готового отчета пользователям.

← На главную