Впервые применил модуль с повторным использованием значений
Обнаружил, что мой код работает немного медленно. В цикле 50.000 раз вызывалась функция, которая обращалась к константе и это немного тормозило выполнение.
Функция ОтключенаРегистрацияИзмененийНаКассу() Экспорт
//Осипов КАССЫ 20200325 — если нужно отключить регистрацию изменений в плане обмена и прочие мелкие вещи
//Вызывать так:
//Осипов КАССЫ 20200325
//Если оса_ПравилаРасчетаЦенКэшСеанса.ОтключенаРегистрацияИзмененийНаКассу() Тогда
// Возврат;
//КонецЕсли;
УстановитьПривилегированныйРежим(истина);
Возврат Константы.оса_ОтключенаРегистрацияИзмененийНаКассу.Получить();
КонецФункции
А константу я использовал, чтобы иметь возможность включать/выключать своё поведение для типовой конфигурации, не меняя конфигурацию.
Думал, что использовать — параметры сеанса или модуль с повторным использованием значений. В итоге выбрал модуль. На параметры сеанса еще права нужно назначать, а модуль работает просто так.
В 1С применение модуля с повторным использованием значений (кэшированием) описано тут: https://its.1c.ru/db/v8std#content:724:hdoc
Я открыл эти знания для себя еще в 2008, 12 лет назад, но на практике не применял. https://forum.mista.ru/topic.php?id=369307&page=1
И вот, наконец, пригодилось.
Завел новый модуль под это дело:

У модуля указал свойство повторного использования значений на время сеанса (если что, нужно перезайти в 1С):

Заменил вызовы процедур, обращавшихся к константе, через глобальную замену. Работает минут 5, довольно долго на УТ11, но зато гарантированно все вызовы заменяет:

Модуль оформил так:
//Внимание! Модуль с повторным использованием значений! Для ускорения работы!
//Значения кэшируются на время сеанса, нужно перезаходить в 1с.
#Область КонстантыВключенияВыключенияРежимов
//Вызывается из:
//ОбщийМодуль.МенеджерОфлайнОборудованияПереопределяемый.Модуль
//ОбщийМодуль.ОбменДаннымиПодключаемоеОборудованиеOfflineСобытия.Модуль
//ОбщийМодуль.ПодключаемоеОборудованиеOfflineВызовСервера.Модуль
//ОбщийМодуль.ПодключаемоеОборудованиеOfflineВызовСервера.Модуль
//ОбщийМодуль.ПодключаемоеОборудованиеOfflineВызовСервера.Модуль
//РегистрСведений.КодыТоваровПодключаемогоОборудованияOffline.Модуль набора записей
//ОфлайнОборудованиеАтолККМКлиент.ВыгрузкаТоваровЗавершение
Функция ОтключенаРегистрацияИзмененийНаКассу() Экспорт
//Осипов КАССЫ 20200325 — если нужно отключить регистрацию изменений в плане обмена и прочие мелкие вещи
//Вызывать так:
//Осипов КАССЫ 20200325
//Если оса_ПравилаРасчетаЦенКэшСеанса.ОтключенаРегистрацияИзмененийНаКассу() Тогда
// Возврат;
//КонецЕсли;
УстановитьПривилегированныйРежим(истина);
Возврат Константы.оса_ОтключенаРегистрацияИзмененийНаКассу.Получить();
КонецФункции
Функция ВключенаДоработаннаяВыгрузкаИзмененийНаКассу() Экспорт
//Осипов КАССЫ 20200325 — включает ли режим доработанной выгрузки изменений на кассу
//Вызывать так:
//Осипов КАССЫ 20200325
//Если оса_ПравилаРасчетаЦенКэшСеанса.ВключенаДоработаннаяВыгрузкаИзмененийНаКассу() Тогда
// Возврат;
//КонецЕсли;
УстановитьПривилегированныйРежим(истина);
Возврат Константы.оса_ВключенаДоработаннаяВыгрузкаИзмененийНаКассу.Получить();
КонецФункции
#КонецОбласти
Проверил отладчиком — действительно, вход в функцию осуществляется только в первый раз, потом возвращается рассчитанное значение. Удобно, быстро, эффективно.
