Каждый разработчик 1С рано или поздно сталкивается с раздражающей ситуацией: вы тратите время на изменение макета, схемы компоновки данных (СКД) или программного кода внешнего отчета, сохраняете файл, открываете его в режиме «1С:Предприятие», но программа упорно показывает старую версию. Кажется, что изменения применятся только в том случае, если переименовать файл или полностью перезапустить сеанс работы.
Давайте подробно разберем, почему платформа 1С так себя ведет, и рассмотрим эффективные методы борьбы с этим явлением, которые сэкономят вам часы рабочего времени при разработке.
Проблема кэширования внешних объектов обусловлена несколькими параллельно работающими механизмами платформы 1С:Предприятие:
rphost на сервере.Рассмотрим по шагам практические способы решения этой проблемы.
Если вы изменили схему компоновки данных (например, добавили новое поле в запрос или изменили доступные поля), но не видите изменений в режиме «1С:Предприятие», выполните следующие действия:
Этот простой шаг принудительно заставит платформу проигнорировать старый сохраненный кэш настроек из системного хранилища и загрузить актуальную структуру СКД непосредственно из вашего файла.
Если вам приходится очень часто вносить изменения в структуру отчета, ручной сброс настроек через меню «Еще» может быстро надоесть. В этом случае мы можем автоматизировать процесс. Проанализируем, как программно очистить кэш настроек при открытии формы.
Добавьте в модуль формы разрабатываемого отчета в процедуру ПриСозданииНаСервере следующий фрагмент кода:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Удаляем сохраненные настройки формы для текущего пользователя
ИмяОтчета = ЭтотОбъект.Отчет.Метаданные().Имя;
КлючОбъекта = "Отчеты/Настройки/" + ИмяОтчета;
СистемныеНастройки.Удалить(КлючОбъекта, "", ПользователиИнформационнойБазы.ТекущийПользователь().Имя);
КонецПроцедуры
Важно: Не забудьте удалить или закомментировать этот технический код перед передачей готового отчета конечным пользователям, иначе у них при каждом открытии будут сбрасываться их персональные настройки отчета.
Бывают ситуации, когда форма отчета «намертво» зависает в памяти клиентского приложения. Это связано с привязкой к уникальному идентификатору формы. Чтобы разорвать эту связь без переименования самого файла отчета, выполните следующие действия в Конфигураторе:
UUID.Чтобы избежать удержания дескриптора файла в памяти и кэширования старого кода, выработайте у себя полезную привычку:
Перед тем как нажать кнопку «Сохранить» в Конфигураторе, обязательно закройте окно этого отчета или обработки в режиме «1С:Предприятие».
Если файл отчета закрыт на клиенте, операционная система и платформа 1С освобождают занятые ресурсы. При следующем открытии через меню Файл -> Открыть платформа будет вынуждена прочитать файл с диска заново, считывая все ваши свежие изменения.
Если проблемы с кэшем на рабочем компьютере разработчика возникают регулярно не только с внешними файлами, но и при динамическом обновлении конфигурации, рекомендуется использовать специальный параметр запуска платформы.
Разберем по шагам, как его настроить:
/ClearCache.Теперь при каждом запуске этой информационной базы платформа будет производить автоматическую очистку локального кэша метаданных, что минимизирует вероятность программных сбоев из-за устаревших временных файлов.