Перейти к содержанию

Объявление переменных в общем модуле (CommonModuleVariables)

Тип Поддерживаются
языки
Важность Включена
по умолчанию
Время на
исправление (мин)
Теги
Ошибка BSL Критичный Да 5 standard
design

Описание диагностики

В платформе 1С:Предприятие общие модули функционируют как библиотеки процедур и функций и не поддерживают сохранение состояния между вызовами. Использование оператора "Перем" на уровне общего модуля приводит к тому, что переменная инициализируется заново при каждом обращении к модулю.

Для работы с состоянием необходимо использовать передачу контекста через параметры процедур и функций, структуры данных или платформенные механизмы кэширования.

Примеры

Ошибочный код:

Перем КэшЗначений; // Переменная потеряет значение после завершения вызова

Функция ПолучитьКэш() Экспорт
    Возврат КэшЗначений;
КонецФункции
Корректный код:
Функция ПолучитьКэш(ТекущийКэш) Экспорт // Состояние передается явно через параметры
    Возврат ТекущийКэш;
КонецФункции

Источники

Источник: Какие переменные, процедуры и функции можно использовать в общих модулях?

Сниппеты

Экранирование кода

// BSLLS:CommonModuleVariables-off
// BSLLS:CommonModuleVariables-on

Параметр конфигурационного файла

"CommonModuleVariables": false