Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Помогите с прямым запросом (число прочтений - 4675 )
wait
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 19. Мая 2006
Помогите с прямым запросом
26. Мая 2006 :: 09:44
Печать  
Делаю первые шаги и столкнулся с пока необъяснимой для меня ошибкой,
Есть такой код после парсера
Код
Выбрать все
select Док.Тов [Товар $Справочник.Товары]
	 ,БухОстатки.Поставка [ПоПоставке $Справочник.ВидыПостАудиоВидео]
	 ,БухОстатки.СумБух,БухОстатки.ОстБух
  from (
 select Док.sp2218 Тов
	    from dt2231 Док (nolock)
	    where Док.iddoc = '  8I3R   '
	    group by Док.sp2218
	 )Док
  left  join (
SELECT Товар,Поставка,СумБух=SUM(SUM_),ОстБух=SUM(AMOUNT)
FROM (
SELECT SC0 Товар ,SC1 Поставка,SC2
,SUM_=CASE KIND WHEN '1' THEN SD ELSE 0 END
,AMOUNT=CASE KIND WHEN '3' THEN  SD ELSE 0 END
FROM   _1SBKTTL(NOLOCK)
WHERE DATE='20060401' AND ACCID='    2B   '
AND (KIND = '1' OR KIND = '3')
AND sc2= '     4   '

 union all

SELECT DTSC0 Товар,DTSC1 Поставка ,DTSC2 ,SUM_=CONVERT(NUMERIC(16, 3), SUM_),
	AMOUNT=CONVERT(NUMERIC(16, 3), AMOUNT)
FROM  _1SENTRY ENTRY(NOLOCK)
WHERE DATE_TIME_DOCID>='20060401     0     0   '
  AND DATE_TIME_DOCID<'2006042575B480  8I3QЯЯЯ'
  AND ACCDTID='    2B   '
  AND ACTIVE=' '
AND dtsc2='     4   '

union all

SELECT KTSC0 Товар,KTSC1 Поставка,KTSC2,SUM_=-CONVERT(NUMERIC(16, 3), SUM_),
	AMOUNT=-CONVERT(NUMERIC(16, 3), AMOUNT)
FROM  _1SENTRY ENTRY(NOLOCK)
WHERE DATE_TIME_DOCID>='20060401     0     0   '
  AND DATE_TIME_DOCID<'2006042575B480  8I3QЯЯЯ'
  AND ACCDTID='    2B   '
  AND ACTIVE=' '
AND KTsc2='     4   '
)AS БухОстатки
GROUP BY БухОстатки.Товар,БухОстатки.Поставка
HAVING SUM(SUM_)>0 OR SUM(AMOUNT)>0
)БухОстатки on БухОстатки.Товар = Док.Тов
 


несмотря на все условия которые стоят иногда в последнюю позицию выборки попадают значения Null во все позиции кроме товара,стандартными отчетами видно что товар этот на остатке есть, подскажите куда рыть  Круглые глаза
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с прямым запросом
Ответ #1 - 26. Мая 2006 :: 10:15
Печать  
что мешает для получения остатков воспользоваться виртуальной таблицей, например, $РегистрОстатки?
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите с прямым запросом
Ответ #2 - 26. Мая 2006 :: 10:17
Печать  
Цитата:
что мешает для получения остатков воспользоваться виртуальной таблицей, например, $РегистрОстатки?

наверно то, что итоги бухгалтерские
  

1&&2&&3
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с прямым запросом
Ответ #3 - 26. Мая 2006 :: 10:22
Печать  
а ааааааа, а класс по работе со счетами я так понял судя по веткам еще не пофиксен...
  

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


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 19. Мая 2006
Re: Помогите с прямым запросом
Ответ #4 - 26. Мая 2006 :: 10:49
Печать  
кажется тупанул с датой начала квартала, как разберусь, отпишусь
  
Наверх
 
IP записан
 
wait
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 19. Мая 2006
Re: Помогите с прямым запросом
Ответ #5 - 29. Мая 2006 :: 08:26
Печать  
разобрался, была ошибка ы условии, прошу совета по дальнейшей оптимизации данного безобразия  Круглые глаза
Код
Выбрать все
	рс=СоздатьОбъект("ODBCRecordSet");
	зицию(),-1));
	рс.УстановитьТекстовыйПараметр("Док",ТекущийДокумент());
	рс.УстановитьТекстовыйПараметр("Склад",Склад);
	рс.УстановитьТекстовыйПараметр("ОтделПартий",ОтделПартий);
	рс.УстановитьТекстовыйПараметр("Счет",СчетПоКоду(41.1));

	//рс.УстановитьТекстовыйПараметр("Услуга",Перечисление.ВидыТоваров.Услуга);
	Если ПоПоставке.Выбран()=1 Тогда
		рс.УстановитьТекстовыйПараметр("ВидПоставки",ПоПоставке);
	КонецЕсли;

	Если КоличествоСтрок()>10 Тогда
		ХинтСвязи="hash";
	Иначе
		ХинтСвязи="";
	КонецЕсли;

	Вид=Вид();

	СтрОборотов="SD";
	НачКв=НачКвартала(ДатаДок);
	ТолькоО=1;
	Для ш=1 по 3 Цикл
		НачПер=ДобавитьМесяц(НачКв,ш-1);
		КонПер=ДобавитьМесяц(НачКв,ш)-1;
		Если КонПер>ДатаДок Тогда
			ТолькоО=0;
			Прервать;
		КонецЕсли;
		СтрОборотов=СтрОборотов+"+(OBDT"+ш+"-OBKT"+ш+")";
		Если КонПер=ДатаДок Тогда
			ТолькоО=1;
			прервать;
		КонецЕсли;
		ТолькоО=0;
	КонецЦикла;

	НачПер=Шаблон("'[НачПер#ДГГГГММДД]     0     0   '");
	КонПер=Шаблон("'[ДатаДок+1#ДГГГГММДД]'");



	ТекстЗапроса="
	|select Док.Тов [Товар $Справочник.Товары]
	|	 ,БухОстатки.Поставка [ПоПоставке $Справочник.ВидыПостАудиоВидео]
//	|"+?(ПоПоставке.Выбран()=1,",Док.Количество Количество","")+"
	|	 ,БухОстатки.СумБух,БухОстатки.ОстБух
	|  from (
	| select $Док.Товар Тов
	//|"+?(ПоПоставке.Выбран()=1,",sum($Док.Количество*$Док.Коэффициент) Количество","")+"
	|	    from $ДокументСтроки."+Вид+" Док (nolock)
	|	    where Док.iddoc = :Док
	|	    group by $Док.Товар
	|	 )Док
	|  left "+ХинтСвязи+" join (
	|SELECT Товар,Поставка,СумБух=SUM(SUM_),ОстБух=SUM(AMOUNT)
	|FROM (
	|SELECT SC0 Товар ,SC1 Поставка,SC2
	|,SUM_=CASE KIND WHEN '1' THEN "+ СтрОборотов+" ELSE 0 END
	|,AMOUNT=CASE KIND WHEN '3' THEN  "+ СтрОборотов+" ELSE 0 END
	|FROM   _1SBKTTL(NOLOCK)
	|WHERE DATE='"+Шаблон("[НачКВ#ДГГГГММДД]")+"' AND ACCID=:Счет
	|AND (KIND = '1' OR KIND = '3')
	//|AND sc2='"+ИдОтд+"'
	|AND sc2= :ОтделПартий
	|
	| union all
	|
	|SELECT DTSC0 Товар,DTSC1 Поставка ,DTSC2 ,SUM_=CONVERT(NUMERIC(16, 3), SUM_),
	|	AMOUNT=CONVERT(NUMERIC(16, 3), AMOUNT)
	|FROM  _1SENTRY ENTRY(NOLOCK)
	|WHERE DATE_TIME_DOCID>="+НачПер+"
    |  AND DATE_TIME_DOCID<:Позиция~
	|  AND ACCDTID=:Счет
	|  AND ACTIVE=' '
	|AND dtsc2=:ОтделПартий
	|
	|union all
	|
	|SELECT KTSC0 Товар,KTSC1 Поставка,KTSC2,SUM_=-CONVERT(NUMERIC(16, 3), SUM_),
	|	AMOUNT=-CONVERT(NUMERIC(16, 3), AMOUNT)
	|FROM  _1SENTRY ENTRY(NOLOCK)
	|WHERE DATE_TIME_DOCID>="+НачПер+"
	|  AND DATE_TIME_DOCID<:Позиция~
	|  AND ACCKTID=:Счет
	|  AND ACTIVE=' '
	|AND KTsc2=:ОтделПартий
	|)AS БухОстатки
	|GROUP BY БухОстатки.Товар,БухОстатки.Поставка
	|HAVING SUM(SUM_)<>0 OR SUM(AMOUNT)<>0
	|)БухОстатки on БухОстатки.Товар = Док.Тов"+?(ПоПоставке.Выбран()=1," AND БухОстатки.Поставка=:ВидПоставки ","")+"
	//|"+	?(ПоПоставке.Выбран()=1," where Док.Количество > isnull(БухОстатки.ОстатокТовара,0)","")+"
	|";

	//рс.Отладка(1);

	ТЗ=СоздатьОбъект("ТаблицаЗначений");
	Состояние("ПроверкаКоличестваПоБухгалтерии");
	рс.ВыполнитьИнструкцию(ТекстЗапроса,ТЗ);

 

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