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


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 29. Июня 2008
Получение реквизитов при выборе оборотов
29. Июня 2008 :: 08:59
Печать  
Есть регистр ПартииНаличие.
     Измерения : Номенклатура;
     Рессурсы - Количество, СуммаРуб;
     Реквизиты - КодОперации, Выручка.

Вопрос: Как выбрать в таблицу вместе с суммарными оборотами и суммарное значение реквизита Выручка.
Вот по нижеследующему запросу Выбираются все обороты, А как добавить в таблицу "Выручка " ?

     ТекстЗапроса = "SELECT  
     |      Рег.Период as Период,
     |      Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],  
     |      SUM(Рег.КоличествоРасход) as ОстатокТовараРасход,
     |      SUM(Рег.КоличествоПриход) as ОстатокТовараПриход,      
     |      SUM(Рег.СуммаРубПриход) as ПрихСтоимость,
     |      SUM(Рег.СуммаРубРасход) as РасхСтоимость
     |
     |FROM
     |      $РегистрОбороты.ПартииНаличие(:ДатаНачала, :ДатаКонца~,
     |        День, ,
     |   (КодОперации = :КО1) OR
     |      (КодОперации = :КО2) OR
     |      (КодОперации = :КО3) OR
     |      (КодОперации = :КО4) OR
     |      (КодОперации = :КО5),
     |      (Номенклатура),(Количество,СуммаРуб)) as Рег
     |GROUP BY Период, Номенклатура
     |ORDER BY Период, Номенклатура ";

P.S. В условии ВТ  раньше было КодОперации IN (SELECT Val FROM #КО) - Здесь уложенный список не работает, пришлось передавать текстовыми параметрами все нужные значения для КодОперации.
« Последняя редакция: 30. Июня 2008 :: 10:38 - Shavkat »  
Наверх
 
IP записан
 
mash
1c++ donor
Отсутствует


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение реквизитов при выборе оборотов
Ответ #1 - 30. Июня 2008 :: 06:29
Печать  
Виртуальные таблицы тут не подойдут. Юзай таблицу движений регистра $Регистр.ПартииНаличие это будет проще.
  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение реквизитов при выборе оборотов
Ответ #2 - 30. Июня 2008 :: 07:44
Печать  
Примерно так:

Код
Выбрать все
 ТекстЗапроса = "SELECT  
     |      CONVERT(DateTime,LEFT(Журн.DateTime,8),112) as День,
     |      $Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],    
     |      SUM($Рег.Количество*((Рег.DEBKRED+1)%2)) as КвоРасход,
     |      SUM($Рег.Количество*Рег.DEBKRED) as КвоПриход,      
     |      SUM($Рег.СуммаРуб*((Рег.DEBKRED+1)%2)) as ПрихСтоимость,
     |      SUM($Рег.СуммаРуб*Рег.DEBKRED) as РасхСтоимость
     |
     |FROM  
     |      $РегистрОбороты.ПартииНаличие AS Рег (NOLOCK)
     |      INNER JOIN _1SJOURN AS Журн (NOLOCK) ON (Рег.IDDOC = Журн.IDDOC)
     |WHERE
     |       Журн.Date_TimeIDDOC >= :ДатаНачала
     |       Журн.Date_TimeIDDOC <= :ДатаКонца
     |       AND $Рег.КодОперации IN (SELECT Val FROM #КО)
     |GROUP BY День, Номенклатура
     |Order By День, Номенклатура"; 


  
Наверх
IP записан
 
Shavkat
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 29. Июня 2008
Re: Получение реквизитов при выборе оборотов
Ответ #3 - 30. Июня 2008 :: 09:54
Печать  
Как с оборотами по регистрам я разобрался. Сейчас у меня никак не получается запрос по движениям регистра с фильтром по датам и значению реквизита. Киньте, Пж, кто-нибудь примерчик с выборкой по реквизитам и датам из регистра. И еще надо в таблице выборки получить документ движения. (Не подумайте, пж, что слишком много хочу и сразу. Просто только начинаю изучать прямые запросы). Кстати, г. pvase по Вашему тексту запрос не прошел - ругается "Meta name parser error: неизвестное метаимя или алиас "$Рег""
  
Наверх
 
IP записан
 
GEORG
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 43
Зарегистрирован: 15. Мая 2008
Re: Получение реквизитов при выборе оборотов
Ответ #4 - 01. Июля 2008 :: 04:02
Печать  
Запрос4=СоздатьОбъект("ODBCRecordSet");   
     РегОстатковДв=глМета.ИмяТаблицыДвижений("КнигаПродаж");      
     Запрос4.УстановитьТекстовыйПараметр("ВыбФирма",Фирма);
     //Запрос4.УстановитьТекстовыйПараметр("Зач",Перечисление.Движения.ЗачетАванса);
     Запрос4.УстановитьТекстовыйПараметр("Опл",Перечисление.Движения.Оплата); 
     Запрос4.УстановитьТекстовыйПараметр("НачДата1",ДНач);
     Запрос4.УстановитьТекстовыйПараметр("МинОплата1",МинОплата);
     Запрос4.УстановитьТекстовыйПараметр("КонДата1",ДКон); 
     Всего="SP"+глМета.ИДРесурсаРегистра("КнигаПродаж","Всего");
     Фир="SP"+глМета.ИДИзмеренияРегистра("КнигаПродаж","Фирма"); 
     Аге="SP"+глМета.ИДИзмеренияРегистра("КнигаПродаж","Агент");
     Контр="SP"+глМета.ИДИзмеренияРегистра("КнигаПродаж","Контрагент");
     Движ="SP"+глМета.ИДРеквизитаРегистра("КнигаПродаж","Движение");
     Док="SP"+глМета.ИДИзмеренияРегистра("КнигаПродаж","ДокументОплаты");
     Запрос4.УстановитьТекстовыйПараметр("МинОплата1",МинОплата);
     Запрос4.УстановитьТекстовыйПараметр("Просрочка",Просрочка1);
     ТекстЗапроса4 ="
     |SELECT
     |REG."+Фир+"  As Фирма,
     |REG."+Контр+"  AS Контр,
     |REG."+Аге+"  AS Агент,
     |(DBO.sp_tohex(J.iddocdef,4)+ REG.IDDOC)   As Док ,   
     |CAST(LEFT(J.Date_Time_IDDoc, 8) as DateTime) as ДатаДок,
     |REG."+Док+"  AS ДокОплаты,   
     |CAST(LEFT(R.Date_Time_IDDoc, 8) as DateTime) as ДатаДок1, 
     |REG."+Движ+"  AS Движение,
     |REG."+Всего+" AS Всего,
     |REG.LINENO_  AS Ном 
     |FROM "+РегОстатковДв+" AS REG INNER JOIN _1SJOURN AS J ON  J.IDDOC = REG.IDDOC
     |                               INNER JOIN _1SJOURN AS R ON  R.IDDOC = RIGHT(REG."+Док+",9)
     |WHERE (J.DATE_TIME_IDDOC BETWEEN :НачДата1 AND :КонДата1)
     | AND   (R.DATE_TIME_IDDOC <:КонДата1)
     | AND   (REG."+Фир+" = :ВыбФирма)
     | AND CAST(LEFT(J.Date_Time_IDDoc, 8) as DateTime)-CAST(LEFT(R.Date_Time_IDDoc, 8) as DateTime)> :Просрочка
     |";
     Если Агент.Выбран()=1 Тогда 
           Запрос4.УстановитьТекстовыйПараметр("ВыбАгент",Агент);
           ТекстЗапроса4 =ТекстЗапроса4 +"
           | AND   (REG."+Аге+" = :ВыбАгент) 
           |";
     КонецЕсли;
     ТекстЗапроса4 =ТекстЗапроса4 +"
     | AND   (REG."+Всего+" >= :МинОплата1)
     | AND   (REG."+Движ+" = :Опл)   
     |ORDER BY  REG."+Аге+",ДатаДок
     |";
  
Наверх
 
IP записан
 
Shavkat
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 29. Июня 2008
Re: Получение реквизитов при выборе оборотов
Ответ #5 - 01. Июля 2008 :: 07:06
Печать  
ТекстЗапроса2 = "SELECT   
     |      CAST(LEFT(J.Date_Time_IDDoc, 8) as DateTime) as День,
     |      $Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],
     |      SUM($Рег.ПродСтоимость * ((Рег.DEBKRED + 1) % 2)) as ВыручкаМинус,
     |      SUM($Рег.ПродСтоимость * Рег.DEBKRED) as ВыручкаПлюс
     |
     |FROM  $Регистр.ПартииНаличие AS Рег (NOLOCK)
    |INNER JOIN _1SJOURN AS J ON  J.IDDOC = Рег.IDDOC 
     |   
     |WHERE (J.DATE_TIME_IDDOC BETWEEN :ДатаНачала  AND  :ДатаКонца)
     |       AND (($Рег.КодОперации = :КО1) OR
     |                  ($Рег.КодОперации = :КО2) OR
     |                  ($Рег.КодОперации = :КО3) OR
     |                  ($Рег.КодОперации = :КО4) OR
     |                  ($Рег.КодОперации = :КО5))
     |GROUP BY День, Номенклатура
     |Order By День, Номенклатура";

ЧТО НЕ ТАК ?!!!
Выплевывает ошибку

State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'День'.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Получение реквизитов при выборе оборотов
Ответ #6 - 01. Июля 2008 :: 07:18
Печать  
group by CAST(LEFT(J.Date_Time_IDDoc, 8) as DateTime), $Рег.Номенклатура
  

1&&2&&3
Наверх
 
IP записан
 
Shavkat
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 29. Июня 2008
Re: Получение реквизитов при выборе оборотов
Ответ #7 - 01. Июля 2008 :: 07:30
Печать  
Огромное спасибо ! Заработала !!!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать