Примеры программирования v8: Безопасное извлечение ссылки
v8: Безопасное извлечение ссылки
Иногда нужно извлечь ссылку или проверить, является ли значение ссылкой или объектом, содержащим ссылку, причем сделать это без конструкций попытка-исключение. Небольшая библиотека функций обеспецивает этот функционал.
Автор статьи: Гений 1С | Редакторы: Fragster Последняя редакция №4 от 23.10.07 |
//Проверяет, что значение Зн - это ссылка //Написал, отладил 20070227 fixin Функция обЭтоСсылка(Зн) экспорт Перем Ссылка; Ссылка=обИзвлечьСсылку(Зн); Возврат Зн=Ссылка и Ссылка<>Неопределено; КонецФункции //Проверяет, что значение Зн - это объект, который содержит ссылку //Написал, отладил 20070227 fixin Функция обЭтоОбъектССсылкой(Зн) экспорт Перем Ссылка; Ссылка=обИзвлечьСсылку(Зн); Возврат Зн<>Ссылка и Ссылка<>Неопределено; КонецФункции //Проверяет, что значение Зн - это примитивный тип (простым перебором) //Написал, отладил 20070227 fixin Функция обЭтоПримитивныйТип(Зн) экспорт Возврат ТипЗнч(Зн)=Тип("Null") ИЛИ ТипЗнч(Зн)=Тип("Неопределено") ИЛИ ТипЗнч(Зн)=Тип("Число") ИЛИ ТипЗнч(Зн)=Тип("Строка") ИЛИ ТипЗнч(Зн)=Тип("Дата") ИЛИ ТипЗнч(Зн)=Тип("Булево") ИЛИ ТипЗнч(Зн)=Тип("Тип"); КонецФункции //Извлекает ссылку из объекта или ссылки. //Если извлечь ссылку невозможно, возвращает Неопределено. //Работает корректно для всех типов, в том числе и для примитивных //Написал, отладил 20070227 fixin Функция обИзвлечьСсылку(Зн) экспорт Перем С; Если обЭтоПримитивныйТип(Зн) Тогда Возврат Неопределено; КонецЕсли; С=Новый Структура("Ссылка", Неопределено); ЗаполнитьЗначенияСвойств(С, Зн); Возврат С.Ссылка; КонецФункции