К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Запрос !!! Вопрос!!! Помогите советом

Гость
0 - 07.02.2013 - 22:53
Вот запрос
ПервыйПредел = 3000 ;
ВторойПредел = 5000 ;
ТретийПредел = 10000 ;
СтавкаБонуса1 = 0.03 ;
СтавкаБонуса2 = 0.05;
СтавкаБонуса3 = 0.07;
ДатаДок = Дата ;
НачалоПериода = ДобавитьМесяц((НачалоМесяца(ДатаДок)),-1);
КонецПериода = КонецМесяца(НачалоПериода) ;
Макет = Документы.ЧекККМ.ПолучитьМакет("Макет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Бонусы.Период,
| Бонусы.НомерКарты,
| Бонусы.СуммаПокупки КАК СуммаПокупки
|
|ИЗ
| РегистрНакопления.Бонусы КАК Бонусы
|ГДЕ
| Бонусы.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И Бонусы.НомерКарты = &НомерКарты
|
|СГРУППИРОВАТЬ ПО
| Бонусы.Период,
| Бонусы.НомерКарты,
| Бонусы.СуммаПокупки
|ИТОГИ
| СУММА(СуммаПокупки)
|ПО
| ОБЩИЕ";
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Запрос.УстановитьПараметр("НачалоПериода",НачалоПе риода );
Запрос.УстановитьПараметр("НомерКарты", НомерКарты);
Результат = Запрос.Выполнить();

ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппир овкам);

ВыборкаОбщийИтог.Следующий();

ВыборкаДетальныеЗаписи = ВыборкаОбщийИтог.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбщСуммаПокупок = ВыборкаОбщийИтог.СуммаПокупки ;
КонецЦикла;

Если ОбщСуммаПокупок <= ПервыйПредел
и ОбщСуммаПокупок >= 0 Тогда
КоэффБонуса = СтавкаБонуса1 ;
КонецЕсли ;
Если ОбщСуммаПокупок <= ВторойПредел
и ОбщСуммаПокупок >= ПервыйПредел Тогда
КоэффБонуса = СтавкаБонуса2 ;
КонецЕсли ;
Если ОбщСуммаПокупок <= ТретийПредел
и ОбщСуммаПокупок >= ВторойПредел Тогда
КоэффБонуса = СтавкаБонуса3 ;
КонецЕсли ;
Если ОбщСуммаПокупок > ТретийПредел Тогда
КоэффБонуса = СтавкаБонуса3 ;
КонецЕсли ;

СуммаБонуса = ЭлементыФормы.Всего.Значение * КоэффБонуса ;
ЭлементыФормы.СуммаБонуса.Значение = СуммаБонуса ;

Ситуация следующая Сумма считается за предыдущий месяц
но когда новый номер карты т.е. оборотов и регистраторов нету вообще!! То естественно не проходит первое сравнение общей суммы с первым пределом !! Как обыграть эту ситуацию что-бы получилось КоэффБонуса = СтавкаБонуса1



Гость
1 - 07.02.2013 - 23:18
1. Огрести звездюлей на форуме.
2. Вернуть конфигурацию на полную поддержку без возможности изменений.
2. Купить книжку или записаться на курсы.
3. Не подходить к боевым базам пока не закончишь курсы или хотя бы книжку.
Гость
2 - 07.02.2013 - 23:23
(1) А по существу??
Гость
3 - 08.02.2013 - 00:53
А по существу, Reaper шибко не прав: при подобном низком уровне кодирования курсы не помогут.
У самого-то от своих "Если" не поплохело?
Гость
4 - 08.02.2013 - 01:02
+3 И нафига в выборке формировать поля, которые не используются? Да еще группировть их :D
Не чуствуешь ты этого механизма...
Гость
5 - 08.02.2013 - 01:26
... И вообще весь запрос можно изобразить одной строкой.
6 - 08.02.2013 - 04:57
запрос хорош!
сам-то с какова горада?
Гость
7 - 08.02.2013 - 05:26
мамочки мои )
8 - 08.02.2013 - 13:14
перед циклом обнуляй сумму, а после цикла первое сравнение на ноль ставь - твой коэф. Лишние группировки убрать, условие ГДЕ тоже, надо вритуальную таблицу оборотов с параметрами из где использовать.
9 - 08.02.2013 - 13:16
Запрос.Текст =
"ВЫБРАТЬ
| Бонусы.Период,
| СУММА(Бонусы.СуммаПокупки) КАК СуммаПокупки
|
|ИЗ
| РегистрНакопления.БонусыОбороты(&НачалоПериода,&Ко нецПериода, НомерКарты = &НомерКарты) КАК Бонусы
|
|
|СГРУППИРОВАТЬ ПО
| Бонусы.Период
|ИТОГИ
| СУММА(СуммаПокупки)
|ПО
| ОБЩИЕ";
10 - 08.02.2013 - 13:23
ОбщСуммаПокупок = 0;
ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппир овкам);

Если ВыборкаОбщийИтог.Следующий() тогда
ВыборкаДетальныеЗаписи = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.По Группировкам);

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбщСуммаПокупок = ВыборкаОбщийИтог.СуммаПокупки;
КонецЦикла;
конецЕсли;

Если ОбщСуммаПокупок <= ПервыйПредел Тогда
КоэффБонуса = СтавкаБонуса1 ;
ИначеЕсли ОбщСуммаПокупок <= ВторойПредел Тогда
КоэффБонуса = СтавкаБонуса2 ;
ИначеЕсли ОбщСуммаПокупок <= ТретийПредел Тогда
КоэффБонуса = СтавкаБонуса3 ;
// какой тут смысл ???
ИначеЕсли ОбщСуммаПокупок > ТретийПредел Тогда
КоэффБонуса = СтавкаБонуса3 ;
КонецЕсли ;
11 - 08.02.2013 - 13:24
нет бы взять и помочь начинающему, не все же сразу стали профи
Гость
12 - 08.02.2013 - 14:51
11-Jimbo > И тебе про реквизиты регистров в запросах помнить :))
13 - 08.02.2013 - 15:06
не ясна ни конфа, ни структура регистра. (12) предложи свой вариант
Гость
14 - 08.02.2013 - 16:11
Конструкция "ВЫБОР КОГДА ТОГДА КОНЕЦ" не канает?


К списку вопросов






Copyright ©, Все права защищены