Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Странный запрос получается (число прочтений - 11823 )
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Странный запрос получается
22. Сентября 2006 :: 11:23
Печать  
Что есть:
Машина №1: W2K Prof + SP2, SQL server 2000 + SP4, 1C 25 релиз, 1cpp 2.0.3.1
Машина №1: Win 2003 Server EE + SP1, SQL server 2000 + SP4, 1C 25 релиз, 1cpp 2.0.3.1
Запрос:
SELECT ВзаиморасчетыПокупателейОстатки.Фирма [Фирма $Справочник.Фирмы],
ВзаиморасчетыПокупателейОстатки.Клиент [Клиент $Справочник],
ВзаиморасчетыПокупателейОстатки.Договор [Договор $Справочник.Договора],
ВзаиморасчетыПокупателейОстатки.Отдел [Отдел $Справочник.Отделы],
ВзаиморасчетыПокупателейОстатки.ГоловноеПредприятие [ГоловноеПредприятие $Справочник.Контрагенты],
Sum(ВзаиморасчетыПокупателейОстатки.ДолгОстаток) ДолгОстаток
FROM $РегистрОстатки.ВзаиморасчетыПокупателей(,,,,) AS ВзаиморасчетыПокупателейОстатки
GROUP BY ВзаиморасчетыПокупателейОстатки.Фирма,
ВзаиморасчетыПокупателейОстатки.Клиент,
ВзаиморасчетыПокупателейОстатки.Договор,
ВзаиморасчетыПокупателейОстатки.Отдел,
ВзаиморасчетыПокупателейОстатки.ГоловноеПредприятие
ORDER BY  ВзаиморасчетыПокупателейОстатки.Фирма,
ВзаиморасчетыПокупателейОстатки.Клиент,
ВзаиморасчетыПокупателейОстатки.Договор,
ВзаиморасчетыПокупателейОстатки.Отдел,
ВзаиморасчетыПокупателейОстатки.ГоловноеПредприятие

На первой машине это разворачивается в
....
SELECT ВзаиморасчетыПокупателейОстатки.Фирма [Фирма $Справочник.Фирмы],
ВзаиморасчетыПокупателейОстатки.Клиент [Клиент $Справочник],
ВзаиморасчетыПокупателейОстатки.Договор [Договор $Справочник.Договора],
ВзаиморасчетыПокупателейОстатки.Отдел [Отдел $Справочник.Отделы],
ВзаиморасчетыПокупателейОстатки.ГоловноеПредприятие [ГоловноеПредприятие $Справочник.Контрагенты],
Sum(ВзаиморасчетыПокупателейОстатки.ДолгОстаток) ДолгОстаток
FROM (
select
rg169_vt.sp2671 as Фирма,
rg169_vt.sp170 as Клиент,
rg169_vt.sp3810 as Договор,
rg169_vt.sp8266 as Отдел,
rg169_vt.sp8265 as ГоловноеПредприятие,
rg169_vt.sp171 as ДолгОстаток
from rg169 as rg169_vt (nolock)
where rg169_vt.period={d '2006-09-01'}
and (
rg169_vt.sp171 <> 0
)
) as ВзаиморасчетыПокупателейОстатки
GROUP BY ВзаиморасчетыПокупателейОстатки.Фирма,
ВзаиморасчетыПокупателейОстатки.Клиент,
ВзаиморасчетыПокупателейОстатки.Договор,
ВзаиморасчетыПокупателейОстатки.Отдел,
ВзаиморасчетыПокупателейОстатки.ГоловноеПредприятие
ORDER BY  ВзаиморасчетыПокупателейОстатки.Фирма,
ВзаиморасчетыПокупателейОстатки.Клиент,
ВзаиморасчетыПокупателейОстатки.Договор,
ВзаиморасчетыПокупателейОстатки.Отдел,
ВзаиморасчетыПокупателейОстатки.ГоловноеПредприятие

На второй машине это разворачивается в:
SELECT ВзаиморасчетыПокупателейОстатки.Фирма [Фирма $Справочник.Фирмы],
ВзаиморасчетыПокупателейОстатки.Клиент [Клиент $Справочник],
ВзаиморасчетыПокупателейОстатки.Договор [Договор $Справочник.Договора],
ВзаиморасчетыПокупателейОстатки.Отдел [Отдел $Справочник.Отделы],
ВзаиморасчетыПокупателейОстатки.ГоловноеПредприятие [ГоловноеПредприятие $Справочник.Контрагенты],
Sum(ВзаиморасчетыПокупателейОстатки.ДолгОстаток) ДолгОстаток
FROM (
select
rg169_vt.sp2671 as Фирма,
rg169_vt.sp170 as Клиент,
rg169_vt.sp3810 as Договор,
rg169_vt.sp8266 as Отдел,
rg169_vt.sp8265 as ГоловноеПредприятие,
rg169_vt.sp171 as ДолгОстаток
from rg169 as rg169_vt (nolock)
where rg169_vt.period={d '2006-09-01'}
and (
rg169_vt.sp171 <> 0
)
) as ВзаиморасчетыПокупателейОстатки
GROUP BY ВзаиморасчетыПокупателейОстатки.Фирма,
ВзаиморасчетыПокупателейОстатки.Клиент,
ВзаиморасчетыПокупателейОстатки.Договор,
ВзаиморасчетыПокупателейОстатки.Отдел,
ВзаиморасчетыПокупателейОстатки.ГоловноеПредприятие
ORDER BY  ВзаиморасчетыПокупателейОстатки.Фирма,
ВзаиморасчетыПокупателейОстатки.Клиент,
ВзаиморасчетыПо
GROUP BY ВзаиморасчетыПокупателейОстатки.Фирма,
ВзаиморасчетыПокупателейОстатки.Клиент,
ВзаиморасчетыПокупателейОст

и вываливается с ошибкой:
ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса);
{D:\ПЕРЕВОД НА 43\СРАВНЕНИЕОСТАТКОВ_SQL.ERT(406)}: State 42000, native 156, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'GROUP'.

Что делать?
  
Наверх
 
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Странный запрос получается
Ответ #1 - 22. Сентября 2006 :: 12:14
Печать  
Я только начал изучение прямого доступа, а документации нет + инет только что появился, а запрос писался ночью.
1. Если я правильно понял, то запрос к остаткам регистра на ТА по всем измерениям можно сделать так:
SELECT ВзаиморасчетыПокупателейОстатки.Фирма [Фирма $Справочник.Фирмы],
ВзаиморасчетыПокупателейОстатки.Клиент [Клиент $Справочник],
ВзаиморасчетыПокупателейОстатки.Договор [Договор $Справочник.Договора],
ВзаиморасчетыПокупателейОстатки.Отдел [Отдел $Справочник.Отделы],
ВзаиморасчетыПокупателейОстатки.ГоловноеПредприятие [ГоловноеПредприятие $Справочник.Контрагенты],
ВзаиморасчетыПокупателейОстатки.ДолгОстаток ДолгОстаток
FROM $РегистрОстатки.ВзаиморасчетыПокупателей(,,,,) AS ВзаиморасчетыПокупателейОстатки

а если мне нужно только по нескольким, то тогда нужны SUM() и GROUPE BY?

2. "И какая практическая польза от упорядочивания по внутреннему представлению? " а как мне их еще упорядочить
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странный запрос получается
Ответ #2 - 22. Сентября 2006 :: 12:30
Печать  
Цитата:
а если мне нужно только по нескольким, то тогда нужны SUM() и GROUPE BY?

Обычно нет - ВТ сама группирует по выбранным измерениям и суммирует ресурсы.

Цитата:
"И какая практическая польза от упорядочивания по внутреннему представлению? " а как мне их еще упорядочить

Упорядочивание по внутреннему представлению ссылочных типов не имеет (скорее всего) аналогов в предметной области. Результат для пользователя будет выглядеть не упорядоченным. Для сортировки по реквизитам соотв. объектов нужно присоединить соотв. таблицы. Например:
Код
Выбрать все
FROM $РегистрОстатки.ВзаиморасчетыПокупателей(,,,,) AS ВзаиморасчетыПокупателейОстатки
    INNER JOIN $Справочник.Контрагенты AS Контрагенты ON ВзаиморасчетыПокупателейОстатки.ГоловноеПредприятие =
Контрагенты.ID
ORDER BY Контрагенты.DESCR -- по наименованию 

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Странный запрос получается
Ответ #3 - 22. Сентября 2006 :: 12:47
Печать  
"Упорядочивание по внутреннему представлению ссылочных типов не имеет (скорее всего) аналогов в предметной области. Результат для пользователя будет выглядеть не упорядоченным. Для сортировки по реквизитам соотв. объектов нужно присоединить соотв. таблицы. Например: Код:"

т.е. если реквизит неопределенного типа или типа справочник неопределенного вида, то с сортировкой будет облом?
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странный запрос получается
Ответ #4 - 22. Сентября 2006 :: 12:52
Печать  
Давай рассмотрим теорию. А как ты представляешь сортировку справочников, если у одних есть наименование, а у других нет. У одних основное представление в виде даты (кода и наименования нет), а у других только код...
  
Наверх
 
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Странный запрос получается
Ответ #5 - 22. Сентября 2006 :: 12:54
Печать  
(4) Это я же понял и сортирую после выгрузки в ТЗ
  
Наверх
 
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Странный запрос получается
Ответ #6 - 22. Сентября 2006 :: 12:58
Печать  
И все таки, почему так странно запрос разворачивался?
  
Наверх
 
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Странный запрос получается
Ответ #7 - 22. Сентября 2006 :: 14:11
Печать  
Делаю запрос:
ТекстЗапроса = "
|SELECT Жур.iddoc [Документ $Документ],
| Жур.iddocdef Документ_вид
|FROM _1sjourn as Жур (nolock)
|WHERE Жур.Closed & 1 = 1 AND Жур.IDDocDef = $ВидДокумента.НарядНаКомплектацию
|ORDER BY Жур.date_time_iddoc
|";

А он мне разворачивает его:
SELECT Жур.iddoc [Документ $Документ],
Жур.iddocdef Документ_вид
FROM _1sjourn as Жур (nolock)
WHERE Жур.Closed & 1 = 1 AND Жур.IDDocDef = 6346
OR
OR
OR
OR
OR
OR
OR
OR
DER BY Жур.date_time_iddoc

и естественно вываливается с ошибкой: ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
{D:\ПЕРЕВОД НА 43\ДОПОТЧЕТЫ\ВЫБОРКАДОКУМЕНТОВ.ERT(25)}: State 42000, native 156, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'OR'.

Что делать? Где копать?

  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странный запрос получается
Ответ #8 - 22. Сентября 2006 :: 14:25
Печать  
Попробуй переустановить 1С и http://www.1cpp.ru/files/1cpp.1816fb03.zip  Нерешительный
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Странный запрос получается
Ответ #9 - 22. Сентября 2006 :: 14:31
Печать  
Переустановил.
Создал запрос:
ТекстЗапроса = "
     |SELECT iddoc [Документ $Документ],
     |  iddocdef Документ_вид
     |FROM _1sjourn as J (nolock)
     |WHERE Closed & 1 = 1 AND
     |  IDDocDef = $ВидДокумента.НарядНаКомплектацию
     |  IDDocDef = $ВидДокумента.ЗаявкаНаРаcкомплектацию AND
     |  IDDocDef = $ВидДокумента.ЗаявкаНаКомплектацию AND
     |  IDDocDef = $ВидДокумента.ЗаявкаНаРаcкомплектацию AND
     |  IDDocDef = $ВидДокумента.Заказ AND
     |  IDDocDef = $ВидДокумента.СнятиеЗаказа AND
     |  IDDocDef = $ВидДокумента.РаспределениеТовараКоммАрбитром AND
     |  IDDocDef = $ВидДокумента.Списание AND
     |  IDDocDef = $ВидДокумента.Отгрузка AND
     |  IDDocDef = $ВидДокумента.ПриходнаяНакладная
     |ORDER BY Жур.date_time_iddoc
     |";

В результате он его мне в такую билиберду развернул, что сюда не запостить, т.к. места не хватит.
А на первой машине все работает как надо.    Печаль
  
Наверх
 
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Странный запрос получается
Ответ #10 - 22. Сентября 2006 :: 14:36
Печать  
Сори, вместо:
.......
WHERE Closed & 1 = 1 AND 
     |  IDDocDef = $ВидДокумента.НарядНаКомплектацию
     |  IDDocDef = $ВидДокумента.ЗаявкаНаРаcкомплектацию AND
........
Нужно:
..........
WHERE Closed & 1 = 1 AND 
     |  IDDocDef = $ВидДокумента.НарядНаКомплектацию AND
     |  IDDocDef = $ВидДокумента.ЗаявкаНаРаcкомплектацию AND
.............

В результате мне выдало Получаемая строка превысила допустимые размеры"
  
Наверх
 
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Странный запрос получается
Ответ #11 - 22. Сентября 2006 :: 14:43
Печать  
а вместо AND нужно OR

и все равно, на первой машине все ОК, а на второй глюки Печаль
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странный запрос получается
Ответ #12 - 22. Сентября 2006 :: 14:55
Печать  
какой MDAC  на машине №1 и на машине №2?
Win 2003 Server EE - это Win 2003 Server Ent?
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странный запрос получается
Ответ #13 - 22. Сентября 2006 :: 15:02
Печать  
Vitek77 писал(а) 22. Сентября 2006 :: 12:14:
Я только начал изучение прямого доступа, а документации нет + инет только что появился, а запрос писался ночью.
1. Если я правильно понял, то запрос к остаткам регистра на ТА по всем измерениям можно сделать так:

слушай, расскажи как ты скачал 1С++ 2.0.3.1 без документации? там в архиве она есть причем очень подробная...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Странный запрос получается
Ответ #14 - 22. Сентября 2006 :: 15:23
Печать  
MDAC на обоих машинах 2.7

библиотеку слил на флешку у знакомого, по глупости без файлика als и документации.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать