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