Имя: Пароль:
1C
1С v8
Значение не определено !! Прошу помощи !!
,
0 PochtiUser
 
02.02.13
23:27
Доброе время суток! Вопрос След характера. В процедуре засчитывается сумма бонуса начисленная за предыдущий месяц от суммы покупки . но вопрос в следующем если нет оборота в предыдущем месяце то тогда  ошибка "Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов Если ОбщСуммаПокупок <= ПервыйПредел". С NULL пробовал но ничего не получилось !!! как правильно это сделать???

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

   
           
   Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
   Запрос.УстановитьПараметр("НачалоПериода",НачалоПериода );
   Запрос.УстановитьПараметр("НомерКарты", НомерКарты);
   Результат = Запрос.Выполнить();

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

   ВыборкаОбщийИтог.Следующий();    
   
   ВыборкаДетальныеЗаписи = ВыборкаОбщийИтог.Выбрать();
   
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       ОбщСуммаПокупок = ВыборкаОбщийИтог.СуммаПокупки ;    
   КонецЦикла;
   
   Если ОбщСуммаПокупок <= ПервыйПредел
       и ОбщСуммаПокупок >= 0 Тогда
       КоэффБонуса = СтавкаБонуса1 ;
   КонецЕсли ;
   Если ОбщСуммаПокупок <= ВторойПредел
       и ОбщСуммаПокупок >= ПервыйПредел Тогда
       КоэффБонуса = СтавкаБонуса2 ;
   КонецЕсли ;
   Если ОбщСуммаПокупок <= ТретийПредел
       и ОбщСуммаПокупок >= ВторойПредел Тогда
       КоэффБонуса =  СтавкаБонуса3 ;
   КонецЕсли ;
   Если ОбщСуммаПокупок > ТретийПредел Тогда
       КоэффБонуса =  СтавкаБонуса3 ;
   КонецЕсли ;
   
   
    СуммаБонуса =  ЭлементыФормы.Всего.Значение *  КоэффБонуса ;
   
    ЭлементыФормы.СуммаБонуса.Значение =  СуммаБонуса ;  //запись значения в форму документа
1 Ork
 
02.02.13
23:31
(0) Буду краток. Задолбали.

Прочтите наконец о функции языка запросов ЕстьNULL().
2 GROOVY
 
02.02.13
23:40
Лефмихалыч обрати внимание на ipшник ТС. Не дай бог к вам работать пойдет.
3 PochtiUser
 
03.02.13
00:02
"ВЫБРАТЬ
       |    Бонусы.Период,
       |    Бонусы.НомерКарты,
       |    СУММА(Бонусы.СуммаПокупки) КАК СуммаПокупки,
       |ЕСТЬNULL (Бонусы.СуммаПокупки,0)
       |
       |ИЗ
       |    РегистрНакопления.Бонусы КАК Бонусы
       |ГДЕ
       |    Бонусы.Период МЕЖДУ &НачалоПериода И &КонецПериода
       |    И Бонусы.НомерКарты = &НомерКарты
       |
       |СГРУППИРОВАТЬ ПО
       |    Бонусы.Период,
       |    Бонусы.НомерКарты,
       |   Бонусы.СуммаПокупки
       |ИТОГИ
       |    СУММА(СуммаПокупки)
       |ПО
       |    ОБЩИЕ";


так не работает тоже!
4 GROOVY
 
03.02.13
00:07
посмотри муьтики: http://1c.chistov.pro/search/label/Запросы

Особенно обрати внимание на работу с итогами и иерархический обход выборки запроса.
5 PochtiUser
 
03.02.13
00:08
спасибо сейчас гляну!!
6 Mikhail Volkov
 
03.02.13
06:30
(4) Есть возможность скачать их? А то инет медленный...
7 Лефмихалыч
 
модератор
03.02.13
06:54
(2) ой, да ладно, он же честно признался, что почти юзер. Да и учится же человек, глядишь и выйдет толк через какое-то время
8 PochtiUser
 
05.02.13
16:03
ЕСЛИ тАК

Выбрать
   ЕСТЬNULL(Бонусы.Период,111)КАК Период,  
   ЕСТЬNULL(Бонусы.НомерКарты,222)КАК НомерКарты,
   ЕСТЬNULL(СУММА(Бонусы.СуммаПокупки),333) КАК СуммаПокупки
ИЗ
   РегистрНакопления.Бонусы КАК Бонусы
Где
НомерКарты = 99
И Период МЕЖДУ ДАТАВРЕМЯ (2013,1,1) И ДАТАВРЕМЯ (2013,2,1)
СГРУППИРОВАТЬ ПО
Период ,
НомерКарты
ИТОГИ
   СУММА(СуммаПокупки)
ПО
   НомерКарты

Все Считает но если номер карты изменить допустим на 70 по которой не было оборотов то соответственно и регистратора нету и записей в регистре соответственно
 ОбщСуммаПокупок = ВыборкаОбщийИтог.СуммаПокупки Вообще не существует !! Подскажите пожалуйста как выкрутится  что бы
КоэффБонуса = СтавкаБонуса1 при расчете карты без регистраторов за определенный период.!!
Всем спасибо !
9 PochtiUser
 
06.02.13
09:31
up
10 НафНаф
 
06.02.13
09:34
(2) можно подумать там боги сидят
Закон Брукера: Даже маленькая практика стоит большой теории.