Запрос с условием и ВидСравнения.

1. request4t 07.12.16 18:08 Сейчас в теме
Привет.

Есть простой запрос по остаткам по складу. При пустом значении списка запрос не срабатывает. Что я делаю не так?

И второе. Нужно, чтобы ВыбСклад был связан с реквизитом типа ВидСравнения на форме. То есть: если ВидСравнения = "Равно", то выбираем непосредственно из справочника, а если ВидСравнения = "ВСписке", соотв подбирать с помощью списка. Научите, плз, как это сделать.

Спасибо.


	Запросост = Новый Запрос;
	Запросост.УстановитьПараметр("тзшк",  тзшк);
	Запросост.УстановитьПараметр("Склад", ВыбСклад);

Запросост .текст = "ВЫБРАТЬ
	|	ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
	|	СУММА(ТоварыОрганизацийОстатки.КоличествоОстаток) КАК КоличествоОстаток,
	|	ТоварыОрганизацийОстатки.Склад
	|ИЗ
	|	РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки
	|ГДЕ
	|	ТоварыОрганизацийОстатки.Номенклатура В ИЕРАРХИИ(&тзшк)
	|	И ТоварыОрганизацийОстатки.Склад В (&Склад)
	|
	|СГРУППИРОВАТЬ ПО
	|	ТоварыОрганизацийОстатки.Номенклатура,
	|	ТоварыОрганизацийОстатки.Склад";
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
8. as 07.12.16 21:47 Сейчас в теме
Запросост = Новый Запрос;
    Запросост.УстановитьПараметр("тзшк",  тзшк);
    Запросост.УстановитьПараметр("Склад", ВыбСклад);
    Запросост.УстановитьПараметр("НеФильтроватьСклады", ВыбСклад.Количество()=0);

Запросост .текст = "ВЫБРАТЬ
    |    ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
    |    СУММА(ТоварыОрганизацийОстатки.КоличествоОстаток) КАК КоличествоОстаток,
    |    ТоварыОрганизацийОстатки.Склад
    |ИЗ
    |    РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки
    |ГДЕ
    |    ТоварыОрганизацийОстатки.Номенклатура В ИЕРАРХИИ(&тзшк)
    |    И (&НеФильтроватьСклады или ТоварыОрганизацийОстатки.Склад В (&Склад))
    |
    |СГРУППИРОВАТЬ ПО
    |    ТоварыОрганизацийОстатки.Номенклатура,
    |    ТоварыОрганизацийОстатки.Склад";
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. starik-2005 3046 07.12.16 18:23 Сейчас в теме
(1) можно так:
Запрос.УстановиьПараметр("Склады", Склады);
Запрос.УстановиьПараметр("СкладВыбран", Склады.Количество()>0);

Запрос.Текст = "Выбрать * ИЗ РегистрНакопления.ТоварыОрганизаций.Остатки ГДЕ НЕ СкладВыбран ИЛИ Склад В (&Склады)";
...
request4t; +1 Ответить
6. bad_wag 49 07.12.16 21:35 Сейчас в теме
(1)
При пустом значении списка запрос не срабатывает,

а как иначе? сравнение с пустым списком ничего не даст.
По поводу вида сравнения, это смотря как он задается в форме, нужно проанализировать какой выбран вид сравнения и подменить его в тексте запроса через СтрЗаменить(), а вообще да, скд умеет все)
например вот так:
|ГДЕ
|    ТоварыОрганизацийОстатки.Номенклатура В ИЕРАРХИИ(&тзшк)
|    И ТоварыОрганизацийОстатки.Склад [ЗначениеУсловия]

Если ВидСравнения = "Равно" Тогда
      Запрос.Текст = СтрЗаменить(Запрос.Текст, [ЗначениеУсловия], "= &Склад");
ИначеЕсли ВидСравнения = "ВСписке" Тогда
      Запрос.Текст = СтрЗаменить(Запрос.Текст, [ЗначениеУсловия], "В (&Склад)");
КонецЕсли
Показать
request4t; +1 Ответить
7. Fox-trot 158 07.12.16 21:40 Сейчас в теме
(1) попробуй добавить код
Если НЕ ЗначениеЗаполнено() Тогда
Запросост.текст = СтрЗаменить(Запросост.текст, "И ТоварыОрганизацийОстатки.Склад В (&Склад)", "");
Конецесли;
Сравнение В (&Склад) изменять не обязательно из-за того, что у тебя там список значений или ссылка, потому как последние версии платформы такие вещи игнорируют
2. alex-l19041 8 07.12.16 18:15 Сейчас в теме
используйте СКД там проще с отборами
3. request4t 07.12.16 18:22 Сейчас в теме
(2)
СКД


Я пока не знаком с СКД. Времени изучать пока нет. Прошу помочь решить задачу именно этим способом, если это возможно.
5. spacecraft 07.12.16 19:58 Сейчас в теме
8. as 07.12.16 21:47 Сейчас в теме
Запросост = Новый Запрос;
    Запросост.УстановитьПараметр("тзшк",  тзшк);
    Запросост.УстановитьПараметр("Склад", ВыбСклад);
    Запросост.УстановитьПараметр("НеФильтроватьСклады", ВыбСклад.Количество()=0);

Запросост .текст = "ВЫБРАТЬ
    |    ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
    |    СУММА(ТоварыОрганизацийОстатки.КоличествоОстаток) КАК КоличествоОстаток,
    |    ТоварыОрганизацийОстатки.Склад
    |ИЗ
    |    РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки
    |ГДЕ
    |    ТоварыОрганизацийОстатки.Номенклатура В ИЕРАРХИИ(&тзшк)
    |    И (&НеФильтроватьСклады или ТоварыОрганизацийОстатки.Склад В (&Склад))
    |
    |СГРУППИРОВАТЬ ПО
    |    ТоварыОрганизацийОстатки.Номенклатура,
    |    ТоварыОрганизацийОстатки.Склад";
Показать
9. as 07.12.16 21:50 Сейчас в теме
Хотел болдом выделить изменения, не очень красиво выглядит
10. request4t 12.12.16 11:19 Сейчас в теме
Спасибо всем, вопрос решен)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот