|
Вопрос по отбору: | ☑ | ||
---|---|---|---|---|
0
Nemirov
03.02.20
✎
08:43
|
Есть запрос: Выводит Номенклатуру расходной накладной, которые показывают недостающие позиции в приходной. При Формировании Запроса отбор учитывает и не проведенные приходные накладные, то есть если приходная накладная не проведенная запрос выводит все позиции из расходной накладной. Ставлю отбор ПриходнааяНакладная.Проведен = ИСТИНА, исчезают позиции которые есть в РасходнойНакладной, а ПриходнойНакладной нет. Как сделать отбор или может запрос как-то переделать уже голову поломал...
Номен = Истина; Док = Ложь; Запрос=Новый Запрос(); Запрос.Текст="ВЫБРАТЬ | РасходнаяНакладнаяСостав.Номенклатура КАК Номенклатура, | ЕСТЬNULL(ПриходнаяНакладнаяСостав.Количество, 0) - РасходнаяНакладнаяСостав.Количество КАК Разница, | РасходнаяНакладнаяСостав.Ссылка КАК Документ |ИЗ | Документ.РасходнаяНакладная.Состав КАК РасходнаяНакладнаяСостав | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходнаяНакладная.Состав КАК ПриходнаяНакладнаяСостав | ПО РасходнаяНакладнаяСостав.Номенклатура = ПриходнаяНакладнаяСостав.Номенклатура | И РасходнаяНакладнаяСостав.Ссылка = ПриходнаяНакладнаяСостав.Ссылка.ДокОснование | И ПриходнаяНакладнаяСостав.Ссылка <> НЕОПРЕДЕЛЕНО |ГДЕ | РасходнаяНакладнаяСостав.Количество - ЕСТЬNULL(ПриходнаяНакладнаяСостав.Количество, 0) <> 0 | И РасходнаяНакладнаяСостав.Ссылка.Контрагент ССЫЛКА Справочник.СтруктурныеЕдиницы | И (&НеПроверятьДата | ИЛИ РасходнаяНакладнаяСостав.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон) | И (&НеПроверятьКонтрагент | ИЛИ РасходнаяНакладнаяСостав.Ссылка.Контрагент = &СтруктурнаяЕдиница) | И РасходнаяНакладнаяСостав.Ссылка.Проведен = ИСТИНА //| И ПриходнаяНакладнаяСостав.Ссылка.Проведен = ИСТИНА |"; Если НЕ ПараметрыСеанса.ТекущаяСтруктурнаяЕдиница = Справочники.СтруктурныеЕдиницы.НайтиПоКоду("1")Тогда ЭлементыФормы.Контрагент.Значение = ПараметрыСеанса.ТекущаяСтруктурнаяЕдиница; ЭлементыФормы.Контрагент.Доступность = ЛОЖЬ; КонецЕсли; //Запрос.УстановитьПараметр("МоментВремени",ТекущаяДатаСеанса()); Запрос.УстановитьПараметр("ДатаНач",НачалоДня(ДатаНач)); Запрос.УстановитьПараметр("ДатаКон",КонецДня(ДатаКон)); Запрос.УстановитьПараметр("СтруктурнаяЕдиница",Контрагент); Если Не ЗначениеЗаполнено(Контрагент) Тогда Запрос.УстановитьПараметр("НеПроверятьКонтрагент", Истина); Иначе Запрос.УстановитьПараметр("НеПроверятьКонтрагент", Ложь); КонецЕсли; Если Не ЗначениеЗаполнено(ДатаНач) Тогда Запрос.УстановитьПараметр("НеПроверятьДата", Истина); Иначе Запрос.УстановитьПараметр("НеПроверятьДата", Ложь); КонецЕсли; Если Не ЗначениеЗаполнено(ДатаКон) Тогда Запрос.УстановитьПараметр("НеПроверятьДата", Истина); Иначе Запрос.УстановитьПараметр("НеПроверятьДата", Ложь); КонецЕсли; Документы=Запрос.Выполнить().Выгрузить(); ЭлементыФормы.Документы.СоздатьКолонки(); |
|||
1
ДенисЧ
03.02.20
✎
08:45
|
Условие перенеси в группу ПО
|
|||
2
Nemirov
03.02.20
✎
09:40
|
(1) Пробовал - Нет
|
|||
3
goodprog
03.02.20
✎
09:46
|
(2) плохо пробовал. У тебя левое соединение, нужно все поля правой таблицы оборачивать в ЕстьNull
должна помочь такая конструкция ЕстьNull(ПриходнааяНакладная.Проведен, Истина) = ИСТИНА но правильный ответ в (1) |
|||
4
Nemirov
03.02.20
✎
09:48
|
(3) Да точно извиняюсь поставил в скобках не подумал поэтому условие не выполнялось нормально
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |