|
Запрос, если заполнено поле отбирать, если пустое не отбирать | ☑ | ||
---|---|---|---|---|
0
lg2marvel
23.08.16
✎
15:22
|
Добрый день, есть запрос
"ВЫБРАТЬ | Номенкл.Код, | Номенкл.Артикул, | Номенкл.Наименование КАК ТМЦ, | Номенкл.Родитель, | Номенкл.ОсновнойПоставщик, | Номенкл.ЕдиницаИзмеренияЗаказов.Коэффициент КАК Кратность, | ПоставщикиНоменклатурыСрезПоследних.Поставщик, | ПараметрыНоменклатурыДляЗаказов.МинимальныйОстаток, | ПараметрыНоменклатурыДляЗаказов.НеПодлежитЗаказу, | ВложенныйЗапрос.КоличествоОборот КАК Продажа, | ВложенныйЗапрос.КоличествоПриход КАК Приход, | ВложенныйЗапрос.КоличествоНачальныйОстаток КАК ОстатокНач, | ВложенныйЗапрос.КоличествоКонечныйОстаток КАК ОстатокКон |ИЗ | Справочник.Номенклатура КАК Номенкл | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоставщикиНоменклатуры.СрезПоследних(&КонецПериода, Поставщик.Ссылка В (&Парам)) КАК ПоставщикиНоменклатурыСрезПоследних | ПО Номенкл.Ссылка = ПоставщикиНоменклатурыСрезПоследних.Номенклатура | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНоменклатурыДляЗаказов КАК ПараметрыНоменклатурыДляЗаказов | ПО Номенкл.Ссылка = ПараметрыНоменклатурыДляЗаказов.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПродажиОбороты.КоличествоОборот КАК КоличествоОборот, | ПартииНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, | ПартииНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток, | ПартииНоменклатурыОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход, | ПартииНоменклатурыОстаткиИОбороты.Номенклатура.Ссылка КАК ПартииНоменклатура, | ПродажиОбороты.Номенклатура.Ссылка КАК ПродажиНоменклатура | ИЗ | РегистрНакопления.Продажи.Обороты( | &НачалоПериода, | &КонецПериода, | , | Фирма.Ссылка В (&Фирма) | И Склад.Ссылка В (&Склад)) КАК ПродажиОбороты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииНоменклатуры.ОстаткиИОбороты( | &НачалоПериода, | &КонецПериода, | , | , | Фирма.Ссылка В (&Фирма) | И Склад.Ссылка В (&Склад)) КАК ПартииНоменклатурыОстаткиИОбороты | ПО ПродажиОбороты.Номенклатура.Ссылка = ПартииНоменклатурыОстаткиИОбороты.Номенклатура | | СГРУППИРОВАТЬ ПО | ПартииНоменклатурыОстаткиИОбороты.Номенклатура.Ссылка, | ПродажиОбороты.КоличествоОборот, | ПартииНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток, | ПартииНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток, | ПартииНоменклатурыОстаткиИОбороты.КоличествоПриход, | ПродажиОбороты.Номенклатура.Ссылка) КАК ВложенныйЗапрос | ПО Номенкл.Ссылка = ВложенныйЗапрос.ПартииНоменклатура |ГДЕ | Номенкл.Ссылка В ИЕРАРХИИ(&Товар) | |СГРУППИРОВАТЬ ПО | Номенкл.Код, | Номенкл.Артикул, | Номенкл.Наименование, | Номенкл.Родитель, | Номенкл.ОсновнойПоставщик, | Номенкл.ЕдиницаИзмеренияЗаказов.Коэффициент, | ПоставщикиНоменклатурыСрезПоследних.Поставщик, | ПараметрыНоменклатурыДляЗаказов.МинимальныйОстаток, | ПараметрыНоменклатурыДляЗаказов.НеПодлежитЗаказу, | ВложенныйЗапрос.КоличествоОборот, | ВложенныйЗапрос.КоличествоПриход, | ВложенныйЗапрос.КоличествоНачальныйОстаток, | ВложенныйЗапрос.КоличествоКонечныйОстаток | |УПОРЯДОЧИТЬ ПО | ТМЦ" Хочу чтоб когда на форме выбран поставщик - был отбор попоставщику, когда нет - небыло. Чтоб организовать такое можно ли сделать в запросе (как правильно поставить условие?) или только делать условие и в зависимости от заполненности формы использовать тот или иной запрос? |
|||
1
Amra
23.08.16
✎
15:26
|
Если КонтрНеВыбран тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Поставщик.Ссылка В (&Парам)", ""); конецесли; |
|||
2
Лефмихалыч
23.08.16
✎
15:27
|
СКД и не делай мозгов. Ну, или хотя бы построитель
|
|||
3
lg2marvel
23.08.16
✎
15:28
|
(1) Отличная мыль, спасибо
(2) Спасибо |
|||
4
Timon1405
23.08.16
✎
15:35
|
Поставщик.Ссылка.Ссылка понадежнее будет
|
|||
5
ViSo76
23.08.16
✎
15:42
|
( &Парам = Справочник.Поставщик.ПустаяСсылка Или &Парам В (&Парам) )
Или ( &Парам = Неопределено Или &Парам В (&Парам) ) И подавай Неопределено в параметре А правильно это делать в отборе: .СрезПоследних(&КонецПериода, {Поставщик}) |
|||
6
ViSo76
23.08.16
✎
15:54
|
(4) Не пишите глупостей больше
|
|||
7
lg2marvel
23.08.16
✎
16:02
|
(5) Что-ТО не могу понять куда впихнуть?
( &Парам = Справочник.Поставщик.ПустаяСсылка Или &Парам В (&Парам) ) Или ( &Парам = Неопределено Или &Парам В (&Парам) ) |
|||
8
Горогуля
23.08.16
✎
16:04
|
(7) впихни это в СКД. а потом выпихни и забудь
|
|||
9
FIXXXL
23.08.16
✎
16:08
|
(7) ВЫБОР КОГДА &ЗаполненоНаФорме ТОГДА траляляУсловие ИНАЧЕ ИСТИНА
ЗаполненоНаФорме = значениеЗаполнено(РеквизитФормы) |
|||
10
lg2marvel
23.08.16
✎
16:11
|
(7) Немного переделал запрос, но суть не изменилась
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоставщикиНоменклатуры.СрезПоследних( | &КонецПериода, | Поставщик.Ссылка = НЕОПРЕДЕЛЕНО | ИЛИ Поставщик.Ссылка В (&Поставщик)) КАК ПоставщикиНоменклатурыСрезПоследних (9) Спасибо сейчас попробую |
|||
11
hhhh
23.08.16
✎
16:13
|
(10) петросян что ли?
Поставщик = НЕОПРЕДЕЛЕНО | ИЛИ Поставщик В (&Поставщик) |
|||
12
ViSo76
23.08.16
✎
16:15
|
(10) Не так
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоставщикиНоменклатуры.СрезПоследних( &КонецПериода, ( &Поставщик = Неопределено Или Поставщик В (&Поставщик) ) КАК ПоставщикиНоменклатурыСрезПоследних |
|||
13
lg2marvel
23.08.16
✎
16:36
|
Делаю так: Если выбрано поле - есть результат, даже правильный. Если не выбран - нет ничего
|ИЗ | Справочник.Номенклатура КАК Номенкл | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНоменклатурыДляЗаказов КАК ПараметрыНоменклатурыДляЗаказов | ПО Номенкл.Ссылка = ПараметрыНоменклатурыДляЗаказов.Номенклатура | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоставщикиНоменклатуры.СрезПоследних( | &КонецПериода, | &Поставщик = НЕОПРЕДЕЛЕНО | ИЛИ Поставщик В (&Поставщик)) КАК ПоставщикиНоменклатурыСрезПоследних | ПО Номенкл.Ссылка = ПоставщикиНоменклатурыСрезПоследних.Номенклатура Попробовал иначе: | ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПоставщикиНоменклатурыСрезПоследних.Поставщик КАК Поставщик, | ПоставщикиНоменклатурыСрезПоследних.Номенклатура.Ссылка КАК НоменклатураСсылка | ИЗ | РегистрСведений.ПоставщикиНоменклатуры.СрезПоследних( | &КонецПериода, | &Поставщик = НЕОПРЕДЕЛЕНО | ИЛИ Поставщик В (&Поставщик)) КАК ПоставщикиНоменклатурыСрезПоследних) КАК ВложенныйЗапрос1 | ПО Номенкл.Ссылка = ВложенныйЗапрос1.НоменклатураСсылка В таком варианте оно отображает весь перечень который должен показываться если поле не заполнено не зависимо от того заполнено оно или нет. |
|||
14
lodger
23.08.16
✎
16:38
|
вот наркоманы )
кто будет читать в будущем ответ в (1). |
|||
15
lg2marvel
23.08.16
✎
16:40
|
(14) (1) Получается аналогично (13) тот что сверху
|
|||
16
Горогуля
23.08.16
✎
16:41
|
(15) это у кого так получается?
|
|||
17
ViSo76
23.08.16
✎
16:41
|
(13) Скобок не хватает. Выражение должно давать либо истина либо ложь, в вычислениях есть оптимизация с ИЛИ, если 1-я операция успешна, то другая операция не проверяется.
| ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПоставщикиНоменклатурыСрезПоследних.Поставщик КАК Поставщик, | ПоставщикиНоменклатурыСрезПоследних.Номенклатура.Ссылка КАК НоменклатураСсылка | ИЗ | РегистрСведений.ПоставщикиНоменклатуры.СрезПоследних( | &КонецПериода, | ( &Поставщик = НЕОПРЕДЕЛЕНО | ИЛИ Поставщик В (&Поставщик) ) КАК ПоставщикиНоменклатурыСрезПоследних) КАК ВложенныйЗапрос1 | ПО Номенкл.Ссылка = ВложенныйЗапрос1.НоменклатураСсылка |
|||
18
lg2marvel
23.08.16
✎
16:42
|
Запрос = Новый Запрос(
"ВЫБРАТЬ | Номенкл.Код, | Номенкл.Артикул, | Номенкл.Наименование КАК ТМЦ, | Номенкл.Родитель, | Номенкл.ОсновнойПоставщик, | Номенкл.ЕдиницаИзмеренияЗаказов.Коэффициент КАК Кратность, | ПараметрыНоменклатурыДляЗаказов.МинимальныйОстаток, | ПараметрыНоменклатурыДляЗаказов.НеПодлежитЗаказу, | ВложенныйЗапрос.КоличествоОборот КАК Продажа, | ВложенныйЗапрос.КоличествоПриход КАК Приход, | ВложенныйЗапрос.КоличествоНачальныйОстаток КАК ОстатокНач, | ВложенныйЗапрос.КоличествоКонечныйОстаток КАК ОстатокКон, | ПоставщикиНоменклатурыСрезПоследних.Поставщик КАК Поставщик |ИЗ | Справочник.Номенклатура КАК Номенкл | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНоменклатурыДляЗаказов КАК ПараметрыНоменклатурыДляЗаказов | ПО Номенкл.Ссылка = ПараметрыНоменклатурыДляЗаказов.Номенклатура | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоставщикиНоменклатуры.СрезПоследних( | &КонецПериода, | &Поставщик = НЕОПРЕДЕЛЕНО | ИЛИ Поставщик В (&Поставщик)) КАК ПоставщикиНоменклатурыСрезПоследних | ПО Номенкл.Ссылка = ПоставщикиНоменклатурыСрезПоследних.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПродажиОбороты.КоличествоОборот КАК КоличествоОборот, | ПартииНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, | ПартииНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток, | ПартииНоменклатурыОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход, | ПартииНоменклатурыОстаткиИОбороты.Номенклатура.Ссылка КАК ПартииНоменклатура, | ПродажиОбороты.Номенклатура.Ссылка КАК ПродажиНоменклатура | ИЗ | РегистрНакопления.Продажи.Обороты( | &НачалоПериода, | &КонецПериода, | , | Фирма.Ссылка В (&Фирма) | И Склад.Ссылка В (&Склад)) КАК ПродажиОбороты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииНоменклатуры.ОстаткиИОбороты( | &НачалоПериода, | &КонецПериода, | , | , | Фирма.Ссылка В (&Фирма) | И Склад.Ссылка В (&Склад)) КАК ПартииНоменклатурыОстаткиИОбороты | ПО ПродажиОбороты.Номенклатура.Ссылка = ПартииНоменклатурыОстаткиИОбороты.Номенклатура | | СГРУППИРОВАТЬ ПО | ПартииНоменклатурыОстаткиИОбороты.Номенклатура.Ссылка, | ПродажиОбороты.КоличествоОборот, | ПартииНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток, | ПартииНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток, | ПартииНоменклатурыОстаткиИОбороты.КоличествоПриход, | ПродажиОбороты.Номенклатура.Ссылка) КАК ВложенныйЗапрос | ПО Номенкл.Ссылка = ВложенныйЗапрос.ПартииНоменклатура |ГДЕ | Номенкл.Ссылка В ИЕРАРХИИ(&Товар) | |СГРУППИРОВАТЬ ПО | Номенкл.Код, | Номенкл.Артикул, | Номенкл.Наименование, | Номенкл.Родитель, | Номенкл.ОсновнойПоставщик, | Номенкл.ЕдиницаИзмеренияЗаказов.Коэффициент, | ПараметрыНоменклатурыДляЗаказов.МинимальныйОстаток, | ПараметрыНоменклатурыДляЗаказов.НеПодлежитЗаказу, | ВложенныйЗапрос.КоличествоОборот, | ВложенныйЗапрос.КоличествоПриход, | ВложенныйЗапрос.КоличествоНачальныйОстаток, | ВложенныйЗапрос.КоличествоКонечныйОстаток, | ПоставщикиНоменклатурыСрезПоследних.Поставщик | |УПОРЯДОЧИТЬ ПО | ТМЦ" ); Если ЗначениеЗаполнено(Поставщик) = 0 Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, ",Поставщик.Ссылка В (&Парам)", ""); КонецЕсли; (16) |
|||
19
ViSo76
23.08.16
✎
16:42
|
(17) Точнее
| &КонецПериода, | ( &Поставщик = НЕОПРЕДЕЛЕНО | ИЛИ Поставщик В (&Поставщик) ) ) КАК ПоставщикиНоменклатурыСрезПоследних) КАК ВложенныйЗапрос1 |
|||
20
lg2marvel
23.08.16
✎
16:53
|
Хм, начинаю зависать. Подскажите пожалуйста, у меня ТМЦ, отбираю из регистра сведений поставщика. Если поставщик на форме выбран - показываю ТМЦ по поставщику, если не выбран - показываю все ТМЦ в группе (тут другой отбор, он работает)
Так вот, как правильней будет запихнуть во вложеный запрос или просто использовать ЛЕВОЕ СОЕДИНЕНИЕ? | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоставщикиНоменклатуры.СрезПоследних( | &КонецПериода, | (&Поставщик = НЕОПРЕДЕЛЕНО | ИЛИ Поставщик В (&Поставщик))) КАК ПоставщикиНоменклатурыСрезПоследних | ПО Номенкл.Ссылка = ПоставщикиНоменклатурыСрезПоследних.Номенклатура Просто показывает все ТМЦ независимо от того что выбрано на форме. |
|||
21
lg2marvel
23.08.16
✎
16:53
|
пробую вложеным запросом
|
|||
22
ViSo76
23.08.16
✎
16:53
|
(19) Если у вас передаётся либо пустое значение справочника или Поставщик, то нужно писать так:
( &Поставщик = ЗНАЧЕНИЕ( Справочник."Поставщики".ПустаяСсылка ) ИЛИ Поставщик = &Поставщик ) |
|||
23
ViSo76
23.08.16
✎
16:56
|
(20) Нужно основной таблицей взять РегистрСведений.ПоставщикиНоменклатуры и присоединять ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура
|
|||
24
lg2marvel
23.08.16
✎
17:03
|
(23) Так отображает только в случае если на форме выбрано значение, если значение не выбрано - результат пустой
| РегистрСведений.ПоставщикиНоменклатуры.СрезПоследних( | &КонецПериода, | &Поставщик = НЕОПРЕДЕЛЕНО | ИЛИ Поставщик В (&Поставщик)) КАК ПоставщикиНоменклатурыСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенкл | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНоменклатурыДляЗаказов КАК ПараметрыНоменклатурыДляЗаказов | ПО Номенкл.Ссылка = ПараметрыНоменклатурыДляЗаказов.Номенклатура |
|||
25
lg2marvel
23.08.16
✎
17:05
|
Со скобками аналогично
|ИЗ | РегистрСведений.ПоставщикиНоменклатуры.СрезПоследних( | &КонецПериода, | (&Поставщик = НЕОПРЕДЕЛЕНО | ИЛИ Поставщик В (&Поставщик))) КАК ПоставщикиНоменклатурыСрезПоследних |
|||
26
ViSo76
24.08.16
✎
07:03
|
(25) какой тип значения ты падаешь в качестве пустого значения? Прочти сообщение (22)
|
|||
27
mkalimulin
24.08.16
✎
07:58
|
(6) Конечно же надо писать: Поставщик.Ссылка.Ссылка.Ссылка.
|
|||
28
ViSo76
24.08.16
✎
08:02
|
(27) Зачем так шутить, ведь будут писать после этого поста. У них башня не там приварена.
|
|||
29
Горогуля
24.08.16
✎
08:04
|
(28) всё нормально, он в скобках заблудится
|
|||
30
lg2marvel
24.08.16
✎
11:11
|
Если ЗначениеЗаполнено(Поставщик) = 0 Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоставщикиНоменклатуры.СрезПоследних(&КонецПериода, Поставщик.Ссылка В (&Поставщик)) КАК ПоставщикиНоменклатурыСрезПоследних", "ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоставщикиНоменклатуры.СрезПоследних(&КонецПериода, Поставщик.Ссылка В (&Поставщик)) КАК ПоставщикиНоменклатурыСрезПоследних"); КонецЕсли; так работает, и замечательно. |
|||
31
Горогуля
24.08.16
✎
11:33
|
идиёт
|
|||
32
lg2marvel
24.08.16
✎
12:00
|
(31) может быть :-(
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |