|
Составить соединение в запросе, если соединяемое поле может принимать NULL | ☑ | ||
---|---|---|---|---|
0
Vladal
24.10.12
✎
14:55
|
Есть два регистра с похожей аналитикой - 4 совпадающих измерения "Организация, Контрагент, ДоговорКонтрагента и Сделка".
В старых документах местами не была указана аналитика, в новых указывается всё, с этим проблем при соединении нет. Организация указана у всех, а контрагенты/договоры не всегда. Но мне надо связать данные из регистров по совпадающим полям. Т.е. если контрагент в одной таблице есть, а в другой - NULL, тогда соединяем по организации. Или: организация и контрагент указаны, но в записи одного регистра договор указан, а в другом - нет. Если просто написать соединение, то попадают не все записи, если указать только организацию - то много лишней инфы. Я в соединении написал выбор - если контрагент где-то отсутствует, тогда соединяем. Вот кусок запроса: | ВЫБРАТЬ | ДвиженияДенежныхСредствОбороты.СтатьяДвиженияДенежныхСредств, | ДвиженияДенежныхСредствОбороты.Контрагент, | ДвиженияДенежныхСредствОбороты.ДоговорКонтрагента, | ДвиженияДенежныхСредствОбороты.Сделка, | ДвиженияДенежныхСредствОбороты.Организация, | ДвиженияДенежныхСредствОбороты.СуммаОборот, | ДвиженияДенежныхСредствОбороты.СуммаУпрОборот | ИЗ | РегистрНакопления.ДвиженияДенежныхСредств.Обороты(&НачалоПериода, &КонецПериода, , ПриходРасход = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Расход) {(СтатьяДвиженияДенежныхСредств).* КАК СтатьяДвиженияДенежныхСредств, (Организация).* КАК Организация}) КАК ДвиженияДенежныхСредствОбороты) КАК ДДС | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&КонецПериода, {(Организация).*}) КАК ВзаиморасчетыСКонтрагентамиОстатки | ПО ДДС.Организация = ВзаиморасчетыСКонтрагентамиОстатки.Организация | И (ВЫБОР | КОГДА ДДС.Контрагент = NULL | ИЛИ ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = NULL | ТОГДА ИСТИНА | ИНАЧЕ ДДС.Контрагент = ВзаиморасчетыСКонтрагентамиОстатки.Контрагент | КОНЕЦ) Он все равно пропускает все записи. Что бы еще подправить? Написать ЕстьНУЛЛ? |
|||
1
shuhard
24.10.12
✎
14:57
|
(0) [КОГДА ДДС.Контрагент = NULL]
и чё - работает ? |
|||
2
Vladal
24.10.12
✎
14:57
|
(1) неа. поцчему-то не работает (( как напейсать правильно?
|
|||
3
Vladal
24.10.12
✎
14:58
|
ЕстьНулл?
|
|||
4
Kashemir
24.10.12
✎
14:58
|
Есть NULL
|
|||
5
Feanorko
24.10.12
✎
14:58
|
(2) познаешь 8-ку? :)
|
|||
6
Vladal
24.10.12
✎
15:01
|
(5) ага. возвращаюсь к напечатанному. долго не тренировался в восьмерке.
|
|||
7
Feanorko
24.10.12
✎
15:04
|
(6) А в чем трудность заполнить аналитику, если она нужна? Полагаю, запросом нормально не сделаешь свою задачу: будешь соединять без учета одного поля и получишь тучу лишних записей в итоге.
|
|||
8
Vladal
24.10.12
✎
15:05
|
(7) в закрытых периодах и аналитику вели несколькими документами. Потом одним. Притом давно.
|
|||
9
1Страх
24.10.12
✎
15:06
|
там не может быть NULL с точки зрения 1С
|
|||
10
Reset
24.10.12
✎
15:06
|
(ВзаиморасчетыСКонтрагентамиОстатки.Контрагент ЕСТЬ NULL
ИЛИ ДДС.Контрагент = ВзаиморасчетыСКонтрагентамиОстатки.Контрагент) ДДС.Контрагент на null проверять не надо, я так понимаю |
|||
11
Feanorko
24.10.12
✎
15:07
|
(8) если не хочешь трогать закрытый период, то на начало открытого корректировкой обнули кривые данные и заполни правильными
|
|||
12
1Страх
24.10.12
✎
15:07
|
(8) вот он вред от неопеределено!
|
|||
13
Reset
24.10.12
✎
15:08
|
(10) Написал фигню, не вдумываясь
|
|||
14
Reset
24.10.12
✎
15:09
|
Верно в (9)
|
|||
15
Vladal
24.10.12
✎
15:13
|
(9) Ну если бы выгружал в ТЗ или выборке - то да, неопределено. А в запросе НУЛЛ
|
|||
16
Vladal
24.10.12
✎
15:14
|
(10) Надо оба олперанда проверять, левый и правый. Я накреативил
| И (ВЫБОР | КОГДА (ДДС.Контрагент ЕСТЬ NULL | ИЛИ ВзаиморасчетыСКонтрагентамиОстатки.Контрагент ЕСТЬ NULL) | ТОГДА ИСТИНА | ИНАЧЕ ДДС.Контрагент = ВзаиморасчетыСКонтрагентамиОстатки.Контрагент | КОНЕЦ) | И (ВЫБОР | КОГДА (ДДС.ДоговорКонтрагента ЕСТЬ NULL | ИЛИ ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента ЕСТЬ NULL) | ТОГДА ИСТИНА | ИНАЧЕ ДДС.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента | КОНЕЦ) | И (ВЫБОР | КОГДА (ДДС.Сделка ЕСТЬ NULL | ИЛИ ВзаиморасчетыСКонтрагентамиОстатки.Сделка ЕСТЬ NULL) | ТОГДА ИСТИНА | ИНАЧЕ ДДС.Сделка = ВзаиморасчетыСКонтрагентамиОстатки.Сделка | КОНЕЦ) |
|||
17
Vladal
24.10.12
✎
15:14
|
И все равно нихт...
|
|||
18
Feanorko
24.10.12
✎
15:16
|
(17) внимательно прочитай то, что в (7) после двоеточия, хорошенько подумай :)
|
|||
19
Vladal
24.10.12
✎
15:19
|
(18) вопрос о конкретной связи в конкретной выборке за конкретный период. В новом периоде всё есть, в старом нет.
|
|||
20
Reset
24.10.12
✎
15:19
|
Вероятно, нужно проверять на
ДДС.Контрагент=Значение(Справочник.Контрагенты.ПустаяСсылка) |
|||
21
Feanorko
24.10.12
✎
15:22
|
(19) плохо ты прочитал, ничего не понял, видимо :) бейся дальше и пытайся решить нерешаемую задачу :)
|
|||
22
Vladal
24.10.12
✎
15:44
|
(21) Повторю: до определенной даты аналитика не учитывалась и велась "по желанию" и разными документами
После августа 11 года данные велись в одном документе, с указанием аналитики. |
|||
23
Feanorko
24.10.12
✎
15:45
|
(22) Пилите, Шура, пилите, они золотые :)
|
|||
24
Vladal
24.10.12
✎
16:17
|
(23) Уже выпилили.
|
|||
25
Sedoy
24.10.12
✎
16:28
|
Я конечно в 8-ке еще дилетант, только начал осваивать, но почему выбор не сделать не по условию , где какая аналитика, а просто разделить запрос по временным периодам, с учетом различного заполнения аналитики и эти периоды объединить?
|
|||
26
Vladal
24.10.12
✎
16:48
|
(25) Хорошая идея. Но уже пилим аналитику в документы, как говорил достопочтенный Feanorko
|
|||
27
Vladal
24.10.12
✎
16:57
|
Вопрос решён. // где-то тут должен быть этот флажок
OFF: Состояние темы в заголовке [не было 'Не решено', и не будет, и не надо!] |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |