Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 ноя 2024, 04:07

Внутренне соединение вместо левого в зависимости от параметра

Автор vitasw, 18 мар 2015, 17:10

0 Пользователей и 1 гость просматривают эту тему.

cska-fanat-kz

Цитата: vitasw от 19 мар 2015, 14:36Особый цинус вопроса в том, чтобы так составить запроса/настройки СКД, чтобы имея неизменный текст запроса в зависимости от параметра менялось "Левое" на "Внутренее"

сделать 2 запроса через объединение: один с левым соединением, второй - с внутренним и в каждый дополнительно в ГДЕ добавить флаг булевый. один флаг подымать, другой - опускать.

а скд можно вид набора данных объединение применить.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

vitasw

Что-то типа этого?

"ВЫБРАТЬ
|   Номенклатура.Ссылка КАК Номенклатура
|ПОМЕСТИТЬ ВтСпр
|ИЗ
|   Справочник.Номенклатура КАК Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|   ВтСпр.Номенклатура,
|   ТоварыНаСкладахОстатки.КоличествоОстаток
|ИЗ
|   ВтСпр КАК ВтСпр
|      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|      ПО ВтСпр.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
|ГДЕ
|   ВЫБОР
|         КОГДА &Левое
|            ТОГДА ИСТИНА
|         ИНАЧЕ ВтСпр.Номенклатура = НЕОПРЕДЕЛЕНО
|      КОНЕЦ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|   ВтСпр.Номенклатура,
|   ТоварыНаСкладахОстатки.КоличествоОстаток
|ИЗ
|   ВтСпр КАК ВтСпр
|      ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|      ПО ВтСпр.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
|ГДЕ
|   ВЫБОР
|         КОГДА &Левое
|            ТОГДА ВтСпр.Номенклатура = НЕОПРЕДЕЛЕНО
|         ИНАЧЕ ИСТИНА
|      КОНЕЦ"

cska-fanat-kz

а так?
"ВЫБРАТЬ
|   Номенклатура.Ссылка КАК Номенклатура
|ПОМЕСТИТЬ ВтСпр
|ИЗ
|   Справочник.Номенклатура КАК Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|   ВтСпр.Номенклатура,
|   ТоварыНаСкладахОстатки.КоличествоОстаток
|ИЗ
|   ВтСпр КАК ВтСпр
|      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|      ПО ВтСпр.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
|ГДЕ
|   &НадоЛевое
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|   ВтСпр.Номенклатура,
|   ТоварыНаСкладахОстатки.КоличествоОстаток
|ИЗ
|   ВтСпр КАК ВтСпр
|      ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|      ПО ВтСпр.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
|ГДЕ
|    НЕ &НадоЛевое"
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

vitasw

Сэр! Да вы волшебник! Спасибо. Очень похоже на то что я хотел.
Цитата: cska-fanat-kz от 20 мар 2015, 15:03|ГДЕ
|   &НадоЛевое
-вообще оригинально. Получил в одном ответе 2 волшебных способа. Спасибо.


blackmoon89

Не знаю как это будет работать, но попробовала бы условие поставить в само соединение:

ВЫБРАТЬ
ЗаказыКлиентов.ЗаказКлиента.Контрагент
ИЗ
РегистрНакопления.ЗаказыКлиентов КАК ЗаказыКлиентов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК КонтрагентыВнутреннее
ПО ЗаказыКлиентов.ЗаказКлиента.Контрагент = КонтрагентыВнутреннее.Ссылка
И (&НадоЛевое)
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК КонтрагентыЛевое
ПО ЗаказыКлиентов.ЗаказКлиента.Контрагент = КонтрагентыЛевое.Ссылка
И (НЕ &НадоЛевое)


Ну а в селекте поработать c пустыми значениями через ВЫБОР на внутренне соединение для значений полей левого

p.s. это не рабочий код, а просто как мысль и то не факт, что она рабочая

vitasw

:) Мадемуазель знает толк в извращениях :ooifh: В том смысле, что ваша идея мне нравиться еще больше(пусть даже она окажется нерабочей - зато как изящно). Спасибо.

dim369

Всем привет!
Специально зарегился - сказать спасибо!
Проверил также blackmoon89 - решение изящное, но к сожалению через Конструктор запроса не проходит, пробовать холодный код не стал. Чудеса случаются, но не в этой сфере.
А объединение - чудно работает. Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск