Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Запрос к бухитогам (помогите новичку) (число прочтений - 2551 )
Anna
Junior Member
**
Отсутствует


1C++

Сообщений: 39
Зарегистрирован: 02. Декабря 2009
Пол: Женский
Запрос к бухитогам (помогите новичку)
02. Декабря 2009 :: 10:47
Печать  
Есть следующий зпапрос:
     ТекстЗапроса = "      
     |SET NOCOUNT ON
     |Select
     |Cast(Left(ПозицияДокумента,8) as datetime) [ДатаДок],
     |CASE ВидДокумента
     |      when :"+Мета.ИДДокумента("ПриходнаяОС")+" then [ПриходОС $Документ.ПриходнаяОС]
     |      when :"+Мета.ИДДокумента("РемонтОС")+"then [Ремонт $Документ.РемонтОС]
     |      when :"+Мета.ИДДокумента("СписаниеОС")+"then [Спис $Документ.СписаниеОС]
     |      when :"+Мета.ИДДокумента("ПеремещениеОС")+" then [Перемещ $Документ.ПеремещениеОС]
     |else
     |end,
     |ВидДокумента [ВидДок]
     |РазделительУчета [РазделительУчета $Справочник.Подразделение],
     | $РМ.Подразделение [Подразделение $Справочник.Подразделение],
     |Счет [Счет $Счет.Основной],
     |Субконто1 [Субконто1 $Субконто],
     |Субконто1_вид,
     |Субконто2 [Субконто2 $Субконто],
     |Субконто2_вид,
     |Субконто3 [Субконто3 $Субконто],
     |Субконто3_вид,
     |ОС.Descr as НСубконто1,
     |РМ.Descr as НСубконто2,
     |ТО.Descr as НфТипКомплекта,
     |PO.Descr as НРазделительУчета,
     |KO.Descr as НСубконто3,
     |Сотр.Descr as НфСотрудник,
     |ТО.id [фТипКомплекта $Справочник.ОС_ТипОС],
     |Сотр.id [фСотрудник $Справочник.Сотрудники],
     |КоличествоКонечныйОстаток as Колво,
     |СуммаКонечныйОстаток as Сумма,
     |FROM БИОстаткиОбороты.Основной(:НачДата, :КонДата ~,
     |                  Документ,ДвиженияИграницыПериода,,
     |                  Счет in (Select val From #СпСчет),(ОсновныеСредства,РабочееМесто,КомплектОС)
     |                  ) БИОстаткиОборотыОсновной
     |      left join $Справочник.Подразделение as PO on  PO.id=ОсновнойОстатки.РазделительУчета
     |      left join $Справочник.ОС_Комплекты as KO on  KO.id=ОсновнойОстаткиОбороты.Субконто3
     |      left join $Справочник.ОсновныеСредства as ОС on  ОС.id=ОсновнойОстаткиОбороты.Субконто1
     |      left join $Справочник.ОС_РабочееМесто as РМ on  РМ.id=ОсновнойОстаткиОбороты.Субконто2
     |      left join $Справочник.ОС_ТипОС as ТО on  ТО.id=$ОС.ТипОС
     |      left join $Справочник.Сотрудники as Сотр on  Сотр.id=$РМ.Сотрудник
     |where
     |(БИОсновнойОстаткиОбороты.Субконто1 is not null)
     |
     |      "+?(фЭлементОС.Выбран()=1,"and (БИОсновнойОстаткиОбороты.Субконто1 in (select val from #фЭлементОС))","")+"
     |      "+?(фРабочееМесто.Выбран()=1,"and (БИОсновнойОстаткиОбороты.Субконто2  in (select val from #фРабочееМесто))","")+"
     |      "+?(фНомерКомплекта.Выбран()=1,"and (БИОсновнойОстаткиОбороты.Субконто3 =:фНомерКомплекта)","")+"
     |      "+?(фТипКомплекта.Выбран()=1,"and (ТО.id   in (select val from #фТипКомплекта))","")+"
     |      "+?(фСотрудник.Выбран()=1,"and (Сотр.id in (select val from #фСотрудник))","")+"
     |      "+?(ОтбПодр=1,"and (ОсновнойОстаткиОбороты.РазделительУчета =:фДепартамент)","")+"      
     |";
выдает ошибку при выполнении такого рода :  Meta name parser error: не указан парамер:8717". Не пойму какой параметр надо указать. Подскажите пож-та
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к бухитогам (помогите новичку)
Ответ #1 - 02. Декабря 2009 :: 11:10
Печать  
Ошибка здесь:
Цитата:
     |CASE ВидДокумента
     |      when :"+Мета.ИДДокумента("ПриходнаяОС")+" then [ПриходОС $Документ.ПриходнаяОС]
     |      when :"+Мета.ИДДокумента("РемонтОС")+"then [Ремонт $Документ.РемонтОС]
     |      when :"+Мета.ИДДокумента("СписаниеОС")+"then [Спис $Документ.СписаниеОС]
     |      when :"+Мета.ИДДокумента("ПеремещениеОС")+" then [Перемещ $Документ.ПеремещениеОС]
     |else
     |end

Двоеточие - префикс параметра, ИДДокумента - число. Что вообще должен был обозначить этот CASE?  Озадачен
  

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


1C++

Сообщений: 39
Зарегистрирован: 02. Декабря 2009
Пол: Женский
Re: Запрос к бухитогам (помогите новичку)
Ответ #2 - 02. Декабря 2009 :: 11:43
Печать  
Вообщем задача была следующей. Надо по 01 счету, выбрать ОС, их количество и сумму. А также втащить документы по выбранным  по основным средствам (Приход, расход,списание или перемещение). В документах и возникла вся загвоздка....
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к бухитогам (помогите новичку)
Ответ #3 - 02. Декабря 2009 :: 11:59
Печать  
Напиши вместо CASE:
Right(ПозицияДокумента, 9) [Док $Документ],
ВидДокумента Док_вид,


Убери запятую перед FROM.

Если с типами ничего не напутала, должно заработать. Ну и оптимизировать там есть куда.
  

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


1C++

Сообщений: 39
Зарегистрирован: 02. Декабря 2009
Пол: Женский
Re: Запрос к бухитогам (помогите новичку)
Ответ #4 - 02. Декабря 2009 :: 12:34
Печать  
я так уже пыталась сделать. Пишет что ему не хватает типизации
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к бухитогам (помогите новичку)
Ответ #5 - 02. Декабря 2009 :: 12:42
Печать  
Anna писал(а) 02. Декабря 2009 :: 12:34:
я так уже пыталась сделать. Пишет что ему не хватает типизации

Если сделать так, как в #3 - хватит. Улыбка
  

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


1C++

Сообщений: 39
Зарегистрирован: 02. Декабря 2009
Пол: Женский
Re: Запрос к бухитогам (помогите новичку)
Ответ #6 - 02. Декабря 2009 :: 13:15
Печать  
теперь выдает Line 271: Incorrect syntax near '('. Где я что пропустила?
     |SET NOCOUNT ON
     |Select
     |      РазделительУчета [РазделительУчета $Справочник.Подразделение],
     |      $РМ.Подразделение [Подразделение $Справочник.Подразделение],
     |      Right(ПозицияДокумента, 9) [Док $Документ],
     |      ВидДокумента Док_вид,
     |      Счет [Счет $Счет.Основной],
     |      Субконто1 [Субконто1 $Субконто],
     |      Субконто1_вид,
     |      Субконто2 [Субконто2 $Субконто],
     |      Субконто2_вид,
     |      Субконто3 [Субконто3 $Субконто],
     |      Субконто3_вид,
     |      ОС.Descr as НСубконто1,
     |      РМ.Descr as НСубконто2,
     |      ТО.Descr as НфТипКомплекта,
     |      PO.Descr as НРазделительУчета,
     |      KO.Descr as НСубконто3,
     |      Сотр.Descr as НфСотрудник,
     |      ТО.id [фТипКомплекта $Справочник.ОС_ТипОС],
     |      Сотр.id [фСотрудник $Справочник.Сотрудники],
     |      КоличествоКонечныйОстаток as Колво,
     |      СуммаКонечныйОстаток as Сумма
     | FROM
     |            $БИОстаткиОбороты.Основной(:НачДата,:КонДата~,
     |                                    , , ,
     |                                    (Счет in (Select val From #СпСчет), (ОсновныеСредства,РабочееМесто,КомплектОС),) AS БИОстаткиОборотыОсновной
     |left join $Справочник.Подразделение as PO on  PO.id=ОсновнойОстатки.РазделительУчета
     |left join $Справочник.ОС_Комплекты as KO on  KO.id=ОсновнойОстатки.Субконто3
     |left join $Справочник.ОсновныеСредства as ОС on  ОС.id=ОсновнойОстатки.Субконто1
     |left join $Справочник.ОС_РабочееМесто as РМ on  РМ.id=ОсновнойОстатки.Субконто2
     |left join $Справочник.ОС_ТипОС as ТО on  ТО.id=$ОС.ТипОС
     |left join $Справочник.Сотрудники as Сотр on  Сотр.id=$РМ.Сотрудник   
     |where (ОсновнойОстатки.Субконто1 is not null)
     |      "+?(фЭлементОС.Выбран()=1,"and (ОсновнойОстатки.Субконто1 in (select val from #фЭлементОС))","")+"
     |      "+?(фРабочееМесто.Выбран()=1,"and (ОсновнойОстатки.Субконто2  in (select val from #фРабочееМесто))","")+"
     |      "+?(фНомерКомплекта.Выбран()=1,"and (ОсновнойОстатки.Субконто3 =:фНомерКомплекта)","")+"
     |      "+?(фТипКомплекта.Выбран()=1,"and (ТО.id   in (select val from #фТипКомплекта))","")+"
     |      "+?(фСотрудник.Выбран()=1,"and (Сотр.id in (select val from #фСотрудник))","")+"
     |      "+?(ОтбПодр=1,"and (ОсновнойОстатки.РазделительУчета =:фДепартамент)","")+"
     |";                                          
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к бухитогам (помогите новичку)
Ответ #7 - 02. Декабря 2009 :: 13:18
Печать  
(Счет in (Select val From #СпСчет)

Не хватает закрывающей скобки.
  

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


1C++

Сообщений: 39
Зарегистрирован: 02. Декабря 2009
Пол: Женский
Re: Запрос к бухитогам (помогите новичку)
Ответ #8 - 02. Декабря 2009 :: 13:29
Печать  
а где именно там можно оптимизировать? Подскажите пожта
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к бухитогам (помогите новичку)
Ответ #9 - 02. Декабря 2009 :: 13:53
Печать  
Собственно, всё написано в документации по AccountsRecordset. Круглые глаза

Перенеси условия внутрь ВТ. Если #СпСчет делалась методом УложитьСписокОбъектов, условие по счёту тоже перенеси в секцию Условие. Если по всем счетам из #СпСчет порядок видов субконто одинаковый, задай их, как (Субконто1, Субконто2, Субконто3).
  

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