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

Запрос

Автор cool, 18 ноя 2015, 11:37

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

cool

Помогите с запросом.
Нужно выбрать товар по документу и выбрать места хранения по складу документа а если нет места хранения то поле место хранения оставить пустым
ни как не могу убрать дубли.


ВЫБРАТЬ
ЗаказПокупателяТовары.НомерСтроки КАК НомерСтроки,
ЗаказПокупателяТовары.Номенклатура КАК Номенклатура,
МестаХраненияНоменклатуры.МестоХранения
ИЗ
Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
ПО ЗаказПокупателяТовары.Номенклатура = МестаХраненияНоменклатуры.Номенклатура
ГДЕ
ЗаказПокупателяТовары.Ссылка = &ТекущийДокумент
И МестаХраненияНоменклатуры.Склад = &Склад

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ЗаказПокупателяТовары.НомерСтроки,
ЗаказПокупателяТовары.Номенклатура,
NULL
ИЗ
Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ГДЕ
ЗаказПокупателяТовары.Ссылка = &ТекущийДокумент


Выводит записи
















   
1Книга  Ганичкина Ваш огород (мини)2Е-5-4-3 
1Книга  Ганичкина Ваш огород (мини)  
2Книга  Флоксы карманный формат Константинова    Фи  
3Книга  Хессайон. Все о цветах в вашем саду (карм.  
4Книга 1000 советов огороднику  
5Книга дизайн садового учатска  
6Ин Актара Инсектицид сис-ый в почве, конт-киш-го против сосущ и грыз вред  пак 4 г.  1/15  
6Ин Актара Инсектицид сис-ый в почве, конт-киш-го против сосущ и грыз вред  пак 4 г.  1/151Б-2-1-3 
7Ин Алиот аналог фуфанона 10 мл 1/160 Август1А-14-1-1 
7Ин Алиот аналог фуфанона 10 мл 1/160 Август  
8Ин Алиот аналог фуфанона 5 мл 1/500 Август  
8Ин Алиот аналог фуфанона 5 мл 1/500 Август1А-14-2-1 

vitasw

Вместо полного сделайте левое соединение.

cool

Цитата: vitasw от 18 ноя 2015, 14:16
Вместо полного сделайте левое соединение.

Тоже самое получилось

https://yadi.sk/i/xRj-veaqkYREU
https://yadi.sk/i/2Bxjk2mmkYRGM

pavl_vs

cool, происхождение дублей понятно: первая часть запроса дает товары по конкретному складу, а вторая - все товары по текущему документу, присваивая складу пустое значение.

Я бы убрал вторую часть запроса - всё, начиная с ОБЪЕДИНИТЬ ВСЕ.
А в первой части в секции ГДЕ для мест хранения ввел бы конструкцию выбора: И (Выбор Когда Тогда Иначе Конец).

cool

Цитата: pavl_vs от 18 ноя 2015, 18:03
cool, происхождение дублей понятно: первая часть запроса дает товары по конкретному складу, а вторая - все товары по текущему документу, присваивая складу пустое значение.

Я бы убрал вторую часть запроса - всё, начиная с ОБЪЕДИНИТЬ ВСЕ.
А в первой части в секции ГДЕ для мест хранения ввел бы конструкцию выбора: И (Выбор Когда Тогда Иначе Конец).

Не совсем понимаю как это сделать так что бы если склад не совпадает то в место хранении было пустое значение
Добавлено: 19 ноя 2015, 11:27


Вот так получилось

ВЫБРАТЬ
НомерСтроки КАК НомерСтроки,
МАКСИМУМ(Номенклатура) КАК Номенклатура,
МАКСИМУМ(МестоХранения) КАК МестоХранения,
МАКСИМУМ(ВЫРАЗИТЬ(МестоХранения КАК СТРОКА(1))) КАК Этаж
ИЗ
(ВЫБРАТЬ
ЗаказПокупателяТовары.НомерСтроки КАК НомерСтроки,
ЗаказПокупателяТовары.Номенклатура КАК Номенклатура,
МестаХраненияНоменклатуры.МестоХранения.Наименование КАК МестоХранения


ИЗ
Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
ПО ЗаказПокупателяТовары.Номенклатура = МестаХраненияНоменклатуры.Номенклатура
ГДЕ
ЗаказПокупателяТовары.Ссылка = &ТекущийДокумент
И МестаХраненияНоменклатуры.Склад = &Склад

ОБЪЕДИНИТЬ

ВЫБРАТЬ                                                                             
ЗаказПокупателяТовары.НомерСтроки,
ЗаказПокупателяТовары.Номенклатура,
NULL
ИЗ
Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ГДЕ
ЗаказПокупателяТовары.Ссылка = &ТекущийДокумент) КАК ВложеныйЗапрос

СГРУППИРОВАТЬ ПО
НомерСтроки

Kironten

Цитата: cool от 19 ноя 2015, 05:43
Цитата: pavl_vs от 18 ноя 2015, 18:03
cool, происхождение дублей понятно: первая часть запроса дает товары по конкретному складу, а вторая - все товары по текущему документу, присваивая складу пустое значение.

Я бы убрал вторую часть запроса - всё, начиная с ОБЪЕДИНИТЬ ВСЕ.
А в первой части в секции ГДЕ для мест хранения ввел бы конструкцию выбора: И (Выбор Когда Тогда Иначе Конец).

Не совсем понимаю как это сделать так что бы если склад не совпадает то в место хранении было пустое значение
Если склад не совпадает с чем?

Теги:

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

Рейтинг@Mail.ru

Поиск