Объявление переменных в общем модуле (CommonModuleVariables)¶
| Тип | Поддерживаются языки |
Важность | Включена по умолчанию |
Время на исправление (мин) |
Теги |
|---|---|---|---|---|---|
Ошибка |
BSL |
Критичный |
Да |
5 |
standarddesign |
Описание диагностики¶
В платформе 1С:Предприятие общие модули функционируют как библиотеки процедур и функций и не поддерживают сохранение состояния между вызовами. Использование оператора "Перем" на уровне общего модуля приводит к тому, что переменная инициализируется заново при каждом обращении к модулю.
Для работы с состоянием необходимо использовать передачу контекста через параметры процедур и функций, структуры данных или платформенные механизмы кэширования.
Примеры¶
Ошибочный код:
Перем КэшЗначений; // Переменная потеряет значение после завершения вызова
Функция ПолучитьКэш() Экспорт
Возврат КэшЗначений;
КонецФункции
Функция ПолучитьКэш(ТекущийКэш) Экспорт // Состояние передается явно через параметры
Возврат ТекущийКэш;
КонецФункции
Источники¶
Источник: Какие переменные, процедуры и функции можно использовать в общих модулях?
Сниппеты¶
Экранирование кода¶
// BSLLS:CommonModuleVariables-off
// BSLLS:CommonModuleVariables-on
Параметр конфигурационного файла¶
"CommonModuleVariables": false