Читаем режим каждого общего модуля, не вызывая его функции. ОбщегоНазначения не использует повторные результаты; другие модули проверяем по реальной текущей схеме.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
Варианты = Метаданные.СвойстваОбъектов;
Описание = Метаданные.ОбщиеМодули.Найти("ОбщегоНазначения");
Если Описание = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует ОбщиеМодули.ОбщегоНазначения";
КонецЕсли;
Сообщить(Описание.ПовторноеИспользованиеВозвращаемыхЗначений = Варианты.ПовторноеИспользованиеВозвращаемыхЗначений.НеИспользовать);
КоличествоКэшируемыхМодулей = 0;
Для Каждого Модуль Из Метаданные.ОбщиеМодули Цикл
Режим = Модуль.ПовторноеИспользованиеВозвращаемыхЗначений;
Если Режим = Варианты.ПовторноеИспользованиеВозвращаемыхЗначений.НаВремяВызова Тогда
КоличествоКэшируемыхМодулей = КоличествоКэшируемыхМодулей + 1;
Сообщить(Модуль.Имя + ": результаты повторно используются на время вызова");
ИначеЕсли Режим = Варианты.ПовторноеИспользованиеВозвращаемыхЗначений.НаВремяСеанса Тогда
КоличествоКэшируемыхМодулей = КоличествоКэшируемыхМодулей + 1;
Сообщить(Модуль.Имя + ": результаты повторно используются на время сеанса");
КонецЕсли;
КонецЦикла;
Сообщить("Модулей с повторным использованием: " + Строка(КоличествоКэшируемыхМодулей));Разбор по шагам
Проверяем контрольный ОбщегоНазначения и затем обходим описания всех общих модулей.
НаВремяВызова и НаВремяСеанса выводятся отдельно: область повторного использования разная.
Считаем модули с настройкой, не число сохранённых результатов и не объём памяти.
Ни одной функции общего модуля не вызываем: бизнес-операции не запускаются.
Как проверить результат
Для исходного XML первая проверка Истина. Перечень и итог сравните с настройками общих модулей учебной копии.
При нулевом количестве вывод 0 корректен; не добавляйте фиктивную кэшируемую функцию ради демонстрации.
Ожидаемый результат
Получен список кандидатов для дальнейшего разбора кэширования результатов.
На что обратить внимание
Настройка повторного использования не доказывает, что любой конкретный вызов уже закэширован.
Это не SQL-кэш, не файловый кэш 1С и не совет очищать рабочий сеанс.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.