Имя: Пароль:
1C
1С v8
SQL запрос функция SUM
,
0 Novicadmin
 
10.11.14
10:55
Процедура ПолучитьСуммуНакопленийПоКарте()
    
        сумма = 0;
    ТекстЗапроса ="
    |SELECT POCUPS.SUM_CHECK
    |FROM POCUPS
    |WHERE POCUPS.ID_USER = (SELECT USERS_LIST.ID_USER FROM USERS_LIST WHERE USERS_LIST.CARDNO = '1000000000041')
    |";
    
    Попытка
        Выборка = Соединение.Execute(ТекстЗапроса);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    с = 0;

    Пока Выборка.EOF = 0 Цикл
        с=с+1;  
        Сумма = СокрЛП(Строка(Формат(Выборка.Fields("SUM_CHECK").value,"ЧГ="))); //уберем группировки
        Выборка.MoveNext();
        ОбработкаПрерыванияПользователя();
    КонецЦикла;
    
КонецПроцедуры


Запрос выводит информацию о суммах покупок по карте.
1. Как вместо 1000000000041 вставить параметр, как в 1С запросах (&ЗначениеПараметра)?
2. Как правильно воспользоваться функцией SUM(), если |SELECT SUM(POCUPS.SUM_CHECK) тогда ошибка вывода строки Fields

Спасибо! )
1 Novicadmin
 
10.11.14
10:57
БД на Firebird 2.1
Платформа 1С 8.2
2 Ёпрст
 
10.11.14
10:58
SELECT SUM(POCUPS.SUM_CHECK)  as SUM_CHECK
3 Ненавижу 1С
 
гуру
10.11.14
10:58
(0)

SELECT SUM(POCUPS.SUM_CHECK) AS SUM_CHECK
FROM POCUPS
WHERE POCUPS.ID_USER IN (SELECT USERS_LIST.ID_USER FROM USERS_LIST WHERE USERS_LIST.CARDNO = :CARDNO)
4 Ёпрст
 
10.11.14
10:59
(0)
1. либо как   юююю _LIST.CARDNO = "+ВасяПараметр+" ....

либо через установку параметра через Ado
5 chudishe
 
10.11.14
11:02

    ТекстЗапроса ="
    |SELECT POCUPS.SUM_CHECK
    |FROM POCUPS
    |WHERE POCUPS.ID_USER = (SELECT USERS_LIST.ID_USER FROM USERS_LIST WHERE USERS_LIST.CARDNO = '&ЗначениеПараметра')
    |";
СтрЗаменить("&ЗначениеПараметра", "1000000000041");
6 chudishe
 
10.11.14
11:03
(5) Тьфу ты.
СтрЗаменить(ТекстЗапроса, "&ЗначениеПараметра", "1000000000041");
Ну ты понел.
7 Novicadmin
 
10.11.14
11:15
Всем большое спасибо работает )))

ТекстЗапроса ="
    //|SELECT USERS_LIST.CARDNO, USERS_LIST.USR_INT01, POCUPS.SUM_CHECK
    |SELECT SUM(POCUPS.SUM_CHECK) AS SUM_CHECK
    |FROM POCUPS
    |WHERE POCUPS.ID_USER = (SELECT USERS_LIST.ID_USER FROM USERS_LIST WHERE USERS_LIST.CARDNO = 'ПараметрКарты')
    |";
    
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ПараметрКарты", ПараметрКарты);
8 Novicadmin
 
10.11.14
11:19
а как изменить этот запрос чтобы выборка была за период Дата1 и Дата2 значение POCUPS.DATA_CHECK
9 Novicadmin
 
10.11.14
11:20
т.е. поле содержащее дату называется POCUPS.DATA_CHECK
10 Ёпрст
 
10.11.14
11:31
where DATA_CHECK between :Дата1 and :Дата2
11 Novicadmin
 
10.11.14
11:42
|SELECT SUM(POCUPS.SUM_CHECK) AS SUM_CHECK
    |FROM POCUPS
    |WHERE POCUPS.ID_USER = (SELECT USERS_LIST.ID_USER FROM USERS_LIST WHERE USERS_LIST.CARDNO = 'ПараметрКарты')
    |AND DATE_TIME BETWEEN 'Дата1' AND 'Дата2'
    |";
    
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ПараметрКарты", ПараметрКарты);
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Дата1", Дата1);
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Дата2", Дата2);

Отлично работает!!! Спасибо )
12 Жан Пердежон
 
10.11.14
12:09
фи
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан