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

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

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

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

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

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

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

Кроме членов, диагностика проверяет конструирование самого типа - Новый ИмяТипа(...). Версия появления типа берётся с его главной страницы в синтакс-помощнике, поэтому такая проверка работает только при установленной платформе 1С. Форма Новый("ИмяТипа") не проверяется: имя типа там вычисляется в рантайме.

Примеры

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

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

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

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

Конструирование типа, которого нет в целевой версии. Тип ЧтениеJSON доступен только начиная с 8.3.6, а целевая версия платформы - 8.3.5:

// Срабатывание: тип доступен только с версии 8.3.6
Чтение = Новый ЧтениеJSON();

Исправление - поднять целевую версию платформы до 8.3.6 или выше либо решить задачу типами, доступными в целевой версии (для разбора JSON до 8.3.6 штатного типа нет, данные читают строковыми средствами):

Чтение = Новый ЧтениеТекста(ИмяФайла);

Источники

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

Сниппеты

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

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

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

"UnavailableMemberCall": false