Имя: Пароль:
1C
1C 7.7
v7: 1c++ v3 прямые запросы 1cv77-27
0 ssvertov
 
17.11.16
21:39
Припопытке использовать конструкцию "ДЕНЬ,ДвиженияИГраницыПериода" получаю ошибку
Meta name parser error: это метаимя разрешить невозможно "$РегистрОстаткиОбороты.ВзаиморасчетыПокупателей"State 42000, native 137, message [Microsoft][ODBC SQL Server Driver][SQL Server]Необходимо объявить скалярную переменную "@_CP_2".
запрос:
            ТекстЗапроса = "
            |SELECT
            |     Рег.Контрагент [Контрагент $Справочник.Контрагенты]
            |    , Рег.Период
            |    , Sum(Рег.ДолгНачальныйОстаток) AS НачТов
            |    , Sum(Рег.ДолгПриход) AS ПрихТов
            |    , Sum(Рег.ДолгРасход) AS РасхТов
            |    , Sum(Рег.ДолгКонечныйОстаток) AS КонТов
            |FROM $РегистрОстаткиОбороты.ВзаиморасчетыПокупателей(:ДатаНачала,:ДатаКонца~,ДЕНЬ,ДвиженияИГраницыПериода,,(Контрагент IN (SELECT val FROM #Klienti)),Контрагент,Долг) AS Рег
            |GROUP BY Рег.Контрагент,Рег.Период
            |ORDER BY Рег.Контрагент,Рег.Период
            |";    

            
            RS.SetQueryTimeout(0);
            RS.УложитьСписокОбъектов(спсКлиенты, "#Klienti","Контрагенты");
            RS.SetTextParam("ДатаНачала", Дата1);
            RS.SetTextParam("ДатаКонца" , Дата2);  
            
            табЗапрос = CreateObject("ТаблицаЗначений");
            табЗапрос = RS.ВыполнитьИнструкцию(ТекстЗапроса);
            RS.Закрыть();
чем ему не так?
1 ssvertov
 
17.11.16
22:17
да - вот в отладке увидел это слово: N'@_CP_2

GROUP BY Рег.Контрагент
ORDER BY Рег.Контрагент', N'@_CP_2 char(8),@_CP_3 char(23),@_CP_4 smalldatetime'
,'20161116','201611176K30I8  1Q1S  0',{d '2016-11-01'})}
2 Franchiser
 
гуру
17.11.16
22:29
убери ORDER BY Рег.Контрагент,Рег.Период
3 Franchiser
 
гуру
17.11.16
22:33
и если не ошибаюсь нужно писать вместо :ДатаКонца~  :ДатаКонца~~
4 PiterPrg
 
17.11.16
23:24
(2) Можно еще попробовать ORDER BY 1, 2
P.S.
А для чего вложенный запрос?

(Контрагент IN (SELECT val FROM #Klienti))

Если мне не изменяет память, предыдущий параметр там для джойнов можно по-моему что-то такое написать в предыдущем параметре

INNER JOIN #Klienti ON #Klienti.Val = Контрагент
5 ssvertov
 
18.11.16
00:50
рабочий вариант для sql2008 (РежимRPC=0)

SELECT
Рег.Фирма AS [Фирма $Справочник.Фирмы]
, Рег.Период AS Период

, Рег.Контрагент AS [Контрагент $Справочник.Контрагенты]
, Sum(Рег.ДолгНачальныйОстаток) AS НачТов
, Sum(Рег.ДолгПриход) AS ПрихТов
, Sum(Рег.ДолгРасход) AS РасхТов
, Sum(Рег.ДолгКонечныйОстаток) AS КонТов
FROM $РегистрОстаткиОбороты.ВзаиморасчетыПокупателей(:ДатаНачала,:ДатаКонца~,ДЕНЬ,ДвиженияИГраницыПериода,,,(Фирма,Контрагент),Долг) AS Рег

INNER JOIN #Klienti ON #Klienti.Val = Контрагент
INNER JOIN #Firma ON #Firma.Val = Фирма
GROUP BY Рег.Фирма,Рег.Период,Рег.Контрагент
ORDER BY 1,2,3

для sql 7.0 (РежимRPC=0) не пашет (а надо(( )
Meta name parser error: это метаимя разрешить невозможно "$РегистрОстаткиОбороты.ВзаиморасчетыПокупателей"State 42000, native 2750, message [Microsoft][ODBC SQL Server Driver][SQL Server]Column or parameter #4: Specified column precision 38 is greater than the maximum precision of 28.
6 PiterPrg
 
18.11.16
09:26
(5) http://www.1cpp.ru/forum/YaBB.pl?num=1228003951/15

P.S.
Я имел ввиду
INNER JOIN #Klienti ON #Klienti.Val = Контрагент
INNER JOIN #Firma ON #Firma.Val = Фирма

Как 5-й параметр $РегистрОстаткиОбороты.ВзаиморасчетыПокупателей(.....
7 с2д
 
18.11.16
09:36
(0) Ваш проект "Дохлый мышонок" всё ещё жив?
Однако!
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан