|
ЗАПРОС: Внутреннее соединение по незаполненным полям составного типа работает? | ☑ | ||
---|---|---|---|---|
0
vdeemer
20.07.17
✎
14:47
|
Доброго времени суток!
В запросе делаю внутреннее соединение двух таблиц по нескольким полям. Одно поле составного типа (два вида документов), в результат запроса не попадают строки, в которых эти поля не заполнены. [code] ВЫБРАТЬ ВремТЗ.Заказ, ВремТЗ.ЗаказПоставщику, ВремТЗ.Номенклатура, ВремТЗ.ХарактеристикаНоменклатуры ПОМЕСТИТЬ ВыборкаСписания ИЗ &ВремТЗ КАК ВремТЗ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОстаткиЗаказовПоставщикам.ЗаказПоставщику, ОстаткиЗаказовПоставщикам.Заказ, ОстаткиЗаказовПоставщикам.Номенклатура, ОстаткиЗаказовПоставщикам.ХарактеристикаНоменклатуры, ОстаткиЗаказовПоставщикам.Цена, ОстаткиЗаказовПоставщикам.КоличествоОстаток, ОстаткиЗаказовПоставщикам.СуммаВсегоОстаток ИЗ ВыборкаСписания КАК ВыборкаСписания ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикамПоЗаказам.Остатки(&ДатаСреза, ) КАК ОстаткиЗаказовПоставщикам ПО ВыборкаСписания.Заказ = ОстаткиЗаказовПоставщикам.Заказ И ВыборкаСписания.ЗаказПоставщику = ОстаткиЗаказовПоставщикам.ЗаказПоставщику И ВыборкаСписания.Номенклатура = ОстаткиЗаказовПоставщикам.Номенклатура И ВыборкаСписания.ХарактеристикаНоменклатуры = ОстаткиЗаказовПоставщикам.ХарактеристикаНоменклатуры УПОРЯДОЧИТЬ ПО ОстаткиЗаказовПоставщикам.ЗаказПоставщику.Дата [/code] РегистрНакопления.ЗаказыПоставщикамПоЗаказам.Заказ, ВремТЗ.Заказ = {ЗаказПокупателя, ЗаказНаПроизводство} В таблице, которой параметризуют ВремТЗ, есть запись. В остатках та же самая запись, поле Заказ не заполнено. Результат запроса пустой(( Можно, наверно, использовать ЕстьNULL(Заказ, 0) и по нулю все сойдется наверняка, но какое-то топорное решение. Что спасет отца русской демократии? Спасибо. |
|||
1
catena
20.07.17
✎
14:53
|
Эээ... вы себе что-то не то думаете про внутреннее соединение. Если у вас там разные значения, почему оно должно соединяться?
|
|||
2
Лефмихалыч
20.07.17
✎
14:53
|
когда поле составного типа не заполнено, его значение - Неопределено.
Пристёгивай к этому объединением такой же запрос, но с неопределеном. |
|||
3
vdeemer
20.07.17
✎
14:55
|
(1) Значения одинаковые, Неопределено.
(2) Каким образом? |
|||
4
aleks_default
20.07.17
✎
14:57
|
(2)А еще может быть пустая ссылка ЗаказНаПроизводство
|
|||
5
Лефмихалыч
20.07.17
✎
14:57
|
(4) это - заполненное значение
|
|||
6
Лефмихалыч
20.07.17
✎
14:59
|
а зачем, кстати, тут соединение? Достаточно запхать отбор в параметр виртуальной таблицы
(Заказ, Номенклатура, Характеристика)в(выбрать заказ, номенклатура, херактеристика) результат тот же, а работать будет в разы шибче |
|||
7
vdeemer
20.07.17
✎
15:02
|
(6) а разве в параметрах виртуальной таблицы регистра можно указывать "В"? там вроде через запятую перечисляются значения...
|
|||
9
vdeemer
20.07.17
✎
15:14
|
(7) снимается, можно)))
|
|||
10
vdeemer
20.07.17
✎
15:25
|
(6) допилил
[code] ВЫБРАТЬ ВремТЗ.Заказ, ВремТЗ.ЗаказПоставщику, ВремТЗ.Номенклатура, ВремТЗ.ХарактеристикаНоменклатуры ПОМЕСТИТЬ ВыборкаСписания ИЗ &ВремТЗ КАК ВремТЗ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОстаткиЗаказовПоставщикам.ЗаказПоставщику, ОстаткиЗаказовПоставщикам.Заказ, ОстаткиЗаказовПоставщикам.Номенклатура, ОстаткиЗаказовПоставщикам.ХарактеристикаНоменклатуры, ОстаткиЗаказовПоставщикам.Цена, ОстаткиЗаказовПоставщикам.КоличествоОстаток, ОстаткиЗаказовПоставщикам.СуммаВсегоОстаток ИЗ РегистрНакопления.ЗаказыПоставщикамПоЗаказам.Остатки( &ДатаСреза, (Заказ, ЗаказПоставщику, Номенклатура, ХарактеристикаНоменклатуры) В (ВЫБРАТЬ ВыборкаСписания.Заказ, ВыборкаСписания.ЗаказПоставщику, ВыборкаСписания.Номенклатура, ВыборкаСписания.ХарактеристикаНоменклатуры ИЗ ВыборкаСписания)) КАК ОстаткиЗаказовПоставщикам УПОРЯДОЧИТЬ ПО ОстаткиЗаказовПоставщикам.ЗаказПоставщику.Дата [/code] Те же яйца, только в профиль. |
|||
11
Naf2017
20.07.17
✎
15:29
|
(2) согласен, но не всегда
в УТ 10.3 есть регистр СкидкиНаценкиПоЦеновымГруппам, в нем измерение составного типа ПолучательСкидки, так вот когда скидка "ВСЕМ", то там заполнено пустой ссылкой типа ДоговорКонтрагента это типовое решение эти пустые значения в 1С большой костыль как известно |
|||
12
aleks_default
20.07.17
✎
15:31
|
(10)Возьми нормальную консоль запросов, в которой нормально отображаются незаполненные значения.
|
|||
13
vdeemer
20.07.17
✎
15:55
|
(12) Взял, толку ноль
|
|||
14
aleks_default
20.07.17
✎
16:22
|
(13)Тогда еще и мозги захвати
|
|||
15
vdeemer
20.07.17
✎
17:09
|
(14) "Злы только дураки и дети" (с) А.С.Пушкин
Вы, я так понимаю, уже не ребенок. Решение получилось топорным: 1. "подготовить" связываемые таблицы, приводя значения "неопределено" к простому значению, априори не могущему появиться в данных (я использовал пустую строку) оператором ВЫБОР [code] ВЫБОР КОГДА ВыборкаСписания.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка) ИЛИ ВыборкаСписания.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказНаПроизводство.ПустаяСсылка) ИЛИ ВыборкаСписания.Заказ = ЗНАЧЕНИЕ(Документ.ВнутреннийЗаказ.ПустаяСсылка) ИЛИ ВыборкаСписания.Заказ = НЕОПРЕДЕЛЕНО ТОГДА "" ИНАЧЕ ЕСТЬNULL(ВыборкаСписания.Заказ, "") КОНЕЦ КАК Заказ, [/code] В операторе надо перечислить все используемые типы. 2. выбрать нужные данные 3. последний запрос оператором ВЫБОР конвертирует "взад" использованное в п.1 простое значение в НЕОПРЕДЕЛЕНО Текст запроса вырастает втрое(( |
|||
16
lodger
20.07.17
✎
17:14
|
(15) откройте для себя оператор ССЫЛКА <ИмяТаблицы>
подробности в гугле или синтакс-помошнике. |
|||
17
Ёпрст
20.07.17
✎
17:14
|
(15) Откуда уверенность, что в регистре в измерении Заказ будет пустая строка ?
|
|||
18
Ёпрст
20.07.17
✎
17:14
|
зачем такой case бестолковый делать ?
|
|||
19
Ёпрст
20.07.17
✎
17:16
|
ВремТЗ твоя откуда взялась ? колонка Заказ в ней, как типизирована хоть ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |