Имеется некий отчет, который должен выводить результат числовых значений по двум значениям в диапазоне (=>; <=) Причем, можно выбрать выборку по одному значению, по двум или вообще игнорировать отбор
|{ГДЕ| ВложенныйЗапрос.Остаток >= &ОстатокОт И ВложенныйЗапрос.Стоимость >= &СтоимостьОт| И ВложенныйЗапрос.Остаток <= &ОстатокДо И ВложенныйЗапрос.Стоимость <= &СтоимостьДо}
Если ДиапазонОстатка Тогда
Запрос.УстановитьПараметр("ОстатокОт", СуммаОстаткаОт);
Запрос.УстановитьПараметр("ОстатокДо", СуммаОстаткаДо);
КонецЕсли;
Если ДиапазонСумм Тогда
Запрос.УстановитьПараметр("СтоимостьОт", СуммаПродажОт);
Запрос.УстановитьПараметр("СтоимостьДо", СуммаПродажДо);
КонецЕсли;
Код не срабатывает, как можно сформировать такой гибкий отчет с выбором диапазона сумм от/до по Остаткам и/или СуммамПродаж?
Благодарю... Но возникла другая ситуация. Дело в том, что у меня поле "Остаток" является расчетной, т.е. разницей между "Стоимость" и "Подарок"
Вот текст запроса:
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Контрагент КАК Контрагент,
| СУММА(ВложенныйЗапрос.Стоимость) КАК Стоимость,
| СУММА(ВложенныйЗапрос.Подарок) КАК Подарок,
| СУММА(ВложенныйЗапрос.Остаток) КАК Остаток
|ИЗ
| (ВЫБРАТЬ
| Продажи.Контрагент КАК Контрагент,
| СУММА(Продажи.Стоимость) КАК Стоимость,
| 0 КАК Подарок,
| СУММА(Продажи.Стоимость) КАК Остаток
| ИЗ
| РегистрНакопления.Продажи КАК Продажи
| ГДЕ
| Продажи.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
| И Продажи.Номенклатура В(&НоменклатураПродаж)
|
| СГРУППИРОВАТЬ ПО
| Продажи.Контрагент
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Продажи.Контрагент,
| 0,
| СУММА(Продажи.СтоимостьБезСкидок),
| СУММА(-Продажи.СтоимостьБезСкидок)
| ИЗ
| РегистрНакопления.Продажи КАК Продажи
| ГДЕ
| Продажи.Номенклатура В(&НоменклатураПодарков)
| И Продажи.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
|
| СГРУППИРОВАТЬ ПО
| Продажи.Контрагент) КАК ВложенныйЗапрос
|
|"+ УсловиеЗапроса+"
|
|
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Контрагент
|
|УПОРЯДОЧИТЬ ПО
| Контрагент
|АВТОУПОРЯДОЧИВАНИЕ";
Если я выбираю по "Остатку" чистые поля, т.е. без подарков, то отбор по "ДиапазонОстатка" осуществляется. Если же пытаюсь отфильтровать поля с "Подарками", то этот результат не увидит.
Например, см приведенные строки, делаю фильтр от "700" до "2500", то первую строку "1. Стоимость=1000, Подарок=200, Остаток=800" не увидит... Т.е. поля Остатков, которые подверглись воздействию "Подарков" не расчитывает...
Вот полный текст запроса. Работает, но "Остатки" не берет
Запрос = Новый Запрос;
УсловиеЗапроса = "";
Если ДиапазонОстатка ИЛИ ДиапазонСумм ТогдаЕсли ДиапазонОстатка Тогда
УсловиеЗапроса = "ГДЕ Остаток МЕЖДУ &ОстатокОт И &ОстатокДо";
Запрос.УстановитьПараметр("ОстатокОт", СуммаОстаткаОт);
Запрос.УстановитьПараметр("ОстатокДо", СуммаОстаткаДо);
КонецЕсли;
Если ДиапазонСумм Тогда
УсловиеЗапроса = УсловиеЗапроса + ?(ДиапазонОстатка, " И ", "ГДЕ ") +" Стоимость МЕЖДУ &СтоимостьОт И &СтоимостьДо";
Запрос.УстановитьПараметр("СтоимостьОт", СуммаПродажОт);
Запрос.УстановитьПараметр("СтоимостьДо", СуммаПродажДо);
КонецЕсли;
КонецЕсли;
//*****************
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Контрагент КАК Контрагент,
| СУММА(ВложенныйЗапрос.Стоимость) КАК Стоимость,
| СУММА(ВложенныйЗапрос.Подарок) КАК Подарок,
| СУММА(ВложенныйЗапрос.Остаток) КАК Остаток
|ИЗ
| (ВЫБРАТЬ
| Продажи.Контрагент КАК Контрагент,
| СУММА(Продажи.Стоимость) КАК Стоимость,
| 0 КАК Подарок,
| СУММА(Продажи.Стоимость) КАК Остаток
| ИЗ
| РегистрНакопления.Продажи КАК Продажи
| ГДЕ
| Продажи.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
| И Продажи.Номенклатура В(&НоменклатураПродаж)
|
| СГРУППИРОВАТЬ ПО
| Продажи.Контрагент
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Продажи.Контрагент,
| 0,
| СУММА(Продажи.СтоимостьБезСкидок),
| СУММА(-Продажи.СтоимостьБезСкидок)
| ИЗ
| РегистрНакопления.Продажи КАК Продажи
| ГДЕ
| Продажи.Номенклатура В(&НоменклатураПодарков)
| И Продажи.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
|
| СГРУППИРОВАТЬ ПО
| Продажи.Контрагент) КАК ВложенныйЗапрос
|
|"+ УсловиеЗапроса+"
|
|
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Контрагент
|
|УПОРЯДОЧИТЬ ПО
| Контрагент
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Дата1", ДатаНачала);
Запрос.УстановитьПараметр("Дата2", ДатаОкончания);
Запрос.УстановитьПараметр("НоменклатураПродаж", Товары);
Запрос.УстановитьПараметр("НоменклатураПодарков", Бонусы);
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!