|
Как определить программно ссылка битая или нет ? | ☑ | ||
---|---|---|---|---|
0
EarthsSoul
29.08.12
✎
07:25
|
Здравствуйте
Нужно определить ссылка битая или нет, и не хочется использовать конструкцию: попытка ... исключение. Как определить программно, ссылка битая или нет ? |
|||
1
EarthsSoul
29.08.12
✎
07:34
|
Похоже ничего лучше чем
Если БИТАЯССЫЛКА.ПолучитьОбъект() = Неопределено тогда уже не найти... |
|||
2
kosts
29.08.12
✎
07:35
|
можно попробовать запрос
|
|||
3
shuhard
29.08.12
✎
07:36
|
(2) +1
код для справочника номер для документа |
|||
4
Sammo
29.08.12
✎
07:42
|
Кстати, емнип запрос у меня получился быстрее, чем получитьобъект
|
|||
5
DosBot
29.08.12
✎
08:09
|
могу предложить код сомнительного качества, но работает всегда, даже в случае, если ссылки нема из-за РЛС:
ОбъектСуществует = (Найти(Строка(Задача), "<Объект не найден>") = 0) |
|||
6
DosBot
29.08.12
✎
08:11
|
+(5) тьфу,
Задача = НужныйОбъект |
|||
7
rs_trade
29.08.12
✎
08:12
|
(5) нормальный код. по крайней мере он быстрее в тысячу раз чем вариант в (1)
|
|||
8
Рэйв
29.08.12
✎
08:12
|
Если Лев(Строка(Реквизит.Ссылка),7) ="<Объект" Тогда
Сообщить("Оно битое!"); КонецЕсли; |
|||
9
Starhan
29.08.12
✎
08:13
|
ЕМНИП в запросе.
ГДЕ (НЕ Объект Есть NULL) И (Объект.Ссылка Есть NULL) |
|||
10
DosBot
29.08.12
✎
08:13
|
(7) честно говоря, помозговав на эту тему и выбирая из множества вариантов, пожалуй да, он нормальный. Ввиду того, что объектов с представлением "<Объект не найден>" уж точно не будет :)
|
|||
11
Рэйв
29.08.12
✎
08:14
|
для пущей уверенности можно
Если Лев(Строка(Реквизит.Ссылка),18) ="<Объект не найден>" Тогда |
|||
12
andrewks
29.08.12
✎
08:14
|
(4) зависит от типа объекта - сколько и каких у него реквизитов, ТЧ
|
|||
13
andrewks
29.08.12
✎
08:14
|
(11) не зачёт
|
|||
14
hhhh
29.08.12
✎
08:15
|
(7) а откуда сведения, что быстрее? Ведь платформа тоже неявно выполняет команду ПолучитьОбъект(), и после этого уже пишет "Объект не найден".
|
|||
15
Sammo
29.08.12
✎
08:15
|
(10) Хм. А если кто-то создаст элемент справочника с таким наименованием и основным представлением по наименованию?
Просто чтобы потролить? |
|||
16
andrewks
29.08.12
✎
08:17
|
(14) не-не-не, не путай, представление есть всегда, за ним в БД не лезут
|
|||
17
DosBot
29.08.12
✎
08:18
|
(15) вероятность этого идиотизма намного меньше, чем вред от рассуждений на тему как бы идеально-универсально узнать битость объекта :)
|
|||
18
DosBot
29.08.12
✎
08:19
|
+(15) если захочется потроллить - есть масса других вариантов.. %)
|
|||
19
DosBot
29.08.12
✎
08:21
|
а главное в (5) работает даже в случае RLS - когда нельзя обращаться к другим реквизитам.. и Попытка Исключение не нужны..
|
|||
20
andrewks
29.08.12
✎
08:23
|
(19) пока (внезапно) не найдётся клиент с интерфейсом на другом языке?
|
|||
21
GaikA_13rus
29.08.12
✎
08:26
|
||||
22
hhhh
29.08.12
✎
08:32
|
(16) то есть вы намекаете, что представление всегда считывается из базы вместе со ссылкой? И хранится в памяти? Но это же нерационально. Может оно не понадобится, зачем его каждый раз грузить?
|
|||
23
DosBot
29.08.12
✎
08:32
|
(20) Если делаешь нетленку с расчётом на международный уровень тогда конечно - не. Просто это самый простой способ, и конечно, не самый надёжный
|
|||
24
rs_trade
29.08.12
✎
08:33
|
(20) что же выбрать?
1. Тормозной способ работающий в 100% случаев 2. Быстрый способ работающий в 99% случаев? я бы выбрал второе. уж больно ПолучитьОбъект грузит систему. |
|||
25
DosBot
29.08.12
✎
08:34
|
а вот интересно, чего выдаст платформа вместо <Объект не найден> в отладчике, на другом языке?? есть возможность проверить?
|
|||
26
DosBot
29.08.12
✎
08:35
|
<Object not found> и т.п.??
|
|||
27
DosBot
29.08.12
✎
08:37
|
можно в конце концов проверить, если основной язый русский тогда
Найти(), иначе ПолучитьОбъект() |
|||
28
andrewks
29.08.12
✎
08:43
|
(24) я бы выбрал
3. запрос |
|||
29
andrewks
29.08.12
✎
08:44
|
(22) на то оно и представление
|
|||
30
Sammo
29.08.12
✎
09:11
|
(26) Да. Для английского, разумеется
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |