Руководство разработчика

Функция СУЩ_ПЕРЕМ

Функция СУЩ_ПЕРЕМ позволяет узнать, имеется ли переменная с указанным именем.

ФУНКЦИЯ ТИП_ЛОГИКА: СУЩ_ПЕРЕМ(ТИП_СТРОКА: имя)

Параметры

имя
Имя переменной.

Возвращаемое значение

ДА – если указанная переменная существует и НЕТ – в противном случае.

При использовании в формульном разделе бланка проверяются только переменные, определенные в этом бланке. Определения и реквизиты не проверяются.

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

Так как объекты являются переменными, то к ним также применима функция СУЩ_ПЕРЕМ, но применение ее к полям объекта ошибочно.

Пример использования

a1 = 1
С = СУЩ_ПЕРЕМ (а1)    // С = ДА
С = СУЩ_ПЕРЕМ (а2)    // С = НЕТ

Замечание 1

Для обычных (не индексных) переменных функция СУЩ_ПЕРЕМ выполняет поиск только в режиме интерпретатора. В режиме компилятора наличие переменной во время выполнения уже известно. Поэтому при выполнении компилированного кода поиска переменной не происходит, а СУЩ_ПЕРЕМ возвращает заранее вычисленное значение - ДА или НЕТ.

Замечание 2

В режиме интерпретатора для индексных переменных нет отдельной сущности при выполнении. Указание индекса приводит к "склеиванию" имени переменной и значения индекса для получения составного имени: a!1 эквивалентно a1. Поэтому при проверке наличия переменной функцией СУЩ_ПЕРЕМ играет роль ограничение на предельную длину для составного имени (31 символ, см. Соглашение об именованиях).

// в режиме интерпретатора
Счет!"111111111111122222222222222222333333333333" = 12500

сущ = СУЩ_ПЕРЕМ(Счет!"111111111111122222222222222222333333333333") 
  // ДА
  
сущ = СУЩ_ПЕРЕМ(Счет!"111111111111122222222222222222333333333339") 
  // ДА !!! : отличие за пределами 31 символа
  
сущ = СУЩ_ПЕРЕМ(Счет!"511111111111122222222222222222333333333333")
  // НЕТ
  
сущ = СУЩ_ПЕРЕМ(Счет111111111111122222222222222222333333333333)    
  // ДА : индексная, не индексная - не важно
  

Замечание 3

В режиме компилятора для индексных переменных происходит реальный поиск элемента по значению индекса. Ограничение на длину индекса составляет 255 символов.

// в режиме компилятора
Счет!"111111111111122222222222222222333333333333" = 12500

сущ = СУЩ_ПЕРЕМ(Счет!"111111111111122222222222222222333333333333") 
  // ДА
  
сущ = СУЩ_ПЕРЕМ(Счет!"111111111111122222222222222222333333333339") 
  // НЕТ
  
сущ = СУЩ_ПЕРЕМ(Счет!"511111111111122222222222222222333333333333") 
  // НЕТ
  
сущ = СУЩ_ПЕРЕМ(Счет111111111111122222222222222222333333333333)
  // НЕТ : указано имя без индекса

См. также: