Переключение на Главную Страницу Страницы: [1] 2 3 4 ОтправитьПечать
Очень популярная тема (более 25 ответов) Учусь писать запросы...ошибки ...помогите разобрат (число прочтений - 13880 )
maxa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 07. Ноября 2007
Учусь писать запросы...ошибки ...помогите разобрат
07. Ноября 2007 :: 13:19
Печать  
Вот написала ,первый свой запрос:
     ТекстЗапроса="
     | select
     | Рег.Товар as [Товар $Справочник.Номенклатура],
     |      Жур.IDDOC [Документ $Документ],
     |      Жур.IDDOCDEF Документ_вид
     | From
     |      $РегистрОбороты.ПартииТоваров(:ДатаНач,:ДатаКон~,Документ, ,
     |                       Фирма =:ПустаяФирма,
     |               (Фирма,Товар),) as Рег
               |Left JOIN
     |      _1SJOURN AS Жур ON Рег.ПозицияДокумента  = Жур.DATE_TIME_IDDOC
     |GROUP BY Товар WITH ROLLUP
     |Order By
     |      Рег.Товар";

вываливается ошибка Column '_1SJOURN.IDDOC' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
трудно самой разобраться.Помогите,пж.Где неправильно?Вааще мне нужно еще из документа ,который сделал движение вытянуть контрагента.Но у меня и такой простой запрос пока не получается.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #1 - 07. Ноября 2007 :: 13:36
Печать  
Код
Выбрать все
|SELECT Номенклатура.ID [Товар $Справочник.Номенклатура]
|	, Журнал.IDDOC [Документ $Документ]
|	, Журнал.IDDOCDEF Документ_вид
|FROM $Регистр.ПартииТоваров AS ПартииТоваров With (NOLOCK)
|	INNER JOIN $Справочник.Номенклатура AS Номенклатура With (NOLOCK) ON $ПартииТоваров.Товар = Номенклатура.ID
|	INNER JOIN _1SJOURN AS Журнал With (NOLOCK) ON ПартииТоваров.IDDOC = Журнал.IDDOC
|WHERE (Журнал.DATE_TIME_IDDOC > :НачДата)
|	AND (Журнал.DATE_TIME_IDDOC < :КонДата)
|	AND ($ПартииТоваров.Фирма = $ПустойИд)
|ORDER BY Номенклатура.DESCR
 


Если у регистра включен быстрый отбор движений, можно сделать гораздо проще.
Контрагент есть не у всех документов, так что в общем случае его можно вытащить, если есть графа отбора по контрагентам.
  

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


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 07. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #2 - 07. Ноября 2007 :: 13:55
Печать  
Быстрого отбора движений нет, а вот графа отбора есть...ее как-то можно использовать?Это и есть реквизит журнала?
  
Наверх
 
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #3 - 07. Ноября 2007 :: 13:59
Печать  
Жур.IDDOC, Жур.IDDOCDEF нужно включить Group by
  
Наверх
 
IP записан
 
maxa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 07. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #4 - 07. Ноября 2007 :: 14:03
Печать  
Мне вообще документы не нужны ,мне нужен покупатель-контрагент, и по нему группировку.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #5 - 07. Ноября 2007 :: 14:21
Печать  
maxa писал(а) 07. Ноября 2007 :: 14:03:
Мне вообще документы не нужны ,мне нужен покупатель-контрагент, и по нему группировку.

Код
Выбрать все
|SELECT Отбор.PARENTVAL [Контрагент $Неопределенный]
|FROM $Регистр.ПартииТоваров AS ПартииТоваров With (NOLOCK)
|	INNER JOIN _1SJOURN AS Журнал With (NOLOCK) ON ПартииТоваров.IDDOC = Журнал.IDDOC
|	INNER JOIN _1SCRDOC AS Отбор With (NOLOCK) ON ПартииТоваров.IDDOC = Отбор.CHILDID
|WHERE (Журнал.DATE_TIME_IDDOC > :НачДата)
|	AND (Журнал.DATE_TIME_IDDOC < :КонДата)
|	AND ($ПартииТоваров.Фирма = $ПустойИд)
|	AND (Отбор.MDID = $ГрафаОтбора.Контрагент)
|GROUP BY Отбор.PARENTVAL 


Сюда нужно добавить условия, по которым ты отбираешь продажи (по коду операции, виду документа и т.п.).
  

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


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 07. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #6 - 07. Ноября 2007 :: 14:28
Печать  
Огромное спасибо.Что-то начинает прояснятся.Мне еще нужно выудить определенный вид свойства товара , к примеру "Асортиментная группа", и группировку сделать по покупателям и этому свойству.В общем нужно узнать сколько покупатели закупили по каждой ассортиментной группе. Если вам не трудно- помогите, уже три дня пытаюсь разобраться с запросами - в голове полная каша.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #7 - 07. Ноября 2007 :: 14:38
Печать  
Как-нибудь так:
Код
Выбрать все
|SELECT Отбор.PARENTVAL [Контрагент $Неопределенный]
|	, Номенклатура.PARENTID [ТоварнаяГруппа $Справочник.Номенклатура]
|FROM $Регистр.ПартииТоваров AS ПартииТоваров With (NOLOCK)
|	INNER JOIN _1SJOURN AS Журнал With (NOLOCK) ON ПартииТоваров.IDDOC = Журнал.IDDOC
|	INNER JOIN _1SCRDOC AS Отбор With (NOLOCK) ON ПартииТоваров.IDDOC = Отбор.CHILDID
|	INNER JOIN $Справочник.Номенклатура AS Номенклатура With (NOLOCK) ON $ПартииТоваров.Товар = Номенклатура.ID
|WHERE (Журнал.DATE_TIME_IDDOC > :НачДата)
|	AND (Журнал.DATE_TIME_IDDOC < :КонДата)
|	AND ($ПартииТоваров.Фирма = $ПустойИд)
|	AND (Отбор.MDID = $ГрафаОтбора.Контрагент)
|GROUP BY Отбор.PARENTVAL
|	, Номенклатура.PARENTID 

  

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


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 07. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #8 - 07. Ноября 2007 :: 14:45
Печать  
По Отбор.PARENTVAL не хочет группировать,говорит Column 'sc33.ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause

а "Ассортиментная группа" - справочник.СвойстваНоменклатуры, подчиненный номенклатуре, с Видом свойства "Ассортиментная нруппа", а вытащить из него нужно значение этого свойства.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #9 - 07. Ноября 2007 :: 15:27
Печать  
maxa писал(а) 07. Ноября 2007 :: 14:45:
По Отбор.PARENTVAL не хочет группировать,говорит Column 'sc33.ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause

Это не из моего запроса, а твой я не вижу. Добавь этот 'sc33.ID' в секцию GROUP BY.

maxa писал(а) 07. Ноября 2007 :: 14:45:
а "Ассортиментная группа" - справочник.СвойстваНоменклатуры, подчиненный номенклатуре, с Видом свойства "Ассортиментная нруппа", а вытащить из него нужно значение этого свойства.

Если я правильно понял,
Код
Выбрать все
|SELECT Отбор.PARENTVAL [Контрагент $Неопределенный]
|	, $СвойстваНоменклатуры.АссортиментнаяГруппа [АссортиментнаяГруппа $Справочник.АссортиментныеГруппы]
|FROM $Регистр.ПартииТоваров AS ПартииТоваров With (NOLOCK)
|	INNER JOIN _1SJOURN AS Журнал With (NOLOCK) ON ПартииТоваров.IDDOC = Журнал.IDDOC
|	INNER JOIN _1SCRDOC AS Отбор With (NOLOCK) ON ПартииТоваров.IDDOC = Отбор.CHILDID
|	INNER JOIN $Справочник.СвойстваНоменклатуры AS СвойстваНоменклатуры With (NOLOCK) ON $ПартииТоваров.Товар = СвойстваНоменклатуры.PARENTEXT
|WHERE (Журнал.DATE_TIME_IDDOC > :НачДата)
|	AND (Журнал.DATE_TIME_IDDOC < :КонДата)
|	AND ($ПартииТоваров.Фирма = $ПустойИд)
|	AND (Отбор.MDID = $ГрафаОтбора.Контрагент)
|GROUP BY Отбор.PARENTVAL
|	, $СвойстваНоменклатуры.АссортиментнаяГруппа 

  

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


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 07. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #10 - 08. Ноября 2007 :: 07:26
Печать  
Все гораздо сложнее .Есть справочник СвойстваНоменклатуры, он подчинет справочнику Номенклатура.В нем   два поля "ВидСвойства" и "ЗначенияСвойства".Нужно в нем отобрать ЗначенияСвойства для определенного "ВидаСвойства".Ассортиментная группа - это ВидСвойства.Т.е мне кажется нужно сделать какую-то промежуточную таблицу с полями Номенкалатура и ЗначениеСвойства, а от туда   уже эти два поля - в мой запрос.Т.е. это наверное называется виртуальной таблицей.А как это в одном запросе сделать-не знаю.
  
Наверх
 
IP записан
 
maxa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 07. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #11 - 08. Ноября 2007 :: 07:37
Печать  
  ТекстЗапроса="
     |SELECT Номенклатура.ID [Товар $Справочник.Номенклатура]
    |   , $ПартииТоваров.Стоимость * ( ПартииТоваров.DEBKRED * 2-1)+ $ПартииТоваров.НДС * ( ПартииТоваров.DEBKRED * 2-1) AS Закупка
     |      , Журнал.IDDOC [Документ $Документ]
     |      , Графа.PARENTVAL [Контрагент $Неопределенный]
    |      , Журнал.IDDOCDEF Документ_вид
    |FROM $Регистр.ПартииТоваров AS ПартииТоваров With (NOLOCK)
    |      INNER JOIN $Справочник.Номенклатура AS Номенклатура With (NOLOCK) ON $ПартииТоваров.Товар = Номенклатура.ID
    |      INNER JOIN _1SJOURN AS Журнал With (NOLOCK) ON ПартииТоваров.IDDOC = Журнал.IDDOC
    |      INNER JOIN _1SCRDOC  AS Графа With (NOLOCK) ON ПартииТоваров.IDDOC = Графа.CHILDID
     |WHERE (Журнал.DATE_TIME_IDDOC >= :ДатаНач)
    |      AND (Журнал.DATE_TIME_IDDOC <= :ДатаКон)
    |      AND ($ПартииТоваров.Фирма = $ПустойИд) AND (Графа.MDID = $ГрафаОтбора.Контрагент)
     |GROUP BY sc33.ID WITH ROLLUP";
 
поставила в группировке sc33.ID - теперь ошибка- "The multi-part identifier "sc33.ID" could not be bound."
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #12 - 08. Ноября 2007 :: 16:38
Печать  
Используй типа такого
Где Номенклатура в (Селект .... тут запрос по свойствам)
По сути тоже самое что и в ТиС, но будет летать...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #13 - 12. Ноября 2007 :: 19:05
Печать  
Плиз хелп !

----
     |SELECT
     |Рег.Товар as [Товар $Справочник.Товары],
     |Sum(Рег.ОстатокТовараНачальныйОстаток) as КоличествоНач,
     |Sum(Рег.ОстатокТовараКонечныйОстаток) as КоличествоКон
     |FROM
     |$РегистрОстаткиОбороты.ОстаткиТоваров(:НачДата,:КонДата~,,,Товар IN (SELECT Val FROM #ГруппаТов),(Товар),(ОстатокТовара)) as Рег
     |";

----

Как ни пробую подставлять параметры, пишет:

Meta name parser error: недопустимое значение параметра "$РегистрОстаткиОбороты.ОстаткиТоваров" (7)

В чем причина?  Озадачен
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #14 - 12. Ноября 2007 :: 20:26
Печать  
запятую пропустил
Код
Выбрать все
    $РегистрОстаткиОбороты.ОстаткиТоваров(:НачДата,:КонДата~,,,,Товар IN (SELECT Val FROM #ГруппаТов),(Товар),(ОстатокТовара))
 

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 4
ОтправитьПечать