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


1C++ rocks!

Сообщений: 20
Зарегистрирован: 04. Декабря 2008
Вес номенклатуры
29. Мая 2009 :: 06:43
Печать  
Всем привет! Извиняюсь за простые вопросы, только начал разбираться в SQL. Так вот, у номенклатуры есть вес, необходимо получить вес по каждому документу поступление, пишу

     ТекстЗапроса="
     |Select $ДокументСтроки.ПоступлениеТМЦ.Номенклатура as [Товар $Справочник.Номенклатура],
     |sum(ТЧ.$ДокументСтроки.ПоступлениеТМЦ.Номенклатура.БазоваяЕдиница.Вес) as ИтогоКоличество from
     |$ДокументСтроки.ПоступлениеТМЦ as ТЧ (nolock),$Документ.ПоступлениеТМЦ as Шапка (nolock),_1sjourn as Журнал (nolock)
     |where Журнал.iddoc=ТЧ.iddoc and Журнал.IDDOC=Шапка.IDDOC
     |and Журнал.Closed=1 and convert(datetime,substring(date_time_iddoc,1,8)) between :НачДатаЗапрос and :КонДатаЗапрос";

выдает ошибку:The column prefix 'ТЧ.sp1569.БазоваяЕдиница' does not match with a table name or alias name used in the query.

Как правильно надо написать?
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: Вес номенклатуры
Ответ #1 - 29. Мая 2009 :: 09:47
Печать  
Код
Выбрать все
ТекстЗапроса="
|Select
|  $ТЧ.Номенклатура as [Товар $Справочник.Номенклатура]
|, sum($СпрБазоваяЕдиница.Вес) as ИтогоКоличество
|from
|  $ДокументСтроки.ПоступлениеТМЦ as ТЧ (nolock)
|  Inner Join _1sjourn as Журнал (nolock) on Журнал.IDDOC = ТЧ.IDDOC
|  Lift  Join $Справочник.Номенклатура as СпрНоменклатура (nolock) on СпрНоменклатура.ID = $ТЧ.Номенклатура
|  Lift  Join $Справочник.БазоваяЕдиница as СпрБазоваяЕдиница (nolock) on СпрБазоваяЕдиница.ID = $СпрНоменклатура.БазоваяЕдиница
|where
|  Журнал.iddoc=ТЧ.iddoc
|   and Журнал.Closed=1
|   and Журнал.date_time_iddoc between :НачДатаЗапрос and :КонДатаЗапрос~
|Group By $ТЧ.Номенклатура
|"; 



Как то так.
Вместо $СпрНоменклатура.БазоваяЕдиница напиши свой справочник $СпрНоменклатура.ССССССССС
Не понятно, а на количество умножить не хочеш?
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: Вес номенклатуры
Ответ #2 - 29. Мая 2009 :: 10:01
Печать  
Код
Выбрать все
ТекстЗапроса="
|Select
|  $ТЧ.Номенклатура as [Товар $Справочник.Номенклатура]
|, sum($СпрБазоваяЕдиница.Вес) as ИтогоКоличество
|from
|  $ДокументСтроки.ПоступлениеТМЦ as ТЧ (nolock)
|  Inner Join _1sjourn as Журнал (nolock) on Журнал.IDDOC = ТЧ.IDDOC
|							  and Журнал.Closed=1
|							  and (Журнал.date_time_iddoc between :НачДатаЗапрос and :КонДатаЗапрос~)
|  Lift  Join $Справочник.Номенклатура as СпрНоменклатура (nolock) on СпрНоменклатура.ID = $ТЧ.Номенклатура
|  Lift  Join $Справочник.БазоваяЕдиница as СпрБазоваяЕдиница (nolock) on СпрБазоваяЕдиница.ID = $СпрНоменклатура.БазоваяЕдиница
|Group By $ТЧ.Номенклатура
|";  



Хотя так новерно будет правильней. И быстрей запрос работать будет.
  
Наверх
 
IP записан
 
popov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 04. Декабря 2008
Re: Вес номенклатуры
Ответ #3 - 29. Мая 2009 :: 10:13
Печать  
leov-001, подскажи а где на количество умножить? пжл
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: Вес номенклатуры
Ответ #4 - 29. Мая 2009 :: 10:27
Печать  
Код
Выбрать все
ТекстЗапроса="
|Select
|  $ТЧ.Номенклатура as [Товар $Справочник.Номенклатура]
|, sum(IsNull($СпрБазоваяЕдиница.Вес,0)) * sum(IsNull($ТЧ.Количество,0)) as ИтогоКоличество
|from
|  $ДокументСтроки.ПоступлениеТМЦ as ТЧ (nolock)
|  Inner Join _1sjourn as Журнал (nolock) on Журнал.IDDOC = ТЧ.IDDOC
|							  and Журнал.Closed=1
|							  and (Журнал.date_time_iddoc between :НачДатаЗапрос and :КонДатаЗапрос~)
|  Lift  Join $Справочник.Номенклатура as СпрНоменклатура (nolock) on СпрНоменклатура.ID = $ТЧ.Номенклатура
|  Lift  Join $Справочник.БазоваяЕдиница as СпрБазоваяЕдиница (nolock) on СпрБазоваяЕдиница.ID = $СпрНоменклатура.БазоваяЕдиница
|Group By $ТЧ.Номенклатура
|"; 



Ты не там темы начал надо было в ПРЯМЫЕ ЗАПРОСЫ писать
  
Наверх
 
IP записан
 
popov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 04. Декабря 2008
Re: Вес номенклатуры
Ответ #5 - 29. Мая 2009 :: 10:33
Печать  
leov-001, моей благодарности нет придела, спасибо! Теперь буду знать
  
Наверх
 
IP записан
 
popov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 04. Декабря 2008
Re: Вес номенклатуры
Ответ #6 - 29. Мая 2009 :: 10:36
Печать  
И еще вопросик, мне нужна группировка по документу, как написать?
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: Вес номенклатуры
Ответ #7 - 29. Мая 2009 :: 11:47
Печать  
Код
Выбрать все
ТекстЗапроса="
|Select
|  Журнал.IdDoc as [Товар $Документ.ПоступлениеТМЦ]
|,  $ТЧ.Номенклатура as [Товар $Справочник.Номенклатура]
|, sum(IsNull($СпрБазоваяЕдиница.Вес,0)) * sum(IsNull($ТЧ.Количество,0)) as ИтогоКоличество
|from
|  $ДокументСтроки.ПоступлениеТМЦ as ТЧ (nolock)
|  Inner Join _1sjourn as Журнал (nolock) on Журнал.IDDOC = ТЧ.IDDOC
|							  and Журнал.Closed=1
|							  and (Журнал.date_time_iddoc between :НачДатаЗапрос and :КонДатаЗапрос~)
|  Lift  Join $Справочник.Номенклатура as СпрНоменклатура (nolock) on СпрНоменклатура.ID = $ТЧ.Номенклатура
|  Lift  Join $Справочник.БазоваяЕдиница as СпрБазоваяЕдиница (nolock) on СпрБазоваяЕдиница.ID = $СпрНоменклатура.БазоваяЕдиница
|Group By Журнал.IdDoc, $ТЧ.Номенклатура  

  
Наверх
 
IP записан
 
popov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 04. Декабря 2008
Re: Вес номенклатуры
Ответ #8 - 29. Мая 2009 :: 11:54
Печать  
Спасибо!!! А если мне просто нужен док и итог вес, без группировки по номенклатуре?
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: Вес номенклатуры
Ответ #9 - 29. Мая 2009 :: 11:58
Печать  
Средствами самой 1С ТЗ.Свернуть()
  
Наверх
 
IP записан
 
popov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 04. Декабря 2008
Re: Вес номенклатуры
Ответ #10 - 29. Мая 2009 :: 12:00
Печать  
СПАСИБО!!! Улыбка
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: Вес номенклатуры
Ответ #11 - 29. Мая 2009 :: 12:03
Печать  
popov писал(а) 29. Мая 2009 :: 12:00:
СПАСИБО!!! Улыбка


Ранно сказал. Неправильно будет считать, если группировка по док. и сумма.вес*сумма.колво.
Лучше средствами 1С бысрей получится.
  
Наверх
 
IP записан
 
popov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 04. Декабря 2008
Re: Вес номенклатуры
Ответ #12 - 29. Мая 2009 :: 12:23
Печать  
Средствами 1С , я то знаю как написать , но надо SQL
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: Вес номенклатуры
Ответ #13 - 29. Мая 2009 :: 12:42
Печать  
popov писал(а) 29. Мая 2009 :: 12:23:
Средствами 1С , я то знаю как написать , но надо SQL


Можно и на SQL с промежуточным сохранением во временную таблицу. Т.к. в подзапросах группировка не поддерживается.

Код
Выбрать все
Select
  tab.Док
  Sum(tab.ИТог)
From
  (
   Select
	  Док
	, Номенкл
	, Sum(вес)*Sum(Кол) as ИТог
   From
	.............
   Group By Док, Номенкл
   ) as tab
Group By tab.Док 

  
Наверх
 
IP записан
 
popov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 04. Декабря 2008
Re: Вес номенклатуры
Ответ #14 - 29. Мая 2009 :: 12:45
Печать  
leov-001, глянь пжл мой код
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать