|
Как правильно найти битую ссылку составного типа? | ☑ | ||
---|---|---|---|---|
0
toypaul
гуру
11.11.14
✎
10:25
|
Вот такое условие не срабатывает почему-то
ГДЕ ИТ_НаличиеПрикрепленныхФайлов.Объект.Ссылка ЕСТЬ NULL типов много. есть и справочники и документы ... |
|||
1
Ёпрст
11.11.14
✎
10:26
|
а с фига ли там null то будет ?
|
|||
2
toypaul
гуру
11.11.14
✎
10:27
|
насколько я понимаю (как написано на форуме) Объект.Ссылка приводить к соединению (левому). соот-но если ссылка битая, то будет НУЛЛ.
ваще запрос не я писал. мне надо разобраться. |
|||
3
ChAlex
11.11.14
✎
10:57
|
В запросе НИКАК. Только через Ссылка.ПолучитьОбъект()=Неопределено
|
|||
4
бомболюк
11.11.14
✎
11:00
|
если нужны только битые то вот так должно полететь:
ГДЕ ИТ_НаличиеПрикрепленныхФайлов.Объект.Ссылка ЕСТЬ NULL И ИТ_НаличиеПрикрепленныхФайлов.Объект <> Неопределено |
|||
5
Гёдза
11.11.14
✎
11:10
|
А точно ссылка то битая?
если выбрать ИТ_НаличиеПрикрепленныхФайлов.Объект.Ссылка что будет? |
|||
6
Kalambur
11.11.14
✎
11:20
|
(5) в запросе?
|
|||
7
ChAlex
11.11.14
✎
16:45
|
Блин - есть же время кусать кактус?! Для битой ссылки ВСЕ РАВНО есть ссылка!! Можете даже к реквизитам этой ссылки обращаться, другой вопрос что там все пусто. Поэтому ну нечего тут выеживаться!! НЕ УМЕЕТ 1С на сегодня выдавать битые ссылки в запросах!! Только через получение объекта!
|
|||
8
H A D G E H O G s
11.11.14
✎
16:50
|
(7) Ерунда.
|
|||
9
StaticUnsafe
11.11.14
✎
16:50
|
(7) Неправда. Получай представление ссылки. Если объекта нет, то в представлении будет "объект не найден(guid)".
парсишь представление, вуаля |
|||
10
H A D G E H O G s
11.11.14
✎
16:51
|
(9) Автор помрет, прежде чем это отработает
|
|||
11
H A D G E H O G s
11.11.14
✎
16:54
|
Счаст я скриплю мозгами и вспоминаю, как я делал.
|
|||
12
Serginio1
11.11.14
✎
16:54
|
(0) Посмотри текст реального запроса
|
|||
13
H A D G E H O G s
11.11.14
✎
16:54
|
Не в том плане, как получить битые ссылки, а как получить их за приемлимое время.
|
|||
14
StaticUnsafe
11.11.14
✎
16:57
|
(10) зависит от количества типов в составном типе, для каждого типа можно делать свой запрос, или собрать его динамически по метаданным реквизита "Объект".
ну или "тестирование и исправление", но это не запрос. |
|||
15
H A D G E H O G s
11.11.14
✎
16:59
|
Я делал не так, но:
1) ВЫБРАТЬ РАЗЛИЧНЫЕ ТИПЗНАЧЕНИЯ(ИТ_НаличиеПрикрепленныхФайлов.Объект) 2) Для Каждого ТипЗначения Из Результат выполнить запрос РС + Справочник данного типа по Левому соединению |
|||
16
Serginio1
11.11.14
✎
16:59
|
(13) Только левым соединением с каждой таблицей по типу, а для составных типов что типа такогд
Выбор Когда ТипЗначения(ИТ_НаличиеПрикрепленныхФайлов)= =ТИП(Документ.РеализацияТоваровУслуг) Тогда соединение с |
|||
17
Serginio1
11.11.14
✎
17:02
|
16+ либо сгруппировать по типу
ТИПЗНАЧЕНИЯ(ИТ_НаличиеПрикрепленныхФайлов.Объект),ИТ_НаличиеПрикрепленныхФайлов.Объект и делать к каждой таблице левое соединение. |
|||
18
H A D G E H O G s
11.11.14
✎
17:03
|
Примерное условие соединения:
ВЫБРАТЬ РАЗЛИЧНЫЕ ЦеныНоменклатуры.Регистратор ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры ПО (ЦеныНоменклатуры.Регистратор ССЫЛКА Документ.УстановкаЦенНоменклатуры И ЦеныНоменклатуры.Регистратор <> ЗНАЧЕНИЕ(Документ.УстановкаЦенНоменклатуры.ПустаяСсылка) И ЦеныНоменклатуры.Регистратор = УстановкаЦенНоменклатуры.Ссылка) ГДЕ УстановкаЦенНоменклатуры.Ссылка ЕСТЬ NULL |
|||
19
H A D G E H O G s
11.11.14
✎
17:03
|
(18) Я писал для РС и регистратора, РС с составным измерением бегло не нашел.
|
|||
20
Serginio1
11.11.14
✎
17:11
|
19+ либо делать Объединить все для каждого типа
|
|||
21
StaticUnsafe
11.11.14
✎
17:14
|
(19) аяяй, условие наложеное на правую таблицу при левом соединении, автоматически превращает соединение во внутреннее.
Книга Язык запросов "1С:Предприятия 8" стр. 115 |
|||
22
Serginio1
11.11.14
✎
17:16
|
(21) Только не для ЕСТЬ NULL
стандарт SQL |
|||
23
StaticUnsafe
11.11.14
✎
17:17
|
(22) пруф?
|
|||
24
Зеленый пень
11.11.14
✎
17:20
|
(0) попробуй
ГДЕ ИТ_НаличиеПрикрепленныхФайлов.Объект.Код ЕСТЬ NULL И ИТ_НаличиеПрикрепленныхФайлов.Объект.Номер ЕСТЬ NULL |
|||
25
Serginio1
11.11.14
✎
17:21
|
(23) То есть ты считаешь, что левое соединение
с условием УстановкаЦенНоменклатуры.Ссылка ЕСТЬ NULL то есть отсутствием соединения превращается во внутреннее? Внутренним оно будет когда соединение выполняется |
|||
26
H A D G E H O G s
11.11.14
✎
17:22
|
О чем я и говорил, в одной из прошлых веток, 1С никам дали несколько парадигд, в расчете на их дятлизм, дабы они вусмерть не убили систему, и они благополучно ими пользуются не пытаясь мыслить, почему так.
Это я о (21) |
|||
27
StaticUnsafe
11.11.14
✎
17:22
|
(25) именно так и считаю
|
|||
28
H A D G E H O G s
11.11.14
✎
17:23
|
(27) Попробуй. Проверить.
|
|||
29
H A D G E H O G s
11.11.14
✎
17:25
|
(25) И ведь его мозг не в состоянии понять, почему
"условие наложеное на правую таблицу при левом соединении, автоматически превращает соединение во внутреннее.". И почему эта фраза образна. |
|||
30
StaticUnsafe
11.11.14
✎
17:25
|
(28) проверил. если соединить два справочника по ссылкам левым соединением и в ГДЕ указать ЕСТЬ NULL на поле из правого справочника то запрос пустой, т.е. соединение стало внутренним, проффесор
|
|||
31
H A D G E H O G s
11.11.14
✎
17:27
|
(30) Продолжай пробовать.
|
|||
32
StaticUnsafe
11.11.14
✎
17:27
|
(31) лучше расскажи про состояния мозга
|
|||
33
Serginio1
11.11.14
✎
17:28
|
(30) https://ru.wikipedia.org/wiki/Join_(SQL)#LEFT_OUTER_JOIN
А то, что у тебя запрос пустой, то это говорит о том, что при левом соединении выполнились все условия. |
|||
34
StaticUnsafe
11.11.14
✎
17:30
|
(33) читай еще раз, два справочника по ссылкам, т.е. не выполнится ни одно соединение, т.к. справочники разные. Попробуй, дядь
|
|||
35
H A D G E H O G s
11.11.14
✎
17:30
|
(32)
Давай я тебе помогу: ВЫБРАТЬ ПЕРВЫЕ 10 ТоварыОрганизаций.Регистратор ИЗ РегистрНакопления.ТоварыОрганизаций КАК ТоварыОрганизаций ЛЕВОЕ СОЕДИНЕНИЕ Документ.ABCКлассификацияПокупателей КАК ABCКлассификацияПокупателей ПО ТоварыОрганизаций.Регистратор = ABCКлассификацияПокупателей.Ссылка ГДЕ ABCКлассификацияПокупателей.Ссылка ЕСТЬ NULL |
|||
36
Serginio1
11.11.14
✎
17:30
|
(32) Безумству храбрых поем мы песню. Кстати сколько ты с SQL работаешь, и сколько книжек кроме Язык запросов "1С:Предприятия 8" прочитал?
|
|||
37
H A D G E H O G s
11.11.14
✎
17:32
|
(36) Все в порядке, я занес его в свой список.
|
|||
38
Serginio1
11.11.14
✎
17:32
|
(34) Кстати Для тебя H A D G E H O G s специально приводит код. Тогда и ты приведи свой
|
|||
39
StaticUnsafe
11.11.14
✎
17:35
|
(38) ладно, убедили
|
|||
40
StaticUnsafe
11.11.14
✎
17:35
|
все таки монстры из палеозоя тоже на что то годятся
|
|||
41
StaticUnsafe
11.11.14
✎
17:36
|
это я не про себя (если что)
|
|||
42
Fragster
гуру
11.11.14
✎
17:40
|
(26) да ладно, операция поиска битых ссылок все равно разовая. Ну, ради интереса можешь конечно объединение залепить, но как правило сильно впадлу.
|
|||
43
Fragster
гуру
11.11.14
✎
17:41
|
кстати, (0) должно таки работать :)
|
|||
44
Torquader
11.11.14
✎
17:46
|
Нет, а в чём проблема поиска битых ссылок ?
Ссылка считается битой, если в таблице объекта, на который она ссылается, нет записи. Другое дело, что если у нас ссылка на документ общего вида, то без получения конкретного вида документа понять, что она битая - перебирать таблицы всех документов. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |