Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Прошу помочь - простой запрос... (число прочтений - 4425 )
q1w2e3r42008
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 30. Ноября 2008
Пол: Мужской
Прошу помочь - простой запрос...
29. Января 2013 :: 13:59
Печать  
Не удается получить именно число по функции Расход()
Код
Выбрать все
ТекстЗапроса = "
|SELECT
|  Жур.IDDoc as [Док $Документ.СписаниеМатериалов],
//|  Жур.IDDocDef as Док_вид,
|  CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДок,
|  $РегОТ.Склад as [Склад $Справочник.Склады],
|  $РегОТ.Наценка as НаценкаРасход
|FROM
|  $Регистр.ОстаткиТоваров as РегОТ
|INNER JOIN
|  _1Sjourn as Жур ON Жур.IDDoc = РегОТ.IDDoc
|WHERE
|  Жур.Date_Time_IDDoc BETWEEN :ДатаНачала AND :ДатаКонца~ AND
|  Жур.IDDocDef = $ВидДокумента.СписаниеМатериалов AND
|  Жур.Closed & 1 = 1";
 


выдает сумму и прихода и расхода...
прошу помощи
  

1св77: время собирать камни
Наверх
www  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прошу помочь - простой запрос...
Ответ #1 - 29. Января 2013 :: 14:23
Печать  
AND DEBKRED = 1
  

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


1C++ rocks!

Сообщений: 20
Зарегистрирован: 30. Ноября 2008
Пол: Мужской
Re: Прошу помочь - простой запрос...
Ответ #2 - 29. Января 2013 :: 14:35
Печать  
berezdetsky писал(а) 29. Января 2013 :: 14:23:
AND DEBKRED = 1

таки ДА  Очень довольный

такая мелочь....кучу времени потерял
а в доках это описано?
еще раз спс


  

1св77: время собирать камни
Наверх
www  
IP записан
 
q1w2e3r42008
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 30. Ноября 2008
Пол: Мужской
Re: Прошу помочь - простой запрос...
Ответ #3 - 29. Января 2013 :: 15:04
Печать  
Если развить тему: как по нескольким видам документов отбор выполнить?
  

1св77: время собирать камни
Наверх
www  
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Прошу помочь - простой запрос...
Ответ #4 - 29. Января 2013 :: 15:38
Печать  
Например так:
Код
Выбрать все
Жур.IDDocDef IN .ОказаниеУслуг)
 

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


1C++ rocks!

Сообщений: 20
Зарегистрирован: 30. Ноября 2008
Пол: Мужской
Re: Прошу помочь - простой запрос...
Ответ #5 - 29. Января 2013 :: 18:56
Печать  
zk96 писал(а) 29. Января 2013 :: 15:38:
Например так:
Код
Выбрать все
Жур.IDDocDef IN .ОказаниеУслуг)
 


Да - это сработало, но не понятна зачем типизация по одному виду
Код
Выбрать все
|SELECT
|  Жур.IDDoc as [Док $Документ.СписаниеМатериалов], 

- ее задача какая? по логике должны попадать только доки "СписаниеМатериалов"?
  

1св77: время собирать камни
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прошу помочь - простой запрос...
Ответ #6 - 30. Января 2013 :: 05:24
Печать  
q1w2e3r42008 писал(а) 29. Января 2013 :: 18:56:
Да - это сработало, но не понятна зачем типизация по одному виду
Код
Выбрать все
|SELECT
|  Жур.IDDoc as [Док $Документ.СписаниеМатериалов], 

- ее задача какая? по логике должны попадать только доки "СписаниеМатериалов"?


Это потому, что ниже есть
where IDDocDef = $ВидДокумента.СписаниеМатериалов


Если тебе надо по нескольким видам, то так:
Код
Выбрать все
Жур.iddoc [Док $Документ]
,Жур.iddocdef Док_вид

.....

where Жур.iddocdef in ($ВидДокумента.Вася,$ВидДокумента.Федя,...) 

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


1C++ rocks!

Сообщений: 20
Зарегистрирован: 30. Ноября 2008
Пол: Мужской
Re: Прошу помочь - простой запрос...
Ответ #7 - 30. Января 2013 :: 08:20
Печать  
berezdetsky zk96 Eprst - с вами в космос можно лететь - спасибо огромное - все ответы в десятку
  

1св77: время собирать камни
Наверх
www  
IP записан
 
q1w2e3r42008
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 30. Ноября 2008
Пол: Мужской
Re: Прошу помочь - простой запрос...
Ответ #8 - 30. Января 2013 :: 09:01
Печать  
Каким образом объединить два запроса в один: (смысл в том что условия определения "СуммаГРНПриход" разные)
Код
Выбрать все
	ТекстЗапроса = "
		|SELECT ИздержкиОбороты.Издержка [Издержка $Справочник.Издержки]
		|	, Sum(ИздержкиОбороты.СуммаГРНПриход) AS СуммаГРНПриход
		|FROM $РегистрОбороты.Издержки(:ДатаНачала, :ДатаКонца~,,,,(Склад, Издержка),СуммаГРН) AS ИздержкиОбороты
		|	FULL OUTER JOIN $Справочник.Издержки AS Издержки ON ИздержкиОбороты.Издержка = Издержки.ID
		|WHERE ($Издержки.Вид = $Перечисление.ЗатратаПрибыль.Затрата)
		|GROUP BY ИздержкиОбороты.Издержка
		|HAVING
		|	Sum(СуммаГРНПриход) <> 0
		|";
 



    и это

Код
Выбрать все
	ТекстЗапроса = "
		|SELECT ИздержкиОбороты.Склад [Склад $Справочник.МестаУчета]
		|	, Sum(ИздержкиОбороты.СуммаГРНПриход) AS СуммаГРНПриход
		|FROM $РегистрОбороты.Издержки(:ДатаНачала, :ДатаКонца~,,,,(Склад, Издержка),СуммаГРН) AS ИздержкиОбороты
		|	FULL OUTER JOIN $Справочник.Издержки AS Издержки ON ИздержкиОбороты.Издержка = Издержки.ID
		|WHERE ($Издержки.Вид = $Перечисление.ЗатратаПрибыль.Прибыль)
		|GROUP BY ИздержкиОбороты.Склад
		|HAVING
		|	Sum(СуммаГРНПриход) <> 0
		|";
 



---------------------------
и еще - из практики 1с++ быстр.запросы- что лучше выполнить два запроса по разным регистрам или объединить их в один? (скажем определяем наценку из разных регистров: Услуги, ОборотыТоваров)

  

1св77: время собирать камни
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прошу помочь - простой запрос...
Ответ #9 - 30. Января 2013 :: 09:13
Печать  
Написать один запрос к ВТ, выкинуть из запроса full join, (заменив его на inner join)
воткнуть в параметры ВТ условие на вид издержек как
in ($Перечисление.ЗатратаПрибыль.Затрата,$Перечисление.ЗатратаПрибыль.Прибыль)

в селект воткнуть case, что ежели вид издержки = "вася", то СуммаГРНПриход иначе 0 это СуммаГРНПриходВася
+ аналогично с другим видом издержек.

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


1C++ rocks!

Сообщений: 20
Зарегистрирован: 30. Ноября 2008
Пол: Мужской
Re: Прошу помочь - простой запрос...
Ответ #10 - 30. Января 2013 :: 15:06
Печать  
Eprst я из за марсианского синтаксиса СКЛ запросов и обращаюсь к космическому разуму на вашем форуме - логику понимаю но синтаксис съел меня - запрос построить правильно уже нет сил...т.е. "добавить...воткнуть..."и т.д. не получается
мож поможешь
спасибо
  

1св77: время собирать камни
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прошу помочь - простой запрос...
Ответ #11 - 31. Января 2013 :: 04:57
Печать  
Код
Выбрать все
ТекстЗапроса = "
		|SELECT ИздержкиОбороты.Издержка [Издержка $Справочник.Издержки]
		|	, Sum(case when $Издержки.Вид = $Перечисление.ЗатратаПрибыль.Прибыль then ИздержкиОбороты.СуммаГРНПриход else 0 end) AS СуммаГРНПриходПрибыль
		|	, Sum(case when $Издержки.Вид = $Перечисление.ЗатратаПрибыль.Затрата then ИздержкиОбороты.СуммаГРНПриход else 0 end) AS СуммаГРНПриходЗатрата
		|FROM $РегистрОбороты.Издержки(:ДатаНачала, :ДатаКонца~,,,,(Издержка),СуммаГРН) AS ИздержкиОбороты
		|	inner join $Справочник.Издержки AS Издержки ON ИздержкиОбороты.Издержка = Издержки.ID
		|and $Издержки.Вид in ($Перечисление.ЗатратаПрибыль.Затрата,$Перечисление.ЗатратаПрибыль.Прибыль)
		|GROUP BY ИздержкиОбороты.Издержка
		|"; 

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


1C++ rocks!

Сообщений: 20
Зарегистрирован: 30. Ноября 2008
Пол: Мужской
Re: Прошу помочь - простой запрос...
Ответ #12 - 31. Января 2013 :: 17:54
Печать  
Eprst - В яблочко маэстро -сработало сразу
благодарствую
тема исчерпана

  

1св77: время собирать камни
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать