Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)
Сделал обработку с выводом результата по запросу.
..................................
| ИЗ
| Документ.СписаниеТоваров КАК СписаниеТоваров
| ГДЕ
| СписаниеТоваров.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
| И СписаниеТоваров.Проведен = ИСТИНА
| И СписаниеТоваров.НаДоход = ИСТИНА
| И СписаниеТоваров.ПометкаУдаления = ЛОЖЬ) КАК ВложенныйЗапрос
|ГДЕ
| ВложенныйЗапрос.Организация = &Организация
| И ВложенныйЗапрос.Подразделение = &Подразделение
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Статус,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.Организация,
| ВложенныйЗапрос.Подразделение
|
|УПОРЯДОЧИТЬ ПО
| Статус,
| Номенклатура
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Подразделение", Подразделение);
Запрос.УстановитьПараметр("Дата1", ДатаНачала);
Запрос.УстановитьПараметр("Дата2", ДатаОкончания);
| ИЗ
| Документ.СписаниеТоваров КАК СписаниеТоваров
| ГДЕ
| СписаниеТоваров.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
| И СписаниеТоваров.Проведен = ИСТИНА
| И СписаниеТоваров.НаДоход = ИСТИНА
| И СписаниеТоваров.ПометкаУдаления = ЛОЖЬ) КАК ВложенныйЗапрос
|ГДЕ
| ВложенныйЗапрос.Организация = &Организация
| "+?(ЗначениеЗаполнено(Подразделение), "И ВложенныйЗапрос.Подразделение = &Подразделение", "")+"
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Статус,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.Организация,
| ВложенныйЗапрос.Подразделение
|
|УПОРЯДОЧИТЬ ПО
| Статус,
| Номенклатура
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Подразделение", Подразделение);
Запрос.УстановитьПараметр("Дата1", ДатаНачала);
Запрос.УстановитьПараметр("Дата2", ДатаОкончания);
| ИЗ
| Документ.СписаниеТоваров КАК СписаниеТоваров
| ГДЕ
| СписаниеТоваров.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
| И СписаниеТоваров.Проведен = ИСТИНА
| И СписаниеТоваров.НаДоход = ИСТИНА
| И СписаниеТоваров.ПометкаУдаления = ЛОЖЬ) КАК ВложенныйЗапрос
|ГДЕ
| ВложенныйЗапрос.Организация = &Организация
| И ВЫБОР КОГДА ВложенныйЗапрос.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка) ТОГДА ИСТИНА ИНАЧЕ ВложенныйЗапрос.Подразделение = &Подразделение КОНЕЦ
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Статус,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.Организация,
| ВложенныйЗапрос.Подразделение
|
|УПОРЯДОЧИТЬ ПО
| Статус,
| Номенклатура
|АВТОУПОРЯДОЧИВАНИЕ";
Flexy @ Сегодня, 16:45
,
Не совсем корректно работает...
Усложним задачу. В идеале, все Подразделения должны быть заполнены, но тем не менее есть что-то пропущено, т.е. значения Подразделений пустые.
Я разместил реквизит булево "Пропущено" на форме. Теперь, в случае, если значение параметра на форме "Подразделения" пустое, то должно выводить все значения, а вот если стоит галка "Пропущено" вывести все пустые значения Подразделений:
Т.е., если НЕ ЗначениеЗаполнено(Подразделение), но Пропущено=Истина, тогда Подразделение = ПустаяСсылка()
Попробовал добавить:
?(Ошибочные, "И ВложенныйЗапрос.Подразделение = Справочники.Подразделения.ПустаяСсылка()", "")
"+?(ЗначениеЗаполнено(Подразделение), "И ВложенныйЗапрос.Подразделение = &Подразделение", ?(Ошибочные, "И ВложенныйЗапрос.Подразделение = Справочники.Подразделения.ПустаяСсылка()", ""))+"
Constantus @ Сегодня, 15:43
,
"+?(ЗначениеЗаполнено(Подразделение), "И ВложенныйЗапрос.Подразделение = &Подразделение", ?(Ошибочные, "И ВложенныйЗапрос.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)", ""))+"
а я бы написал
|ГДЕ
| ВложенныйЗапрос.Организация = &Организация
| И 1 = 1
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"1 = 1", "<необходимое простое условие>");
Самое прикольное, что в типовых мы встречаем все три варианта.
andr_andrey @ Сегодня, 11:24
,
Ну есть ещё один вариант - заранее сформировать строку с отбором с учетом всех условий и потом только вставить в разрыв текста запроса, конструктором я особо не пользуюсь, а читается мне так проще, типа такого:
ТекстФильтра = "ГДЕ ВложенныйЗапрос.Организация = &Организация ";
Если ЗначениеЗаполнено(Подразделение) Тогда
ТекстФильтра = ТекстФильтра + " И ВложенныйЗапрос.Подразделение = &Подразделение";
ИначеЕсли Ошибочные Тогда
ТекстФильтра = ТекстФильтра + " И ВложенныйЗапрос.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)";
КонецЕсли;
| ИЗ
| Документ.СписаниеТоваров КАК СписаниеТоваров
| ГДЕ
| СписаниеТоваров.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
| И СписаниеТоваров.Проведен = ИСТИНА
| И СписаниеТоваров.НаДоход = ИСТИНА
| И СписаниеТоваров.ПометкаУдаления = ЛОЖЬ) КАК ВложенныйЗапрос
| "+ТекстФильтра+"
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Статус,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.Организация,
| ВложенныйЗапрос.Подразделение
|
|УПОРЯДОЧИТЬ ПО
| Статус,
| Номенклатура
|АВТОУПОРЯДОЧИВАНИЕ";
Bernet @ Сегодня, 11:33
,
Редактирование конструктором дорогого стоит, а эти плюсики посреди десятиэкранного запроса заставляют думать о разработчике недоброе
andr_andrey @ Сегодня, 12:34
,
и тем не менее половина типовых механизмов именно так реализована
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua