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



Сообщений: 4
Зарегистрирован: 20. Марта 2007
Пол: Мужской
Регистр оборотов - help начинающему
20. Марта 2007 :: 09:01
Печать  
Помогите перевести запрос на tsql Озадачен
Код
Выбрать все
|Период с ВыбНачПериода по ВыбКонПериода;
|Ном = Регистр.Продажи.Номенклатура;
|Контр = Регистр.Продажи.Покупатель;
|Кол = Регистр.Продажи.Количество;
|СуммаРег = Регистр.Продажи.ПродСтоимость;
|Док = Регистр.Продажи.ТекущийДокумент;
|Функция Количество = Сумма(Кол);
|Функция СуммаВал = Сумма(СуммаРег) ;
|Группировка Контр без групп;
|Группировка Док;
|Группировка Ном без групп;";
Если рд_Кроме=1 Тогда
     ТекстЗапроса = ТекстЗапроса + "
     |Условие(НЕ(Контр в ВыбКонтрагенты));";
Иначе
     ТекстЗапроса = ТекстЗапроса + "
     |Условие(Контр в ВыбКонтрагенты);";
КонецЕсли;

ТекстЗапроса = ТекстЗапроса +"
|Условие((Док.Вид() = ""Реализация"") или (Док.Вид() = ""ОтчетКомиссионера""));
|Условие(Ном в лСЗНоменкл);
 


Измерения: Номенклатура, Покупатель, Поставщик, Фирма
Ресурсы: Себестоимость, ПродСтоимость, Количество, СебестоимостьВ, ПродСтоимостьВ, КоличествоВ

Флаг Быстрая обработка движений выключен


[font=Courier New][/font][size=12][/size]
  
Наверх
 
IP записан
 
newsky
YaBB Newbies
*
Отсутствует



Сообщений: 4
Зарегистрирован: 20. Марта 2007
Пол: Мужской
Re: сам себе
Ответ #1 - 20. Марта 2007 :: 12:43
Печать  
Вообще в запросе интересует использование ВТ и наложение фильтров, необходимо ли делать INNER JOIN с 1sJourn по iddoc?

  
Наверх
 
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Регистр оборотов - help начинающему
Ответ #2 - 20. Марта 2007 :: 13:04
Печать  
Вопрос в том, ДЛЯ ЧЕГО это нужно? Бездумно делать join не стоит. В этом запросе, имхо, стоит т.к. есть условие по периоду. Дата хранится в _1sjourn, а не в таблице документа (регистра), так что с помощью inner join _1sjourn будет выполнено ограничение выборки.
Относительно ВТ. Сам стараюсь их использовать для "простых" запросов - получить остатки по-хитрому, или когда нужны остатки и обороты. Для начинающих, опять же имхо, лучше посмотреть по Отладка(1) во что виртуальная таблица разворачивается и ручками с текстом запроса поковыряться. Считаю, что так можно достичь понимания того, как оно работает
  
Наверх
 
IP записан
 
newsky
YaBB Newbies
*
Отсутствует



Сообщений: 4
Зарегистрирован: 20. Марта 2007
Пол: Мужской
Re: Регистр оборотов - help начинающему
Ответ #3 - 20. Марта 2007 :: 13:37
Печать  
"...И хотелось бы узнать боле подробно про использование ВТ. "
Вот что получилось с моими условиями
Код
Выбрать все
|$РегистрОбороты.Продажи(:НачПериода,:КонПериода,,
|                 INNER JOIN _1SJourn as Жур ON Жур.IDDoc = Рег.IDDoc
|                 AND (Жур.IDDocDef = $ВидДокумента.Реализация) OR (Жур.IDDocDef = $ВидДокумента.ОтчетКомиссионера),
|                 (Номенклатура,Покупатель),,ПродСтоимость,Количество) as Рег
 



1с сообщает : Meta name parser error: недопустимое значение параметра "$РегистрОбороты.Продажи" (6)
Хде баг?
  
Наверх
 
IP записан
 
Shtam
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 14. Ноября 2006
Re: Регистр оборотов - help начинающему
Ответ #4 - 21. Марта 2007 :: 07:57
Печать  
РегистрОбороты.Продажи(:НачПериода,:КонПериода,,
|                 INNER JOIN _1SJourn as Жур ON Жур.IDDoc = Рег.IDDoc
|                 AND (Жур.IDDocDef = $ВидДокумента.Реализация) OR (Жур.IDDocDef = $ВидДокумента.ОтчетКомиссионера),
|                , (Номенклатура,Покупатель),(ПродСтоимость,Количество)) as Рег

может так?
  
Наверх
 
IP записан
 
newsky
YaBB Newbies
*
Отсутствует



Сообщений: 4
Зарегистрирован: 20. Марта 2007
Пол: Мужской
Re: Регистр оборотов - help начинающему
Ответ #5 - 22. Марта 2007 :: 08:31
Печать  
Shtam писал(а) 21. Марта 2007 :: 07:57:
РегистрОбороты.Продажи(:НачПериода,:КонПериода,,
|                 INNER JOIN _1SJourn as Жур ON Жур.IDDoc = Рег.IDDoc
|                 AND (Жур.IDDocDef = $ВидДокумента.Реализация) OR (Жур.IDDocDef = $ВидДокумента.ОтчетКомиссионера),
|                , (Номенклатура,Покупатель),(ПродСтоимость,Количество)) as Рег

может так?

Да, верно подсказал :
$РегистрОбороты.<ИмяРегистра>([<НачалоПериода>][, <КонецПериода>][, <Периодичность>][, <Соединение>][,<Условие>][,<Измерение>][,<Ресурс>]) [as <Алиас>]

Вот только как еще условие вставить
Код
Выбрать все
Если рд_Кроме=1 Тогда
     ТекстЗапроса = ТекстЗапроса + "
     |Условие(НЕ(Контр в ВыбКонтрагенты));";
Иначе
     ТекстЗапроса = ТекстЗапроса + "
     |Условие(Контр в ВыбКонтрагенты);";
КонецЕсли;

 

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