Как очистить кэш внешнего отчета или обработки в 1С без переименования файлов и перезапуска программы?

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

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

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

Почему 1С «запоминает» старую версию отчета?

Проблема кэширования внешних объектов обусловлена несколькими параллельно работающими механизмами платформы 1С:Предприятие:

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

Рассмотрим по шагам практические способы решения этой проблемы.

Способ 1. Сброс настроек к стандартным (для отчетов на СКД)

Если вы изменили схему компоновки данных (например, добавили новое поле в запрос или изменили доступные поля), но не видите изменений в режиме «1С:Предприятие», выполните следующие действия:

  1. Откройте отчет в режиме пользователя.
  2. В правом верхнем углу формы нажмите кнопку Еще.
  3. Выберите пункт меню Установить стандартные настройки.

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

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

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

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Удаляем сохраненные настройки формы для текущего пользователя
    ИмяОтчета = ЭтотОбъект.Отчет.Метаданные().Имя;
    КлючОбъекта = "Отчеты/Настройки/" + ИмяОтчета;
    
    СистемныеНастройки.Удалить(КлючОбъекта, "", ПользователиИнформационнойБазы.ТекущийПользователь().Имя);
    
КонецПроцедуры

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

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

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

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

Способ 4. Правильная последовательность работы с Конфигуратором

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

Перед тем как нажать кнопку «Сохранить» в Конфигураторе, обязательно закройте окно этого отчета или обработки в режиме «1С:Предприятие».

Если файл отчета закрыт на клиенте, операционная система и платформа 1С освобождают занятые ресурсы. При следующем открытии через меню Файл -> Открыть платформа будет вынуждена прочитать файл с диска заново, считывая все ваши свежие изменения.

Способ 5. Использование параметра запуска /ClearCache

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

Разберем по шагам, как его настроить:

  1. Откройте стартер «1С:Предприятие».
  2. Выберите вашу базу в списке и нажмите кнопку Изменить.
  3. Перейдите на последнюю вкладку настроек.
  4. В поле Дополнительные параметры запуска введите команду: /ClearCache.
  5. Нажмите Готово.

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

← На главную