![]() |
|
как понять, что ссылка битая | ☑ | ||
---|---|---|---|---|
0
vasbur
25.06.13
✎
07:12
|
пишу код:
УИД = новый УникальныйИдентификатор(ИдентификаторВнешнейПечатнойФормы); ОбработкаССылка = Справочники.ВнешниеОбработки.ПолучитьСсылку(УИД); если ИдентификаторВнешнейПечатнойФормы равен гуиду несуществующего элемента (например, удаленного), то ОбработкаССылка принимает вид "<Объект не найден> (16:9741c01885dcb40711e2dd3e1123f20b)" При этом, ЗначениеЗаполнено(ОбработкаССылка) = истина. Как можно понять, указывает ли ОбработкаССылка на како-то элемент справочника или нет? |
|||
1
mehfk
25.06.13
✎
07:14
|
ссылка.ссылка будет null
|
|||
2
Галахад
гуру
25.06.13
✎
07:14
|
ОбработкаСсылка.Код isnull
|
|||
3
фобка
25.06.13
✎
07:15
|
ПолучитьОбъект() = Неопределено
|
|||
4
Cube
25.06.13
✎
07:49
|
Я последнее время использую функцию:
Функция ОбъектСуществует(СсылкаНаОбъект, Тип) Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ " + Тип + " ГДЕ Ссылка = &Ссылка"); Запрос.Параметры.Вставить("Ссылка", СсылкаНаОбъект); Выборка = Запрос.Выполнить().Выбрать(); Возврат Выборка.Следующий(); КонецФункции //ОбъектСуществует() |
|||
5
el-gamberro
25.06.13
✎
07:51
|
(3) за такое линейкой по пальцам :)))
|
|||
6
jsmith82
25.06.13
✎
07:53
|
Найти(Строка(Ссылка), "не найден") > 0
|
|||
7
Cube
25.06.13
✎
07:56
|
(6) Не универсально - зависит от языка...
|
|||
8
Mitriy
25.06.13
✎
07:57
|
ВЫБРАТЬ
РеализацияТоваровУслугТовары.Ссылка, РеализацияТоваровУслугТовары.Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Номенклатура.Код ЕСТЬ NULL |
|||
9
Мимохожий Однако
25.06.13
✎
07:57
|
Из БСП
// Создает и возвращает объект внешней обработки (отчета). // // Параметры: // Ссылка (СправочникСсылка.ДополнительныеОтчетыИОбработки) Подключаемая обработка. // // Возвращаемое значение: // (ВнешняяОбработкаОбъект.*) Объект подключенной обработки. // (ВнешнийОтчетОбъект.*) Объект подключенного отчета. // (Неопределено) Если передана некорректная ссылка. // // Важно: // Проверка функциональной опции "ИспользоватьДополнительныеОтчетыИОбработки" // должна выполняться вызывающим кодом. // Функция ПолучитьОбъектВнешнейОбработки(Ссылка) Экспорт // Подключение ИмяОбработки = ПодключитьВнешнююОбработку(Ссылка); // Проверка корректности переданных параметров Если ИмяОбработки = Неопределено Тогда Возврат Неопределено; КонецЕсли; // Получение экземпляра объекта Если Ссылка.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет ИЛИ Ссылка.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет Тогда Менеджер = ВнешниеОтчеты; Иначе Менеджер = ВнешниеОбработки; КонецЕсли; Возврат Менеджер.Создать(ИмяОбработки); КонецФункции |
|||
10
Sammo
25.06.13
✎
08:04
|
Зависит от задачи. Если нужно проверить в запросе, то проверка на нулл.
Если проверить битость конкретной ссылки, то, имхо, лучше 4. Кстати, он несколько быстрее 3 |
|||
11
Лефмихалыч
25.06.13
✎
08:05
|
ВЫБРАТЬ ВЫБОР КОГДА ссылка.ссылка ЕСТЬ NULL ТОГДА Истина Иначе Ложь КОНЕЦ КАК Битая
ИЗ Справочник.ТвойСправочник Где Ссылка = &ТвояСсылка Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Возврат Выборка.Битая; |
|||
12
Cube
25.06.13
✎
08:05
|
(10) "лучше 4. Кстати, он несколько быстрее 3"
Можешь проверить, но разница ощутима. |
|||
13
Defender aka LINN
25.06.13
✎
08:12
|
(11) Неприальна
|
|||
14
Рэйв
25.06.13
✎
08:48
|
(0)Чего ты паришься?:-)
Если Лев(Строка(ТвояСсылка),18)="<Объект не найден>" Тогда Сообщить("Это битая"); КонецЕсли; |
|||
15
Рэйв
25.06.13
✎
08:48
|
надеюсь никому не придет в наименовании справочника писать "<Объект не найден>"
:-) |
|||
16
Sammo
25.06.13
✎
10:43
|
(14) См. 6 и 7
А если язык английский? |
|||
17
PR
25.06.13
✎
10:48
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |