Переключение на Главную Страницу Страницы: 1 2 [3] 4 5  ОтправитьПечать
Очень популярная тема (более 25 ответов) Помогите с 1sqlite (число прочтений - 15774 )
Настенок
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
Re: Помогите с 1sqlite
Ответ #30 - 24. Мая 2011 :: 08:28
Печать  
berezdetsky писал(а) 23. Мая 2011 :: 03:27:
Dmitry The Wing
Нет такого косяка в MS SQL Server.

Настенок
Покажи последний вариант запроса и сообщение об ошибке.



получилось.
НО для некоторых ОС нормально отображаются данные из справочника (код, датаввода, срокЭксплуатации), а в некоторых-нет (отображается только ОС)
|FROM
     | _1SJOURN  Журнал With (NOLOCK)
           
     |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
     
     |Full JOIN
     |         $ДокументСтроки.Переоценка as ПереоценкаСт With (NOLOCK) on ПереоценкаСт.iddoc=Журнал.iddoc
     |LEFT JOIN
     |      $Документ.Переоценка as Переоценка With (NOLOCK) on Переоценка.iddoc=Журнал.iddoc
     |Full JOIN
     
     |      $Справочник.ОС ОС With (NOLOCK) on (substring(coalesce($ПеремещениеСт.С1Стар, $ОС_СписаниеСтроки.С1), 7, 9) = ОС.ID)
     |Full JOIN
     |      $Справочник.КлассификаторОС AS КлассификаторОС With (NOLOCK) on ($ОС.ШифрИзноса = КлассификаторОС.id)
     
     |Where
     |      Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ and
     |    (  Журнал.IDDocDef = $ВидДокумента.ОС_Перемещение OR
     |      Журнал.IDDocDef = $ВидДокумента.ОС_Списание OR
     |      Журнал.IDDocDef = $ВидДокумента.Переоценка OR
     |      Журнал.IDDocDef = $ВидДокумента.ОС_Комплектация)


и еще нужно выбрать все ОС из справочника ОС
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Помогите с 1sqlite
Ответ #31 - 24. Мая 2011 :: 10:21
Печать  
Исходя из поставленной задачи, я бы сделал первый запрос к справочнику ОС, а затем к нему бы соединял джойнами бухгалтерские запросы
  
Наверх
ICQ  
IP записан
 
Cthulhu
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 04. Апреля 2010
Re: Помогите с 1sqlite
Ответ #32 - 24. Мая 2011 :: 12:00
Печать  
есть кто живой?
Код
Выбрать все
Неудачная попытка создания объекта (SQLiteBase) 


чего в правах может не хватать?  Смущённый
Upd:
ничего не менял - заработало. не-по-нят-но.
прим: два пользователя в базе, 027, все компоненты если что.
  
Наверх
 
IP записан
 
Настенок
Junior Member
**
Отсутствует


1C++ rocks!

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



тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
{D:\НАСТЯ\OTCHETY\ИНВЕНТЕРНАЯ КНИГА УЧЕТА\БЕЗЖУРНАЛА.ERT(72)}: State 42000, native 170, message [Microsoft][ODBC SQL Server Driver][SQL Server]Line 34: Incorrect syntax near ')'.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с 1sqlite
Ответ #34 - 25. Мая 2011 :: 08:33
Печать  
Настенок писал(а) 25. Мая 2011 :: 08:15:
     |Full JOIN
     |      $ДокументСтроки.ОС_Списание as ОС_Списание With (NOLOCK)

Не хватает условия соединения. И, наверное, ДокументСтроки надо заменить на Документ.
  

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите с 1sqlite
Ответ #35 - 25. Мая 2011 :: 08:48
Печать  
ну и full join там везде заменить на left join

Зы: и непонятно, нафига ты соединяешься с некоторыми видами документов, которых нема потом в селект листе.
  
Наверх
 
IP записан
 
Настенок
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
Re: Помогите с 1sqlite
Ответ #36 - 25. Мая 2011 :: 09:40
Печать  
спасибо, заменила на

     |left JOIN
     |      $ДокументСтроки.ОС_Списание as ОС_СписаниеСт With (NOLOCK) on (substring($ОС_СписаниеСт.С1, 7, 9) = ОС.ID)
     |left JOIN
     |      $Документ.ОС_Списание as ОС_Списание With (NOLOCK) on ОС_Списание.iddoc=ОС_СписаниеСт.iddoc

не отображается дата и вид документа, а так - работает
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Помогите с 1sqlite
Ответ #37 - 25. Мая 2011 :: 10:02
Печать  
По виду - добавь в селект
,Журнал.IDDOCDEF [ВидСтр $ВидДокумента]
По дате - попробуй сначала просто Журнал.DATE_TIME_IDDOC в селекте получить, а потом уже его порежешь
  
Наверх
ICQ  
IP записан
 
Настенок
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
Re: Помогите с 1sqlite
Ответ #38 - 25. Мая 2011 :: 10:07
Печать  
|left JOIN
     |       _1SJOURN  Журнал With (NOLOCK) on Перемещение.iddoc=Журнал.iddoc or (ОС_СписаниеСт.IDDOC=Журнал.IDDOC) or (ПереоценкаСт.iddoc=Журнал.iddoc)
     |

вроде как отображается

благодарю всех за помощь. Улыбка


можно еще вопросы по этому отчету??
выводятся МОЛ.Но не выводятся подразделения для выбранного мола (тип- справочник- подразделения)
для справочника ОС - получилось, а тут что-то не выводит или выводит не то
  
Наверх
 
IP записан
 
Ломастер
YaBB Newbies
*
Отсутствует


А как бы это...

Сообщений: 9
Местоположение: Красноярск
Зарегистрирован: 25. Мая 2011
Пол: Мужской
Re: Помогите с 1sqlite
Ответ #39 - 25. Мая 2011 :: 12:04
Печать  
  ТекстЗапроса="
       |SELECT
       |    сход.Контрагент,$СтрокаВыпискиПриход.Контрагент) [Контрагент $Справочник.Контрагенты]
       |   , ПокупателиОстатки.Фирма [Фирма $Справочник.Фирмы]
       |    , ПокупателиОстатки.Договор [Договор $Справочник.Договоры]
       |    , ПокупателиОстатки.СтавкаНП [СтавкаНП $Справочник.СтавкиНП]
       |    , ПокупателиОстатки.ВидДолга [ВидДолга $Перечисление.ВидыДолга]
       |    , ПокупателиОстатки.КредДокумент [КредДокумент $Документ]
       |    , Sum(ПокупателиОстатки.СуммаРубОстаток) СуммаРуб
       |    , Sum(ПокупателиОстатки.СуммаНПОстаток) СуммаНП
       |    , Sum(ПокупателиОстатки.СебестоимостьОстаток) Себестоимость
       |   FROM $РегистрОстатки.Покупатели(:ВыбДата,,,,) AS ПокупателиОстатки
       |    LEFT OUTER JOIN $Документ.ПКО AS ПКО on substring(ПокупателиОстатки.КредДокумент,5,9) = ПКО.IDDOC
       |    LEFT OUTER JOIN $Документ.РКО AS РКО on substring(ПокупателиОстатки.КредДокумент,5,9) = РКО.IDDOC
       |    LEFT OUTER JOIN $Документ.Реализация AS Реализация on substring(ПокупателиОстатки.КредДокумент,5,9) = Реализация.IDDOC
       |    LEFT OUTER JOIN $Документ.СтрокаВыпискиРасход AS СтрокаВыпискиРасход on substring(ПокупателиОстатки.КредДокумент,5,9) = СтрокаВыпискиРасход.IDDOC
       |    LEFT OUTER JOIN $Документ.СтрокаВыпискиПриход AS СтрокаВыпискиПриход on substring(ПокупателиОстатки.КредДокумент,5,9) = СтрокаВыпискиПриход.IDDOC
       |GROUP BY ПокупателиОстатки.Фирма
       |, ПокупателиОстатки.Договор
       |, ПокупателиОстатки.СтавкаНП
       |, ПокупателиОстатки.ВидДолга
       |, ПокупателиОстатки.КредДокумент
       |, сход.Контрагент,$СтрокаВыпискиПриход.Контрагент)
       |"; 

Обратите внимание на  Coalesce()
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Помогите с 1sqlite
Ответ #40 - 25. Мая 2011 :: 23:07
Печать  
Настенок писал(а) 25. Мая 2011 :: 10:07:
выводятся МОЛ.Но не выводятся подразделения для выбранного мола (тип- справочник- подразделения)
для справочника ОС - получилось, а тут что-то не выводит или выводит не то

И это естественно, ведь тут:
,coalesce($ОС_Комплектация.МОЛ, $ОС_Списание.МОЛОбщ,$Перемещение.МОЛОбщ)  [Подр $Справочник.Подразделения]
ты выбираешь МОЛ-ов, и пытаешься их типизировать как Подразделения. Разумеется получается ерунда.
Для получения Подразделений надо в запрос соединить еще и Справочник.Сотрудники, и уже из этого Справочника вынуть Подразделения
  
Наверх
ICQ  
IP записан
 
Настенок
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
Re: Помогите с 1sqlite
Ответ #41 - 26. Мая 2011 :: 11:15
Печать  
Salimbek, благодарю, исправила

и еще :
из справочника ОС выбираются не все ос (более 500 ос не выбраны  Печаль  )
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите с 1sqlite
Ответ #42 - 26. Мая 2011 :: 11:39
Печать  
А ты результирующий свой запрос покажи.
  
Наверх
 
IP записан
 
Настенок
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 14. Февраля 2011
Re: Помогите с 1sqlite
Ответ #43 - 26. Мая 2011 :: 12:04
Печать  
ТекстЗапроса = "-- qryMaker:ПереоценкаКомплектаци.2011.05.19.11.01.42
     |SELECT
     //получаем ОС из справочника и все данные из справочника ОС
     |      ОС.CODE as Код
     |      , NullIf($ОС.ДатаВводаЭкспл, '17530101') ДатаВводаЭкспл
     |      , $ОС.ШифрИзноса [ШифрИзноса $Справочник.КлассификаторОС]
     |      , $КлассификаторОС.СрокСлужбы СрокСлужбы
     //для вывода документов
     //|      , Журнал.IDDOCDEF  Документ_вид
     |      , Пост2009Ст.IDDOC  [ДокПОст2009 $Документ.ТМЦ_Поступление2009]
     |      , ПостСт.IDDOC  [ДокПОст $Документ.ТМЦ_Поступление]
     |      ,Компл.IDDOC  [ДокКомпл $Документ.ОС_Комплектация]
     |      , ПереоценкаСт.iddoc  [ДокПер $Документ.Переоценка]
     |      ,ПеремСт.iddoc  [ДокПерем $Документ.ОС_Перемещение]
     |      ,Спис.iddoc  [ДокСпис $Документ.ОС_Списание]
     //|      ,Журнал.IDDOCDEF [ВидСтр $ВидДокумента]
     //|      , Журнал.DOCNO Документ_ном
     |      , NullIf(Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime), '17530101') Документ_дата
//      получаем ОС
     |      ,coalesce($ПеремСт.С1Стар, $СписСт.С1, $ПостСт.Субконто1Т, $Пост2009Ст.Субконто1Т)  [ОСНеопрел $Неопределенный]
     |      ,coalesce($Компл.ОС, $ПереоценкаСт.ОС)  [ОС $Справочник.ОС]
     // для мола  из справочника
     |      ,coalesce($Компл.МОЛОС,$Перем.МОЛОбщ) [МОЛ $Справочник.МОЛ]
     |      ,$Спис.МОЛОбщ  [МОЛСпис $Справочник.МОЛ]
     |      ,coalesce($Пост2009Ст.Субконто2Т,$ПостСт.Субконто2Т) [МОЛНеопрел $Неопределенный]
     |      ,$МОЛ.Подр  [Подр $Справочник.Подразделения]
//      |      ,$МОЛСпис.Подр  [ПодрСпис $Справочник.Подразделения]
     //|      ,$МОЛНеопрел.Подр  [Подр $Справочник.Подразделения]

     // для подразделения
     |      ,coalesce($Компл.МОЛ, $Перем.МОЛОбщ)  [Подр $Справочник.Подразделения]
     
     //|      ,coalesce($Перемещение.МОЛОбщ, $ОС_Списание.МОЛОбщ)  [Подр $Справочник.Подразделения]
     |      ,coalesce($ПостСт.Счет,$Пост2009Ст.Счет) [Счет $Счет]
     |      ,coalesce($ПостСт.ИнвНомер,$Пост2009Ст.ИнвНомер) [ИнвНомер $Строка]
     |      , $ПереоценкаСт.К Коэф
     |FROM
     |      $Справочник.ОС ОС With (NOLOCK)
     |left JOIN
     |      $Справочник.КлассификаторОС AS КлассификаторОС With (NOLOCK) on ($ОС.ШифрИзноса = КлассификаторОС.id)
     
     |left JOIN
     |      $ДокументСтроки.ОС_Списание as СписСт With (NOLOCK) on (substring($СписСт.С1, 7, 9) = ОС.ID)
     |left JOIN
     |      $Документ.ОС_Списание as Спис With (NOLOCK) on Спис.iddoc=СписСт.iddoc
     
     |left JOIN
     |      $ДокументСтроки.ОС_Перемещение as ПеремСт With (NOLOCK) on (substring($ПеремСт.С1Стар, 7, 9) = ОС.ID)
     |left JOIN
     |      $Документ.ОС_Перемещение as Перем With (NOLOCK) on ПеремСт.iddoc=Перем.iddoc

     |left JOIN
     |      $Документ.ОС_Комплектация AS Компл With (NOLOCK) on ($Компл.ОС = ОС.ID)

     |left JOIN
     |         $ДокументСтроки.Переоценка as ПереоценкаСт With (NOLOCK) on ($ПереоценкаСт.ОС = ОС.ID)
     |
     |left JOIN
     |         $ДокументСтроки.ТМЦ_Поступление as ПостСт With (NOLOCK) on $ПостСт.ИнвНомер=ОС.CODE
     |
     |left JOIN
//      |         $ДокументСтроки.ТМЦ_Поступление2009 as Пост2009Ст With (NOLOCK) on (substring($Пост2009Ст.Субконто1Т, 7, 9) = ОС.ID) or $Пост2009Ст.ИнвНомер=ОС.CODE
     |         $ДокументСтроки.ТМЦ_Поступление2009 as Пост2009Ст With (NOLOCK) on  $Пост2009Ст.ИнвНомер=ОС.CODE
     |left JOIN
     |      $Справочник.МОл МОЛ With (NOLOCK) on coalesce($Компл.МОЛОС,$Перем.МОЛОбщ)=МОЛ.ID
     //|//or $Спис.МОЛОбщ=МОЛ.ID
     |left JOIN
     |      $Справочник.Подразделения AS ПОдр With (NOLOCK) on ($МОЛ.ПОдр = ПОдр.id)
     //|or $МОЛСпис.Подр= ПОдр.id or $МОЛНеопрел.Подр= ПОдр.id)
     |left JOIN
     |       _1SJOURN  Журнал With (NOLOCK) on (Перем.iddoc=Журнал.iddoc or (СписСт.IDDOC=Журнал.IDDOC) or (ПереоценкаСт.iddoc=Журнал.iddoc) or (Компл.IDDOC=Журнал.IDDOC)or (ПостСт.IDDOC=Журнал.IDDOC)or (Пост2009Ст.IDDOC=Журнал.IDDOC))
     
     |Where
     |      Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
     //|      ,Журнал.IDDocDef = $ВидДокумента.Пост2009Ст
     
     |Order By
     |      КОд
     //|      КОд,Документ_вид,Документ_ном
     //|      Код,Документ_дата,Документ_вид
     
     |      
     |";
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с 1sqlite
Ответ #44 - 26. Мая 2011 :: 12:11
Печать  
К условию

Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~

добавь

OR Журнал.Date_Time_IDDoc IS NULL
  

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