Эту операцию можно проиллюстрировать на примере тех же структур Сотрудник и ПочтовыйАдрес, которые были рассмотрены выше. Например, заранее неизвестно, заполнен ли адрес у сотрудника. Если в такой ситуации не предпринять никаких действий, то следующий код приведет к ошибке во время работы приложения (рис. 3.3):
пер Менеджер = новый Сотрудник("Иванов")
пер СтранаСотрудника = Менеджер.Адрес.Страна
Рис. 3.3. Ошибка времени выполнения
В переменной Адрес находится Неопределено, и «Элемент» не может найти у него свойство Страна.
Чтобы этого не случилось, можно использовать операцию безопасного доступа, с помощью которой выполняется доступ через точку (или вызов метода), только если источник вызова не Неопределено, иначе результат всей цепочки становится Неопределено. Для осуществления безопасного доступа после источника вызова ставится символ «?.».
пер Менеджер = новый Сотрудник("Иванов")
пер СтранаСотрудника = Менеджер.Адрес?.Страна
Тогда, если адрес не указан, ошибки не возникнет, а все выражение будет иметь значение Неопределено, которое можно обработать в алгоритме. Например, оповестить ответственного о том, что необходимо заполнить адрес сотрудника (рис. 3.4).
Рис. 3.4. Операция безопасного доступа