Имя: Пароль:
1C
1С v8
Почему не находятся битые ссылки через ТИИ
0 Aleksey1989
 
18.11.14
08:05
Добрый день. Делаю ТИИ базы, в которой абсолютно точно есть битые ссылки, но ТИИ говорит, что все ок. База файловая. Почему ТИИ не находит битые ссылки?
1 Heckfy
 
18.11.14
08:17
chdbfl.exe
Замути свою обработку (НайтиПоСсылкам(Массив))

А откуда такая уверенность, что битые ссылки есть?
2 Aleksey1989
 
18.11.14
08:19
(1) Захожу в регистр "Права ролей", например, а там в колонке "Объект метаданных" - "Объект не найден".
3 Heckfy
 
18.11.14
08:21
Дык может у тебя такой элемент (Объект не найден) в справочнике есть.
4 Aleksey1989
 
18.11.14
08:29
(3) Нет, его там нет.
5 Aleksey1989
 
18.11.14
08:30
Подскажите, можно ли как-нибудь получить список записей в том же регистре, где то или иное измерение регистра содержит битые ссылки?
6 User_Agronom
 
18.11.14
08:31
(5) попробуй (1)chdbfl.exe
7 Aleksey1989
 
18.11.14
08:40
chdbfl.exe ошибок не находит.
8 Галахад
 
гуру
18.11.14
08:42
(5) Попробуй запросом.
9 vde69
 
18.11.14
08:43
(4) может он есть а у тебя просто прав маловато?
10 Aleksey1989
 
18.11.14
08:46
(8) Пробовал, не мог понять, что писать в условии. Нашел тему http://kb.mista.ru/article.php?id=21, там есть следующий код для определения битая ссылка или нет:

Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
//битая ссылка
КонецЕсли;

(9) Права полные.
11 Ник второй
 
18.11.14
08:47
(10) Как ты определил, что права у тебя полные?

Если ТИИ не нашла битые ссылки, то их нет. Ищи проблему в другом
12 Галахад
 
гуру
18.11.14
08:48
(10) Типа такого:

ВЫБРАТЬ
    Валюты.Ссылка
ИЗ
    Справочник.Валюты КАК Валюты
ГДЕ
    Валюты.Код ЕСТЬ NULL
13 Шурик71
 
18.11.14
08:53
(10)

выбрать ИзмерениеГдеБитыеСсылки из РегистрСведений.ТотРегистр КАК рег
левое соединение справочник.ВКоторомБитаяСсылка как спр
по рег.ИзмерениеГдеБитыеСсылки = спр.ссылка
Где спр.ссылка есть NULL
14 Шурик71
 
18.11.14
08:53
(12) так ничего не выберет
15 Ник второй
 
18.11.14
08:54
(14) Выберет
16 Ник второй
 
18.11.14
08:54
(13) Не обязательно, достаточно через точку тянуть
17 StanleyMarsh
 
18.11.14
09:00
Регистр сведений права ролей нужно обновлять - он содержит важные данные. Посмотри где в конфигурации процедура, которая его обновляет и запусти ее.
18 vde69
 
18.11.14
09:09
(15) не выберет.... битой ссылки в справочнике нет... нужно выбирать из регистра или документа...
19 Ник второй
 
18.11.14
09:30
(18) А разработчики 1С на партнерском форуме считают что найдется, они не правы? 0_о
20 User_Agronom
 
18.11.14
09:57
(18) Похоже на правду. Удалили объект, значит его в базе данных нет.
(19) Ссылку, где почитать можно.
21 Шурик71
 
18.11.14
10:09
(19) разработчики такого не говорят. Либо ссылку в студию.

код из (12) может что-то выдать только в случае, когда по RLS запретили доступ к реквизиту "код", но оставили доступ к ссылке. Но это не тема вопроса.
22 Torquader
 
18.11.14
11:01
А объект метаданных как хранится ?
Если мы задаём права на какой-то справочник в целом, то или будет пустая ссылка на этот справочник или строка с его именем в метаданных (Справочник.ВидСправочника).
В случае строки, если справочника нет в базе, то будет "объект не найден", но ссылки как таковой вообще не будет.
Строки-то, ТИИ не проверяет, так как даже имя несуществующего объекта всё равно будет правильной строкой.
23 Aleksey1989
 
18.11.14
13:09
(22) В том-то и дело, что в базе реальные битые ссылки, а не наименования строкового типа.
24 vde69
 
18.11.14
13:37
(23) что такое "битая ссылка" ?

если упрощенно - это когда например в таблице документа стоит гуид, но в таблице справочника такого гуида нет...
25 Aleksey1989
 
18.11.14
13:48
(24) И при чем тут определение битой ссылки? :))) Я прекрасно знаю, что это такое.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший