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


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
не получаеться coalesce
23. Мая 2011 :: 03:24
Печать  
база sql
пытаюсь сделать запрос к документам по ОС
ОС_Комплектация (ОС, реквизит, СправочникОС)
ОС_Перемещение (С1Стар, табличная часть-неопределенный)
     
ОС_Списание (С1, табличная часть-неопределенный)
Переоценка (ОС-табличная часть, справочник ОС)
при ,coalesce(ОС_ПеремещениеСтроки.С1Стар,ОС_СписаниеСтроки.С1)  [ОСНеопрел $Неопределенный]

тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
{D:\НАСТЯ\OTCHETY\ИНВЕНТЕРНАЯ КНИГА УЧЕТА\ПЕРЕОЦЕНКАКОМПЛЕКТАЦИЯ.ERT(40)}: State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'С1Стар'.


     ЗагрузитьВнешнююКомпоненту("c:\Program Files\1Cv772\BIN\1CPP.dll");
     рс = СоздатьОбъект("ODBCRecordset");
     
     рс.УстановитьТекстовыйПараметр("НачДата", НачДата); //для устрановления начальной даты для запроса
     рс.УстановитьТекстовыйПараметр("КонДата", КонДата);//для устрановления конечной даты для запроса
     
     
     ТекстЗапроса = "-- qryMaker:ПереоценкаКомплектаци.2011.05.19.11.01.42
|SELECT

     |      Журнал.IDDOCDEF  Документ_Вид
     |      , Журнал.IDDOC  [Документ $Документ]
     |      , Журнал.DOCNO Документ_ном
     
     |      , NullIf(Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime), '17530101') Документ_дата
     |      ,coalesce(ОС_ПеремещениеСтроки.С1Стар,ОС_СписаниеСтроки.С1)  [ОСНеопрел $Неопределенный]
           
     |FROM
     |      _1SJOURN  Журнал
     |LEFT JOIN
     |      $Документ.ОС_Списание as ОС_СписаниеСтроки on ОС_СписаниеСтроки.iddoc=Журнал.iddoc
     |LEFT JOIN
     |      $Документ.ОС_Перемещение as ОС_ПеремещениеСтроки on ОС_ПеремещениеСтроки.iddoc=Журнал.iddoc
     |
     |
     |Where
     |      Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ and
     
     |      Журнал.IDDocDef = $ВидДокумента.ОС_Перемещение OR
     |      Журнал.IDDocDef = $ВидДокумента.ОС_Списание


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


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: не получаеться coalesce
Ответ #1 - 23. Мая 2011 :: 03:31
Печать  
Код
Выбрать все
ТекстЗапроса = "
|SELECT
|	Журнал.IDDOCDEF  Документ_вид
|	, Журнал.IDDOC  [Документ $Документ]
|	, Журнал.DOCNO Документ_ном
|	, NullIf(Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime), '17530101') Документ_дата
|	,coalesce($ОС_ПеремещениеСтроки.С1Стар, $ОС_СписаниеСтроки.С1)  [ОСНеопрел $Неопределенный]
|FROM
|	_1SJOURN  Журнал with (nolock)
|LEFT JOIN
|	$Документ.ОС_Списание as ОС_СписаниеСтроки with (nolock)
on ОС_СписаниеСтроки.iddoc=Журнал.iddoc
|LEFT JOIN
|	$Документ.ОС_Перемещение as ОС_ПеремещениеСтроки with (nolock)
on ОС_ПеремещениеСтроки.iddoc=Журнал.iddoc
|Where
|	Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ and
|	(Журнал.IDDocDef = $ВидДокумента.ОС_Перемещение OR
|	Журнал.IDDocDef = $ВидДокумента.ОС_Списание) 



Исправления выделены жёлтым цветом.
  

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


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
Re: не получаеться coalesce
Ответ #2 - 23. Мая 2011 :: 03:39
Печать  
все исправила, но теперь такая ошибка

Meta name parser error: поле таблицы не найдено "$ОС_ПеремещениеСтроки.С1Стар"
  
Наверх
 
IP записан
 
Настенок
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
Re: не получаеться coalesce
Ответ #3 - 23. Мая 2011 :: 03:55
Печать  
Благодарю за помощь. все дело было во внимательности
|SELECT

     |      Журнал.IDDOCDEF  Документ_вид
     |      , Журнал.IDDOC  [Документ $Документ]
     |      , Журнал.DOCNO Документ_ном
     
     |      , NullIf(Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime), '17530101') Документ_дата
     //|, $ПереоценкаСтроки.К К
//      |       , $ПеремещениеСт.С1Стар [ОСНеопред $Неопределенный]
     |      ,coalesce($ПеремещениеСт.С1Стар, $ОС_СписаниеСтроки.С1)  [ОСНеопрел $Неопределенный]
     |FROM
     |      _1SJOURN  Журнал With (NOLOCK)
     |LEFT JOIN
     |      $ДокументСтроки.ОС_Списание as ОС_СписаниеСтроки With (NOLOCK) on ОС_СписаниеСтроки.iddoc=Журнал.iddoc
     |LEFT JOIN
     |     $ДокументСтроки.ОС_Перемещение as ПеремещениеСт With (NOLOCK) on ПеремещениеСт.iddoc=Журнал.iddoc
     |
     |
     |Where
     |      Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ and
     |    (  Журнал.IDDocDef = $ВидДокумента.ОС_Перемещение OR
     |      Журнал.IDDocDef = $ВидДокумента.ОС_Списание)
     
     |";



можно дальше спросить: как получить код ОС и объедение по ОС?
по реквизиту- неопределенный, но при выборе- назначается тип справочник ОС
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: не получаеться coalesce
Ответ #4 - 23. Мая 2011 :: 03:59
Печать  
Код
Выбрать все
select ОС.CODE as Код
...
left join $Справочник.ОС ОС with (nolock) on substring(coalesce($ПеремещениеСт.С1Стар, $ОС_СписаниеСтроки.С1), 7, 9) = ОС.ID 

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: не получаеться coalesce
Ответ #5 - 23. Мая 2011 :: 04:00
Печать  
  

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: не получаеться coalesce
Ответ #6 - 23. Мая 2011 :: 04:20
Печать  
  
Наверх
 
IP записан
 
Настенок
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
Re: не получаеться coalesce
Ответ #7 - 23. Мая 2011 :: 09:13
Печать  
что-то не получается объединить Печаль
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: не получаеться coalesce
Ответ #8 - 23. Мая 2011 :: 09:16
Печать  
Ты выкладывай свой исправленный текст запроса и описание ошибки.
  
Наверх
 
IP записан
 
Настенок
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
Re: не получаеться coalesce
Ответ #9 - 23. Мая 2011 :: 10:06
Печать  
Line 4: Incorrect syntax near 'Журнал'.

|FROM
     | _1SJOURN  Журнал With (NOLOCK)
     //из справочника
     |LEFT JOIN
     |      $Справочник.ОС ОС With (NOLOCK) on substring(coalesce($ПеремещениеСт.С1Стар, $ОС_СписаниеСтроки.С1), 7, 9) = ОС.ID
     |LEFT JOIN
     |      $ДокументСтроки.ОС_Списание as ОС_СписаниеСтроки With (NOLOCK) on ОС_СписаниеСтроки.iddoc=Журнал.iddoc
     |LEFT JOIN
     |      $Документ.ОС_Списание as ОС_Списание With (NOLOCK)  on ОС_Списание.iddoc=ОС_СписаниеСтроки.iddoc and ОС_Списание.iddoc=Журнал.iddoc
     |LEFT JOIN
     |      $ДокументСтроки.ОС_Перемещение as ПеремещениеСт With (NOLOCK) on ПеремещениеСт.iddoc=Журнал.iddoc
     |LEFT JOIN
     |      $Документ.ОС_Перемещение as Перемещение With (NOLOCK) on  Перемещение.iddoc=ПеремещениеСт.iddoc and  Перемещение.iddoc=Журнал.iddoc
     
     |LEFT JOIN
     |      $Документ.ОС_Комплектация AS ОС_Комплектация With (NOLOCK)  ON ОС_Комплектация.IDDOC=Журнал.IDDOC
     
     |LEFT JOIN
     |         $ДокументСтроки.Переоценка as ПереоценкаСт With (NOLOCK) on ПереоценкаСт.iddoc=Журнал.iddoc

     
     |Where
     |      Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ and
     |    (  Журнал.IDDocDef = $ВидДокумента.ОС_Перемещение OR
     |      Журнал.IDDocDef = $ВидДокумента.ОС_Списание OR
     |      Журнал.IDDocDef = $ВидДокумента.Переоценка OR
     |      Журнал.IDDocDef = $ВидДокумента.ОС_Комплектация)
     |
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: не получаеться coalesce
Ответ #10 - 23. Мая 2011 :: 10:08
Печать  
Улыбка
ошибка выше.
Кинь весь текст запроса.
  
Наверх
 
IP записан
 
Настенок
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
Re: не получаеться coalesce
Ответ #11 - 23. Мая 2011 :: 10:10
Печать  
ТекстЗапроса = "-- qryMaker:ПереоценкаКомплектаци.2011.05.19.11.01.42
     |SELECT
     |      ОС.CODE as Код
     |      Журнал.IDDOCDEF  Документ_вид
     |      , Журнал.IDDOC  [Документ $Документ]
     |      , Журнал.DOCNO Документ_ном
     |      , NullIf(Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime), '17530101') Документ_дата
//      получаем ОС
     |      ,coalesce($ПеремещениеСт.С1Стар, $ОС_СписаниеСтроки.С1)  [ОСНеопрел $Неопределенный]
     |      ,coalesce($ОС_Комплектация.ОС, $ПереоценкаСт.ОС)  [ОС $Справочник.ОС]
     // для мола  из справочника
     |      ,coalesce($ОС_Комплектация.МОЛ, $ОС_Списание.МОЛОбщ,$Перемещение.МОЛОбщ)  [МОЛ $Справочник.МОЛ]
     |      ,МОЛ.ID [МОЛ $Справочник.МОЛ]
     // для подразделения
     |      ,coalesce($ОС_Комплектация.МОЛ, $ОС_Списание.МОЛОбщ)  [Подр $Справочник.Подразделения]
     |
     |FROM
     | _1SJOURN  Журнал With (NOLOCK)
     //из справочника
     |LEFT JOIN
     |      $Справочник.ОС ОС With (NOLOCK) on substring(coalesce($ПеремещениеСт.С1Стар, $ОС_СписаниеСтроки.С1), 7, 9) = ОС.ID
     |LEFT JOIN
     |      $ДокументСтроки.ОС_Списание as ОС_СписаниеСтроки With (NOLOCK) on ОС_СписаниеСтроки.iddoc=Журнал.iddoc
     |LEFT JOIN
     |      $Документ.ОС_Списание as ОС_Списание With (NOLOCK)  on ОС_Списание.iddoc=ОС_СписаниеСтроки.iddoc and ОС_Списание.iddoc=Журнал.iddoc
     |LEFT JOIN
     |      $ДокументСтроки.ОС_Перемещение as ПеремещениеСт With (NOLOCK) on ПеремещениеСт.iddoc=Журнал.iddoc
     |LEFT JOIN
     |      $Документ.ОС_Перемещение as Перемещение With (NOLOCK) on  Перемещение.iddoc=ПеремещениеСт.iddoc and  Перемещение.iddoc=Журнал.iddoc
     
     |LEFT JOIN
     |      $Документ.ОС_Комплектация AS ОС_Комплектация With (NOLOCK)  ON ОС_Комплектация.IDDOC=Журнал.IDDOC
     
     |LEFT JOIN
     |         $ДокументСтроки.Переоценка as ПереоценкаСт With (NOLOCK) on ПереоценкаСт.iddoc=Журнал.iddoc

     
     |Where
     |      Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ and
     |    (  Журнал.IDDocDef = $ВидДокумента.ОС_Перемещение OR
     |      Журнал.IDDocDef = $ВидДокумента.ОС_Списание OR
     |      Журнал.IDDocDef = $ВидДокумента.Переоценка OR
     |      Журнал.IDDocDef = $ВидДокумента.ОС_Комплектация)
     
     |ORder BY
     |Документ_вид,Документ_дата
     |
     
     |";
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: не получаеться coalesce
Ответ #12 - 23. Мая 2011 :: 10:13
Печать  
Код
Выбрать все
   |SELECT
     |	ОС.CODE as Код
     |	,Журнал.IDDOCDEF  Документ_вид 

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


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
Re: не получаеться coalesce
Ответ #13 - 23. Мая 2011 :: 10:21
Печать  
спасибо большое за помощь. получилось и постепенно разбираюсь.
а я бы искала ошибку в другом месте
буду дальше делать отчет


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


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
Re: не получаеться coalesce
Ответ #14 - 24. Мая 2011 :: 06:29
Печать  
еще один вопрос:
отображаеться данные из справочника  ОС по док .ПеремещениеСт,ОС_СписаниеСтроки

$Справочник.ОС ОС With (NOLOCK) on (substring(coalesce($ПеремещениеСт.С1Стар, $ОС_СписаниеСтроки.С1), 7, 9) = ОС.ID)


а по док. не отображается   ПереоценкаСт и ОС_Комплектация.ОС где ос-тип справочник ОС
и когда пишу это условие,
($ПереоценкаСт.ОС,$ОС_Комплектация.ОС= ОС.ID)
то возникает ошибка

благодарю за помощь и за пояснения







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