Перейти к содержанию
v8cs:structure-key-modification

Модификация ключа структуры вне функции-конструктора (structure-key-modification)

  • Категория: bsl

Если Структура создана функцией-конструктором, то изменение состава ключей структуры методами Структура.Вставить("Ключ", ...); Структура.Удалить("Ключ"); Структура.Очистить(); может приводить к ошибкам из-за неопределенности состава данных.

Неправильно

Неправильно удалять все ключи структуры, удалять ключ или заменять ключ внешней структуры.

// @strict-types

Процедура Неправильно1() Экспорт

    ТестоваяСтруктура = Конструктор();
    ТестоваяСтруктура.Очистить();
    ТестоваяСтруктура.Вставить("Ключ1", 10);
    ТестоваяСтруктура.Удалить("Ключ2");

КонецПроцедуры

// Возвращаемое значение:
//  Структура:
// * Ключ1 - Булево -
// * Ключ2 - Число -
Функция Конструктор() Экспорт

    ТестоваяСтруктура = новый Структура("Ключ1, Ключ2", Истина, 10);
    ТестоваяСтруктура.Вставить("Ключ2", 20);

    Возврат ТестоваяСтруктура;

КонецФункции

Правильно

Обращаться к существующему ключу необходимо напрямую и устанавливать новое значение. Вместо удаления ключа необходимо устанавливать значение, которое представляет пустое или начальное значение.

// @strict-types

Процедура Правильно1() Экспорт

    ТестоваяСтруктура = Конструктор();
    ТестоваяСтруктура.Ключ1 = false;
    ТестоваяСтруктура.Ключ2 = -1;

КонецПроцедуры

// Возвращаемое значение:
//  Структура:
// * Ключ1 - Булево -
// * Ключ2 - Число -
Функция Конструктор() Экспорт

    ТестоваяСтруктура = новый Структура("Ключ1, Ключ2", Истина, 10);
    ТестоваяСтруктура.Вставить("Ключ2", 20);

    Возврат ТестоваяСтруктура;

КонецФункции

См.

Соответствие стандартам

Источник диагностики