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

Использование метода/свойства, недоступного в целевой версии платформы (UnavailableMemberCall)

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

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

Диагностика срабатывает на вызов метода или обращение к свойству платформенного типа, которое доступно только начиная с версии платформы новее, чем режим совместимости проекта. Использование такого члена приведёт к ошибке в среде, соответствующей выбранному режиму совместимости.

Сведения о версии, начиная с которой доступен член, берутся из синтакс-помощника установленной платформы 1С (через bsl-context) либо из встроенного справочника. Срабатывание учитывает целевую версию платформы: член считается недоступным, если целевая версия ниже версии появления члена. Целевая версия определяется по приоритету: настройка v8platform.targetVersion, затем режим совместимости конфигурации, а если ничего не задано - считается, что используется самая свежая платформа, и проверка не срабатывает.

Если тип объекта может быть выведен как один из нескольких (например, переменная присваивается значениями разных типов в разных ветках кода), диагностика срабатывает, если член недоступен хотя бы для одного из возможных типов.

Примеры

Целевая версия платформы — 8.3.10 (v8platform.targetVersion или режим совместимости), а метод ВопросАсинх доступен только начиная с 8.3.18:

// Срабатывание: метод доступен только с версии 8.3.18
Оповещение = Новый ОписаниеОповещения("ПослеВопроса", ЭтотОбъект);
ВопросАсинх(Оповещение, "Продолжить?", РежимДиалогаВопрос.ДаНет);

Исправление — поднять целевую версию платформы до поддерживаемой либо использовать член, доступный в целевой версии (например, синхронный Вопрос):

Ответ = Вопрос("Продолжить?", РежимДиалогаВопрос.ДаНет);

Источники

  • Источник: синтакс-помощник платформы 1С:Предприятие 8

Сниппеты

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

// BSLLS:UnavailableMemberCall-off
// BSLLS:UnavailableMemberCall-on

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

"UnavailableMemberCall": false