Данная информация, скорее всего, уже доступна в Интернете, но под такими ключевыми словами ее нет.
В очередной раз потратив время на ее поиск, решил исправить это положение.
Описание программной логики приведено для БСП 3.1.7.
БСП кэширует некоторые данные из конфигурации в регистрах сведений ПараметрыРаботыПрограммы (Параметры работы программы) и ПараметрыРаботыВерсийРасширений (Параметры работы версий расширений).
Данные кэша хранятся как ХранилищеЗначения, поэтому в клиенте кроме названий ничего не видно.
Интерфейс работы с кэшем находится в модуле "СтандартныеПодсистемыСервер".
- Используется через функции "СтандартныеПодсистемыСервер.ПараметрРаботыПрограммы(ИмяПараметра)",
"СтандартныеПодсистемыСервер.УстановитьПараметрРаботыПрограммы(ИмяПараметра, Значение)" - сбрасывается при старте клиента функцией "РегистрСведений.ПараметрыРаботыПрограммы.МодульМенеджера.ЗагрузитьОбновитьПараметрыРаботыПрограммы()",
опосредованно вызываемой из "ПередНачаломРаботыСистемы".
В качестве публичного интерфейса при этом заявляется процедура "СтандартныеПодсистемыСервер.ОбновитьВсеПараметрыРаботыПрограммы()". - Кэш расширений зачем-то непрозрачно отделен от "основного".
- Используется через "СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ИмяПараметра, БезУчетаВерсииРасширений = Ложь, [вых] УжеИзменен = Неопределено)",
"СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметра, Значение, БезУчетаВерсииРасширений = Ложь)" - Сбрасывается, по-видимому, через "ОбновитьПараметрыРаботыРасширений", вызываемые из регламентного задания и формы "Расширения" БСП
- В результате, в БСП можно видеть код, обходящий эту непрозрачность; см. напр. "ВариантыОтчетовПовтИсп.Параметры()", "ВариантыОтчетов.УстановитьПризнакЗаполненияПредставлений()"
- Используется через "СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ИмяПараметра, БезУчетаВерсииРасширений = Ложь, [вых] УжеИзменен = Неопределено)",
- Значения кэша расширений привязываются, кроме идентификатора, к "версии расширений" из Справочник.ВерсииРасширений", который заполняется в "ВерсииРасширений.МодульМенеджера.ЗарегистрироватьИспользованиеВерсииРасширений(ПриПервойУстановкеПараметровСеанса = Ложь)", вызываемой из ряда мест, в т.ч. "СтандартныеПодсистемы.УстановкаПараметровСеанса", вызываемой из модуля сеанса.
- Ключом является строковое представление множества (Соответствия вида {Ключ,Истина)) из: название + версия + хеш + область действия расширения (см. "ОбщаяФорма.Расширения.ИдентификаторыРасширений" и СП "РасширениеКонфигурации")
- Значение же кэша основной конфигурации привязывается только к "Метаданные.Версия" (версия основной конфигурации): игнорируется (возвращается Неопределено), если текущая версия не совпадает с записанной (см. "ПараметрыРаботыПрограммы.МодульМенеджера.УстановитьПараметрРаботыПрограммы" и "ПараметрыРаботыПрограммы.МодульМенеджера.ПараметрРаботыПрограммы")
- Параметр запуска клиента "РежимОтладки" (который используется другой логикой БСП) никак не влияет на работу кэша
Т.о. при разработке
- при любом обновлении расширения кэш расширений (ПараметрыРаботыВерсийРасширений) слетает, логика видит изменения.
- Но: это никак не отражается на основном кэше (ПараметрыРаботыПрограммы), если не изменена версия основной конфигурации
А, как видно из иллюстраций выше, только некоторые параметры код БСП помещает в кэш расширений.
Для сброса кэша необходимо удалить соотв. записи регистра ПараметрыРаботыПрограммы (Параметры работы программы):
- Открыть форму списка "Параметры работы программы" через "функции для технического специалиста"
- Выбрать "Еще -> Включить возможность редактирования"
- Выбрать нужные записи -> ПК -> Удалить
- Перезапустить клиент, если параметры относятся к подсистеме, кэширующей их также через "повторное использование возвращаемых значений"
(напр. ВариантыОтчетов, см. "ВариантыОтчетовПовтИсп.Параметры()")