Имя: Пароль:
1C
1С v8
Регистр НАкопления не выполнение запроса
,
0 PochtiUser
 
16.04.13
14:55
Доброе время суток всем!! Обрисую в вкратце. Есть регистр накопления в котором после проведения дока записываются значения Док регистратор, Сумма покупки,Сумма бонуса.... есть запрос который считает по этому регистру  определенные данные

   Запрос = Новый Запрос;
   НачПериода = НачалоГода(ДатаДок);  
   КонПериода = КонецГода(ДатаДок); ;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    Бонусы.Период КАК Период,
       |    Бонусы.Регистратор,
       |    ПРЕДСТАВЛЕНИЕ(Бонусы.Регистратор),
       |    Бонусы.НомерКарты,
       |    Бонусы.СуммаПокупки КАК СуммаПокупки,
       |    Бонусы.СуммаБонуса КАК СуммаБонуса,
       |    Бонусы.СуммаСписания КАК СуммаСписания
       |ИЗ
       |    РегистрНакопления.Бонусы КАК Бонусы
       |ГДЕ
       |    Бонусы.Период МЕЖДУ &НачПериода И &КонПериода
       |    И Бонусы.НомерКарты = &НомерКарты
       |
       |УПОРЯДОЧИТЬ ПО
       |    Период
       |ИТОГИ
       |    СУММА(СуммаПокупки),
       |    СУММА(СуммаБонуса),
       |    СУММА(СуммаСписания)
       |ПО
       |    ОБЩИЕ";
   Запрос.УстановитьПараметр("НачПериода", НачПериода);
   Запрос.УстановитьПараметр("КонПериода", КонПериода);
   Запрос.УстановитьПараметр("НомерКарты", ЭлементыФормы.Номеркарты.Значение);
   Результат = Запрос.Выполнить();

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

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

Смысл такой - запрос считает суммы  по конкретным номерам Дисконтных Карт . Если есть регистраторы с таким номерам карты то считает норм. а если запрос не  выполняется естественно вываливается ошибка . Все методы применяемые к регистру накопления пробовал но толку нету. Подскажите что можно придумать ?? Надо просмотреть регистр накопления есть ли там номер карты  если да то запрос. если нет  то сообщить(). Всем спасибо!
1 Defender aka LINN
 
16.04.13
14:59
(0) Естественно вываливается, да. Ты ж и не думаешь даже проверять - а вернул ли чего запрос, или нет
2 GROOVY
 
16.04.13
15:00
Судя по структуре регистра - это авторская нетленка. Автор нифига не понимает в том что такое регистры и зачем они нужны.
3 Miss1C
 
16.04.13
15:03
(0) Попытка Исключение КонецПопытки;
4 PochtiUser
 
16.04.13
15:17
Miss1C Спасибо все получилось!! Тема закрыта !! Всем спасибо за внимание.
5 Defender aka LINN
 
16.04.13
15:20
(4) ППЦ
6 vicof
 
16.04.13
15:32
спасибо, поржал
7 GROOVY
 
16.04.13
15:50
(5) Не ну а чё...
8 НЕА123
 
16.04.13
15:56
Если ВыборкаОбщийИтог.Следующий() Тогда
   Остаток = ВыборкаОбщийИтог.СуммаБонуса-ВыборкаОбщийИтог.СуммаСписания ;
Иначе
   Остаток = 0;
КонецЕсли;

можно (в целях экономии)
Остаток = ?(ВыборкаОбщийИтог.Следующий(), ВыборкаОбщийИтог.СуммаБонуса-ВыборкаОбщийИтог.СуммаСписания, 0)
9 sikuda
 
16.04.13
16:00
(3) Ну это совсем не то...
1. Используй в запросе виртуальные таблицы...
2. Проверяй результаты операций типа ВыборкаОбщийИтог.Следующий();
3. Ну и посмотри видео от  GROOVY(Павел Чистов)
AdBlock убивает бесплатный контент. 1Сергей