![]() |
|
Левое соединение. Язык запросов. Хелп. | ☑ | ||
---|---|---|---|---|
0
Затейник
12.10.11
✎
11:02
|
Итак, помогите решить проблему. Вторые сутки сражаюсь....
Конфигурация самописка. 8.2.13.219 Есть два регистра остатков. У обоих присутствуют измерения Контрагент и Договор. Выбираем из виртуальной таблице "ОстаткиИОбороты" два этих измерения, и ресурсы, начальный остаток, приход, расход, конечный остаток. Делаем простое Левое соединение. В результате запроса, появляются строчки со значениями NULL в измерениях и наличием сумм в некоторых колонках. Как такое вообще могло произойти ? В обоих регистрах все измерения заполнены корректно. Пустых значений в измерениях нету. И тестирование и исправление над базой провел. и Бубном тряс над монитором, и в стороне от него... Соединения над другими регистрами проходит корректно, только с этими двумя творится черти что. Скриншот из консоли запросов: http://s017.radikal.ru/i402/1110/88/879efd49491b.jpg Ну и сам текст запроса: ВЫБРАТЬ ВзаиморасчетыПоНарядамОстаткиИОбороты.Контрагент КАК Контрагент, ВзаиморасчетыПоНарядамОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента, НарядыОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток, НарядыОстаткиИОбороты.СуммаПриход КАК СуммаПриход, НарядыОстаткиИОбороты.СуммаРасход КАК СуммаРасход, НарядыОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток, ВзаиморасчетыПоНарядамОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток1, ВзаиморасчетыПоНарядамОстаткиИОбороты.СуммаПриход КАК СуммаПриход1, ВзаиморасчетыПоНарядамОстаткиИОбороты.СуммаРасход КАК СуммаРасход1, ВзаиморасчетыПоНарядамОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток1, ВзаиморасчетыПоНарядамОстаткиИОбороты.Регистратор КАК Регистратор, НарядыОстаткиИОбороты.Регистратор КАК Регистратор1 ИЗ РегистрНакопления.Наряды.ОстаткиИОбороты(&ДатаС, &ДАтаПо, Регистратор, , ) КАК НарядыОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыПоНарядам.ОстаткиИОбороты(&ДатаС, &ДАтаПо, Регистратор, , ) КАК ВзаиморасчетыПоНарядамОстаткиИОбороты ПО НарядыОстаткиИОбороты.Контрагент = ВзаиморасчетыПоНарядамОстаткиИОбороты.Контрагент И НарядыОстаткиИОбороты.ДоговорКонтрагента = ВзаиморасчетыПоНарядамОстаткиИОбороты.ДоговорКонтрагента УПОРЯДОЧИТЬ ПО Контрагент, ДоговорКонтрагента АВТОУПОРЯДОЧИВАНИЕ |
|||
1
dimaldinho
12.10.11
✎
11:06
|
У вас контрагент и договор выводятся из правой таблицы.
|
|||
2
Ненавижу 1С
гуру
12.10.11
✎
11:06
|
на то оно и ЛЕВОЕ
есть строки у первого регистра и нет аналогичных у второго попробуй их получать из первого регистра |
|||
3
chelentano
12.10.11
✎
11:06
|
(0) значит не все договоры и контрагенты из НарядыОстаткиИОбороты есть в ВзаиморасчетыПоНарядамОстаткиИОбороты
|
|||
4
Shurjk
12.10.11
✎
11:07
|
(0) NULL получается когда по условиям соединения нет соответствующих записей в присоединяемой таблице.
|
|||
5
Ненавижу 1С
гуру
12.10.11
✎
11:07
|
(4) и не только ))
|
|||
6
Затейник
12.10.11
✎
11:09
|
(1) (2) в точку. Пасиб. Мозг видно затуманился. )
|
|||
7
Shurjk
12.10.11
✎
11:11
|
(5) В данном случае это исчерпывающий ответ, в других случаях получение NULL происходит аналогично. Например попытка получить дату несуществующего документа.
|
|||
8
Ненавижу 1С
гуру
12.10.11
✎
11:12
|
(7) не только, не только - там еще всякие субконто и реквизиты не для групп, например
|
|||
9
Shurjk
12.10.11
✎
11:12
|
(8) Я же говорю аналогично происходит. Принцип тот же пытаемся получить то чего нет, получаем NULL
|
|||
10
Ненавижу 1С
гуру
12.10.11
✎
11:14
|
(9) то чего нет часто получаем Неопределено или пустую ссылку ))
|
|||
11
Shurjk
12.10.11
✎
11:16
|
(10) Пустая ссылка это когда реквизит есть и не заполнен, непределено когда рекизит есть но он и имеет составной тип, все четко и понятно.
|
|||
12
Shurjk
12.10.11
✎
11:16
|
+(11) нет это значит нет.
|
|||
13
Ненавижу 1С
гуру
12.10.11
✎
11:35
|
(11) только пустая ссылка может быть и у составного типа ))
|
|||
14
Леха Дум
12.10.11
✎
11:52
|
брошу свои пять копеек:
сюда: ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыПоНарядам.ОстаткиИОбороты(&ДатаС, &ДАтаПо, Регистратор, , ) КАК ВзаиморасчетыПоНарядамОстаткиИОбороты ПО НарядыОстаткиИОбороты.Контрагент = ВзаиморасчетыПоНарядамОстаткиИОбороты.Контрагент И НарядыОстаткиИОбороты.ДоговорКонтрагента = ВзаиморасчетыПоНарядамОстаткиИОбороты.ДоговорКонтрагента нужно дописать: И НарядыОстаткиИОбороты.Регистратор = ВзаиморасчетыПоНарядамОстаткиИОбороты.Регистратор |
|||
15
Леха Дум
12.10.11
✎
11:53
|
+(14) при условии, что двиги делает один и тот же документ
|
|||
16
Леха Дум
12.10.11
✎
12:02
|
Если хочется видеть все документы, тогда через ОБЪЕДИНИТЬ ВСЕ
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |