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

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

1C_CACHE_REUSE_OVERHEAD 1С:Предприятие и СУБД

Кэширование в 1С: настройка повторного использования возвращаемых значений

Обновлено: 26.08.2026 · Официальная документация ↗
  • Тысячи одинаковых запросов к константам, справочникам валют или параметрам учета в рамках одной транзакции.
  • Высокая загрузка CPU кластера 1С при выполнении типовых сервисных функций.
  • Утечки оперативной памяти рабочих процессов rphost из-за некорректного кэширования больших массивов данных.

1. Варианты повторного использования возвращаемых значений

В свойствах общего модуля свойство Повторное использование возвращаемых значений (Return Values Reuse) может принимать значения:

  • Не использовать: Обычный модуль без кэширования;
  • На время вызова: Кэш живет только в рамках текущего серверного вызова (очищается при возврате управления на клиент);
  • На время сеанса: Кэш живет в памяти сеанса пользователя до его завершения или сброса (около 20 минут).

2. Пример правильного кэширования параметров

// В общем модуле с повторным использованием "На время сеанса"
Функция ПолучитьОсновнуюВалютуУчета()
    Возврат Константы.ВалютаРегламентированногоУчета.Получить();
КонецФункции

Функция ПолучитьКурсВалюты(Знач Валюта, Знач Дата)
    // Кэш вернет результат мгновенно без обращения к СУБД
    Возврат РегистрыСведений.КурсыВалют.ПолучитьПоследнее(Дата, Новый Структура("Валюта", Валюта)).Курс;
КонецФункции

3. Программный сброс кэша при обновлении данных

// При изменении константы сбросьте кэш для немедленного обновления
ОсвежитьМутабельныеЗначения();
💡 Практика специалистов: Никогда не кэшируйте функции, зависящие от текущего точного времени (ТекущаяДата()), иначе весь кэш на 20 минут зафиксирует значение первой секунды вызова.

Частые вопросы (FAQ)

Что нельзя передавать в качестве параметров кэшируемой функции?

Нельзя передавать мутабельные объекты (структуры, таблицы значений, объекты документов). Параметрами должны быть простые типы: Ссылка, Число, Строка, Дата, Булево.

Сколько памяти занимает кэш с повторным использованием?

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

Как сбросить кэш модуля с повторным использованием на время сеанса?

Кэш автоматически сбрасывается через 20 минут неактивности, при вызове ОсвежитьМутабельныеЗначения() или при перезапуске клиентского сеанса.

Когда использовать кэширование 'На время вызова'?

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

Полезные материалы
Рекомендуем