Функция СУЩ_ПЕРЕМ
Функция СУЩ_ПЕРЕМ позволяет узнать, имеется ли переменная с указанным именем.
ФУНКЦИЯ ТИП_ЛОГИКА: СУЩ_ПЕРЕМ(ТИП_СТРОКА: имя)
Параметры
- имя
- Имя переменной.
Возвращаемое значение
ДА – если указанная переменная существует и НЕТ – в противном случае.
При использовании в формульном разделе бланка проверяются только переменные, определенные в этом бланке. Определения и реквизиты не проверяются.
При использовании в библиотечной функции проверяются только локальные переменные, определенные в этой функции и переданные ей параметры по их локальным именам.
Так как объекты являются переменными, то к ним также применима функция СУЩ_ПЕРЕМ, но применение ее к полям объекта ошибочно.
Пример использования
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) // НЕТ : указано имя без индекса