Книга: «1С:Предприятие.Элемент». Возможности встроенного языка
Назад: Операции для работы со значением «Неопределено»
Дальше: Операция «Безопасный доступ»

Настойчивая операция

Если вы уверены, что выражение в момент выполнения программы не может иметь значение Неопределено, то после этого выражения можно поставить символ «!» (восклицательный знак).

Смысл этой операции заключается только в том, чтобы убрать из описания типа тип Неопределено, если известно, что его там точно быть не может.

Проиллюстрировать это можно на примере структур (подробнее о структурах рассказывается в разделе «»).

Допустим, есть две структуры: Сотрудник и ПочтовыйАдрес.

структура Сотрудник

пер ФИО: Строка

пер Адрес: ПочтовыйАдрес?

пер Телефон: Строка?

конструктор (ФИО)

конструктор (ФИО, Адрес)

;

структура ПочтовыйАдрес

пер Страна: Строка?

пер Город: Строка

пер Улица: Строка?

пер Дом: Строка?

конструктор (Город)

;

Структура Сотрудник имеет поля ФИО, Адрес и Телефон. В поле Адрес содержится, в свою очередь, экземпляр другой структуры – ПочтовыйАдрес. Она имеет поля Страна, Город, Улица и Дом.

Сотрудник имеет два конструктора: можно указать только ФИО или ФИО и Адрес. ПочтовыйАдрес имеет конструктор, в котором можно указать только Город.

Например, в программном коде создается экземпляр сотрудника, и точно известно, что у него есть адрес.

Если просто присвоить этот адрес переменной АдресСотрудника, то она будет иметь составной тип ПочтовыйАдрес? (рис. 3.1).

пер Стажер = новый Сотрудник("Иванов", новый ПочтовыйАдрес("Владимир"))

пер АдресСотрудника = Стажер.Адрес

Рис. 3.1. Тип переменной «АдресСотрудника»

Но если точно известно, что в данном случае в переменной АдресСотрудника не может быть значения Неопределено, то можно использовать эту операцию, чтобы убрать тип Неопределено из описания типов.

пер Стажер = новый Сотрудник("Иванов", новый ПочтовыйАдрес("Владимир"))

пер АдресСотрудника = Стажер.Адрес!

Переменная АдресСотрудника будет иметь тип ПочтовыйАдрес (рис. 3.2).

Рис. 3.2. Тип переменной «АдресСотрудника»

Назад: Операции для работы со значением «Неопределено»
Дальше: Операция «Безопасный доступ»