Ключевое слово ОБЪЕКТ
1. Проверка типа объекта, реализующего интерфейс.
Для проверки типа объекта, реализующего интерфейс, ключевое слово ОБЪЕКТ используется в выражениях.
Синтаксис:
ОБЪЕКТ(<выражение>, &<имя объектного типа>)
- <выражение>
- Определяет исходный интерфейс, через который выполняется запрос.
- <имя объектного типа>
- Задает проверяемый объектный тип.
Возвращаемое значение:
Возвращает значение логического типа:
- ДА – реализующий интерфейс объект имеет указанный тип или производный (дочерний) тип.
- НЕТ – при нулевой ссылке на интерфейс или несоответствии типа реализующего объекта и указанного имени типа.
Возврат значения ДА дает гарантию, что запрос объекта указанного типа будет выполнен без ошибки (см. п.2).
Пример:
ФУНКЦИЯ ОчиститьТаблицу(ПЕРЕМ ТАБЛИЦА: таблица) таблица.кол_строк = 0 СБРОС(таблица.элементы) КОНЕЦ_ФУНКЦИИ ФУНКЦИЯ ОчиститьЭлемент(И_ЭЛЕМЕНТ: эл) ЕСЛИ ОБЪЕКТ(эл, &ТАБЛИЦА) ТО // только для объектов типа ТАБЛИЦА и производных от ТАБЛИЦА ОчиститьТаблицу(ОБЪЕКТ(эл, ТАБЛИЦА)) КОНЕЦ_ЕСЛИ КОНЕЦ_ФУНКЦИИ
2. Запрос объекта, реализующего интерфейс.
Для запроса объекта, реализующего интерфейс, ключевое слово ОБЪЕКТ используется в выражениях.
Синтаксис:
ОБЪЕКТ(<выражение>, <имя объектного типа>)
- <выражение>
- Определяет исходный интерфейс, через который выполняется запрос.
- <имя объектного типа>
- Задает тип запрашиваемого объектного значения.
Возвращаемое значение:
Возвращает ссылку на объектное значение, которая может быть использована для изменения объекта. Например, ссылка может быть передана как параметр-переменная при вызове функции или метода. С помощью именованной ссылки можно сопоставить локальное имя возвращенному объектному значению.
Ошибка времени выполнения возникает в следующих ситуациях:
- значение исходного интерфейса нулевое;
- тип объекта, реализующего исходный интерфейс, не равен заданному и не является его потомком.
Пример:
ФУНКЦИЯ ОчиститьТаблицу(ПЕРЕМ ТАБЛИЦА: таблица) таблица.кол_строк = 0 СБРОС(таблица.элементы) КОНЕЦ_ФУНКЦИИ ФУНКЦИЯ ОчиститьЭлемент(И_ЭЛЕМЕНТ: эл) ВЫБОР (эл.ИДЕНТ) #"поле_ввода": ОБЪЕКТ(эл, РЕДАКТОР).текст = "" #"табл" : ОчиститьТаблицу(ОБЪЕКТ(эл, ТАБЛИЦА)) КОНЕЦ_ВЫБОРА КОНЕЦ_ФУНКЦИИ
Пример (именованная ссылка):
ФУНКЦИЯ ОчиститьЭлемент(И_ЭЛЕМЕНТ: эл) ЕСЛИ ОБЪЕКТ(эл, &ТАБЛИЦА) ТО // только для объектов типа ТАБЛИЦА и производных от ТАБЛИЦА ПЕРЕМ& табл = ОБЪЕКТ(эл, ТАБЛИЦА) // получаем ссылку табл.кол_строк = 0 СБРОС(табл.элементы) КОНЕЦ_ЕСЛИ КОНЕЦ_ФУНКЦИИ