Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) помогите новичку с запросом (число прочтений - 11057 )
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
помогите новичку с запросом
16. Января 2007 :: 03:57
Печать  
Имеется регистр Реклама

Структура -
Измерения - Издание
           Контрагент
           Рубрика
           Номер
           Документ
           менеджер
Реквизиты - ВидПлатежа
           КодОперации
Ресурсы   - Сумма


как преобразовать вот такой запрос


ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)

    |Период с ДатаНач по ДатаКон;
    |ТекДок     = Регистр.Реклама.Документ;
    |Издание    = Регистр.Реклама.Издание;
    |Контрагент = Регистр.Реклама.Контрагент;
    |Рубрика    = Регистр.Реклама.Рубрика;
    |Размер     = ент.ПеремещениеРекламы.Размер;
    |ВидПлатежа = Регистр.Реклама.ВидПлатежа;
    |Выпуски    = Регистр.Реклама.Номер;
    |Менеджер   = Регистр.Реклама.Менеджер;
    |Сумма      = Регистр.Реклама.Сумма;
    |КодОперации= Регистр.Реклама.КодОперации;
    |Функция СуммаНач    = НачОст(Сумма);
    |Функция СуммаКон    = КонОст(Сумма);   
    |Функция СуммаБанк   = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.БН));
    |Функция СуммаНал    = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Н));
    |Функция СуммаНал1   = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Н1));
    |Функция СуммаБеспл  = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Бесплатно));
    |Функция СуммаБартер = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Бартер));
    |Функция СуммаУвеличения = Расход(Сумма) когда((КодОперации=Перечисление.КодОперации.Перемещение));
    |Функция СуммаУменьшения = Приход(Сумма) когда((КодОперации=Перечисление.КодОперации.Перемещение));
    |Группировка Рубрика;
    |Группировка Контрагент без групп;
    |Группировка Выпуски;
    |Группировка ТекДок;
    |"//}}ЗАПРОС



в запрос 1с++
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: помогите новичку с запросом
Ответ #1 - 16. Января 2007 :: 04:46
Печать  
формат ИБ? SQL/DBF

1) Если SQL, то можно воспользоваться виртуальной таблиц (ВТ) РегистрОстаткиОбороты.Реклама(...) описание ее имеется в документации к 1С++

2) Если DBF, то нужно "вручную" объединять таблицы итогов и движений регистра Реклама
  
Наверх
 
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #2 - 16. Января 2007 :: 04:53
Печать  
сорри забыл сказать
база СКУЛЬ

проблема в том что не могу понять как получить реквизиты регистров при использовании "РЕГИСТРЫОСТАТКИОБОРОТЫ"
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #3 - 16. Января 2007 :: 04:56
Печать  
|Функция СуммаНал    = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Н));

вот это как реализовать
/////////////////////////////////////////////////////////////////////////
когда((ВидПлатежа=Перечисление.ВидыПлатежей.Н)
/////////////////////////////////////////////////////////////////////////
видплатежа это реквизит а его я не могу получить
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: помогите новичку с запросом
Ответ #4 - 16. Января 2007 :: 05:23
Печать  
тогда проще объединить ВТ Остатки и ВТ Обороты таблицу движений Регистра(здесь можно фильтровать по реквизитам), так как оптимизировать отбор оборотов при такой фильтрации все равно не получится
  
Наверх
 
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #5 - 16. Января 2007 :: 05:25
Печать  
спасибо за идею - обязательно попробую
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: помогите новичку с запросом
Ответ #6 - 16. Января 2007 :: 09:20
Печать  
а зачем объединять, есл иможно заюзать ВТ РегистрОстаткиОбороты?
или что то пропустил?
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: помогите новичку с запросом
Ответ #7 - 16. Января 2007 :: 09:51
Печать  
Цитата:
а зачем объединять, есл иможно заюзать ВТ РегистрОстаткиОбороты?
или что то пропустил?

по реквизитам там фильтровать не получается (даже если только обороты)
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: помогите новичку с запросом
Ответ #8 - 16. Января 2007 :: 09:59
Печать  
DrACe писал(а) 16. Января 2007 :: 09:51:
по реквизитам там фильтровать не получается (даже если только обороты)

вроде да, не получается... сам не пробовал, приму на веру несколько веток, которые были...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: помогите новичку с запросом
Ответ #9 - 16. Января 2007 :: 18:02
Печать  
Боян, Славко
Я пробовал  Смущённый
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #10 - 24. Января 2007 :: 05:13
Печать  
ни у кого идей не возникло??? как сделать
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #11 - 24. Января 2007 :: 05:16
Печать  
помогите плиз!!! сильно надо
в общем отчет на стандартном запросе длится 208 сек (тока запрос без вывода данных и их обработки то есть проход по группировкам)
а на 1с++ запрос длится 14 сек (ну без некоторых условий) и данные уже в ТЗ только выбрать то что надо и все готово
дело в том что отчет формируется достаточно часто и много времени уходит зря....
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: помогите новичку с запросом
Ответ #12 - 24. Января 2007 :: 05:23
Печать  
Так чего тебе нужно в итоге-то?
Вроде и так все быстро?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Re: помогите новичку с запросом
Ответ #13 - 24. Января 2007 :: 07:52
Печать  
Ему наверно нужен запрос с условиями... Подмигивание
Про:
2: тогда проще объединить ВТ Остатки и ВТ Обороты таблицу движений Регистра(здесь можно фильтровать по реквизитам), так как оптимизировать отбор оборотов при такой фильтрации все равно не получится.

Он наверно забыл ...
Как срочно тебе все это надобно то ?
В чем проблеммы при реализации 2 ?

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


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #14 - 24. Января 2007 :: 08:02
Печать  
ЕСЧЕ раз, все с начала и по проядку:


Имеется регистр Реклама 

Структура - 
Измерения - Издание
          Контрагент
          Рубрика
          Номер
          Документ
          менеджер
Реквизиты - ВидПлатежа
          КодОперации
Ресурсы   - Сумма


как преобразовать вот такой запрос 


ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
 
    |Период с ДатаНач по ДатаКон;
    |ТекДок     = Регистр.Реклама.Документ;
    |Издание    = Регистр.Реклама.Издание;
    |Контрагент = Регистр.Реклама.Контрагент;
    |Рубрика    = Регистр.Реклама.Рубрика;
    |Размер     =
ент.ПеремещениеРекламы.Размер;
    |ВидПлатежа = Регистр.Реклама.ВидПлатежа;
    |Выпуски    = Регистр.Реклама.Номер;
    |Менеджер   = Регистр.Реклама.Менеджер;
    |Сумма      = Регистр.Реклама.Сумма; 
    |КодОперации= Регистр.Реклама.КодОперации;
    |Функция СуммаНач    = НачОст(Сумма);
    |Функция СуммаКон    = КонОст(Сумма);    
    |Функция СуммаБанк   = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.БН));
    |Функция СуммаНал    = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Н));
    |Функция СуммаНал1   = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Н1));
    |Функция СуммаБеспл  = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Бесплатно));
    |Функция СуммаБартер = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Бартер));
    |Функция СуммаУвеличения = Расход(Сумма) когда((КодОперации=Перечисление.КодОперации.Перемещение));
    |Функция СуммаУменьшения = Приход(Сумма) когда((КодОперации=Перечисление.КодОперации.Перемещение));
    |Группировка Рубрика;
    |Группировка Контрагент без групп;
    |Группировка Выпуски;
    |Группировка ТекДок;
    |"//}}ЗАПРОС
 


в запрос 1с++

база СКУЛЬ.

когда((ВидПлатежа=Перечисление.ВидыПлатежей.БН));  - ВидПлатежа - РЕКВИЗИТ РЕГИСТРА
в данном запросе используется услови по РЕКВИЗИТАМ регистра
точнее условия по которым я не могу вставить в конструкцию ОСТАтКИИОБОроты запроса 1с++

и еще как организовать вот это
|Размер     =
ент.ПеремещениеРекламы.Размер;
то есь ТЕКУЩИЙ ДОКУМЕНТ на 1с++



насчет срочности это не супер срочно, меня не четвертуют и ничего не сделают со мной просто хотелось бы облегчить жизни бедным бухам
представьте 5 минут сверки отчета равняются  8 тире 10 минутам ожидания формирования отчета.... бедные
бухи...

могу скинуть полностью модуль отчета.. если это облегчит понимание задачи
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Re: помогите новичку с запросом
Ответ #15 - 24. Января 2007 :: 08:30
Печать  
1) Самый простой (но скорей всего не очень хороший) способ:
внеси нужные тебе реквизиты в регистр в результате сработают  ОСТАтКИИОБОроты.

2) Второй способ составить два запроса:
а) к остаткам
б) к оборотам
в запросе б) можно вставлять нужные тебе условия

и еще как организовать вот это
|Размер     =

Сперва объединяеш с журналом потом с документом
Если не ясно как напишу в FAQ все есть...

3) Подожди дня два ( твой  случай постараюсь предусмотреть сегодня ) Бог даст доделаю
конвертер запросов 1С -->1C++.
« Последняя редакция: 24. Января 2007 :: 09:39 - nikolka »  
Наверх
 
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #16 - 24. Января 2007 :: 08:55
Печать  
первый вариант не канает
представь если запрос формируется 208 сек при таких ИЗМЕРЕНИЯХ запроса, то если добавить...
и все переделывать придется
хотя со временем эту конфу всю переделать хочется на 1с++ по крайней мере отчеты
писал не я сделано все сложновато (доолго все формируется) жутко долго
ок жду
а можно в асю кинуть када будет готово
можно сразу и на мыло
skom(сабака)рамблер(тчк)ру
если не сложно кАнечНо
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: помогите новичку с запросом
Ответ #17 - 24. Января 2007 :: 10:00
Печать  
Совет - ты бы писал более аккуратно и расставлял бы некоторые знаки препинания. Очень неудобно читать Печаль
ИМХО Тогда и ответ более вероятен.

ЗЫ Ты же не в чате Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
val
Full Member
***
Отсутствует


Дорогу осиливает идущий

Сообщений: 137
Зарегистрирован: 07. Июля 2006
Re: помогите новичку с запросом
Ответ #18 - 24. Января 2007 :: 13:07
Печать  
(14) "когда((ВидПлатежа=Перечисление.ВидыПлатежей.БН)); "

When $РегРекл.ВидПлатежа='   9YF   '
Конечно, у тебя будет не 9YF, а другой - свой код., соответствущий Перечисление.ВидыПлатежей.БН.
  
Наверх
 
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #19 - 25. Января 2007 :: 05:07
Печать  
val писал(а) 24. Января 2007 :: 13:07:
(14) "когда((ВидПлатежа=Перечисление.ВидыПлатежей.БН)); "

When $РегРекл.ВидПлатежа='   9YF   '
Конечно, у тебя будет не 9YF, а другой - свой код., соответствущий Перечисление.ВидыПлатежей.БН.


ВИДПЛАТЕЖА - реквизит Регистра а не измерение
а в конструкции ОСТАТКИОБОРОТЫ не получается получить доступ к реквизитам регистра
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
grayrat
Junior Member
**
Отсутствует



Сообщений: 99
Местоположение: Russia, Moscow
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: помогите новичку с запросом
Ответ #20 - 25. Января 2007 :: 05:48
Печать  
Уже говорили выше - тебе поможет объединение вт остатков и вт оборотов. Хотя на самом деле, имхо, лучше использовать вт оборотов и таблицу движений регистра. Из таблицы движений получить нужные тебе движения, отобранные по реквизитам и сгрупировать их. Типа этого:
Код
Выбрать все
ТекстЗапроса = "
|Select
|  $r.Рубрика,
|  $r.Контрагент,
|  $r.Номер,
|  j.DATE_TIME_IDDOC,
|  SUM( case when $r.ВидПлатежа = '" + MetaDataWork.ЗначениеВСтрокуБД(Перечисление.ВидыПлатежей.БН) + "' AND r.DebKred = 1 then $r.Сумма else 0 end) СуммаБанк,
|  SUM( case when $r.ВидПлатежа = '" + MetaDataWork.ЗначениеВСтрокуБД(Перечисление.ВидыПлатежей.Н) + "' AND r.DebKred = 1 then $r.Сумма else 0 end) СуммаНал,
|  SUM( case when $r.ВидПлатежа = '" + MetaDataWork.ЗначениеВСтрокуБД(Перечисление.ВидыПлатежей.Н1) + "' AND r.DebKred = 1 then $r.Сумма else 0 end) СуммаНал1
|
|From $Регистр.Реклама r (nolock) inner join _1sJourn j (nolock) ON r.IDDOC = j.IDDOC
|Where j.DATE_TIME_IDDOC Between :вДатаНач And :вДатаКон~
|Group By $r.Рубрика, $r.Контрагент, $r.Номер, j.DATE_TIME_IDDOC
|";
 


, а затем к этому приджойнить остатки из ВТ остатков
  
Наверх
 
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #21 - 25. Января 2007 :: 09:40
Печать  
кстати что такое NOLOCK (я еще не весь СКУЛЬ знаю... тока учу)
кстати вот такой у меня запрос получился
вместо стандартного осталось тока ИННЕРОМ прикрутить условие по ПЕРЕЧИСЛЕНИЮ
     ТекстЗапроса = "
           |SELECT DISTINCT   
           |      
           |      Выборка.Рубрика as [Рубрика $Справочник.Рубрики],
           |      Выборка.Контрагент as [Контрагент $Справочник.Контрагенты],
           |   Выборка.Номер as Номер,
           |   Выборка.Документ as [Документ $Документ],
         //|      $.Документ.ВидПлатежа as [ВидПлатежа $Перечисление.ВидыПлатежей],
           |      Выборка.НачОст as НачальныйОстаток,
           |      Выборка.Приход as Приход,
           |      Выборка.Расход as Расход,
           |      Выборка.КонОст as КонечныйОстаток,
           |   Выборка.ГруппировкаРубрика as ИтогиПоРубрикам,
           |      Выборка.ГруппировкаКонтры as ИтогиПоКонтрам,
           |      Выборка.ГруппировкаНомер as ИтогиПоНомерам,
           |      Выборка.ГруппировкаДокумент as ИтогиПоДокументам
           |FROM
           |(SELECT
           |  Рег.Издание as [Издание],
           |  Рег.Рубрика as [Рубрика],
           |  Рег.Контрагент as [Контрагент],
           |  Рег.Номер as Номер,
           |  Рег.Документ as [Документ],
           |  Рег.Менеджер as [Менеджер],
           |  SUM(Рег.СуммаНачальныйОстаток) as НачОст,
           |  SUM(Рег.СуммаПриход) as Приход,
           |  SUM(Рег.СуммаРасход) as Расход,
           |  SUM(Рег.СуммаКонечныйОстаток) as КонОст,
           |  GROUPING (Рег.Рубрика) as ГруппировкаРубрика,
           |  GROUPING (Рег.Контрагент) as ГруппировкаКонтры,
           |  GROUPING (Рег.Номер) as ГруппировкаНомер,
           |  GROUPING (Рег.Документ) as ГруппировкаДокумент
           |FROM
           |  $РегистрОстаткиОбороты.Реклама(:ДатаНач,:ДатаКон~,,,,
           |  Издание = :ВыбИздание AND Контрагент = :ВыбКонтр,
           |  (Издание,Рубрика,Контрагент,Номер,Документ,Менеджер),(Сумма)) as Рег
           |GROUP BY
           |  Рег.Издание, Рег.Контрагент, Рег.Рубрика, Рег.Номер, Рег.Документ, Рег.Менеджер,
         |  Рег.СуммаНачальныйОстаток, Рег.СуммаПриход, Рег.СуммаРасход, Рег.СуммаКонечныйОстаток WITH ROLLUP) as Выборка
           //|INNER JOIN
           //| 
           |ORDER BY
       |  Выборка.Рубрика, Выборка.Контрагент, Выборка.Номер, Выборка.Документ,
           |  Выборка.ГруппировкаРубрика DESC, Выборка.ГруппировкаКонтры DESC,
           |  Выборка.ГруппировкаНомер DESC,
           |  Выборка.ГруппировкаДокумент DESC
           |";

подскажите это большой изврат???? как я сделал
и подскажите как правильно прикрутить условие по Перечислениям (ВидПлатежа) через иннер
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Re: помогите новичку с запросом
Ответ #22 - 26. Января 2007 :: 10:43
Печать  
Не суетись. 
Описываю как прикручивать функции ...
(Если успею сделаю функци для таких как у тебя случаев сделаю автоматом в конвертере)
подсказка для функции:
добавляеш в таблицу с итогами регистра  debkred например
     |   debkred
     |from $Регистр.ПартииНаличие t1 (NOLOCK)
при сумировании используешь case(аналог if в SQL)
ПриходС=Sum(case when debkred>0 then 0 else vt_Обороты.Сумма end),

Можешь просто подождать функции как у тебя  я постараюсь прикрутить к конвертеру сегодня.

Постараюсь сегодня помочь тебе  решить твою задачу.
Подумай как ты будеш прекручивать группировки,
пока времени прикрутить группировки к конвертеру нет.

Выкладываю конвертер напиши что он тебе выдал для твоего случая.

Всего наилучшего.
  

4.ert ( 37 KB | Загрузки )
Наверх
 
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #23 - 27. Января 2007 :: 04:22
Печать  
вот это
     |Период с ДатаНач по ДатаКон;      
     |ТекДок     = Регистр.Реклама.Документ;      
     |Издание    = Регистр.Реклама.Издание;      
     |Контрагент = Регистр.Реклама.Контрагент;      
     |Рубрика    = Регистр.Реклама.Рубрика;      
     |Размер     = ент.ПеремещениеРекламы.Размер;      
     |ВидПлатежа = Регистр.Реклама.ВидПлатежа;      
     |Выпуски    = Регистр.Реклама.Номер;      
     |Менеджер   = Регистр.Реклама.Менеджер;      
     |Сумма      = Регистр.Реклама.Сумма;      
     |КодОперации= Регистр.Реклама.КодОперации;      
     |Функция СуммаНач    = НачОст(Сумма);      
     |Функция СуммаКон    = КонОст(Сумма);      
     |Функция СуммаБанк   = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.БН));      
     |Функция СуммаНал    = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Н));      
     |Функция СуммаНал1   = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Н1));      
     |Функция СуммаБеспл  = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Бесплатно));      
    |Функция СуммаБартер = Приход(Сумма) когда((ВидПлатежа=Перечисление.ВидыПлатежей.Бартер));            
    |Функция СуммаУвеличения = Расход(Сумма) когда((КодОперации=Перечисление.КодОперации.Перемещение));            
     |Функция СуммаУменьшения = Приход(Сумма) когда((КодОперации=Перечисление.КодОперации.Перемещение));      
     |Группировка Рубрика;      
     |Группировка Контрагент без групп;      
     |Группировка Выпуски;      
     |Группировка ТекДок;      

конвертировал вот в это

select
vt_Продажы.ВидПлатежа as [ВидПлатежа $Перечисление.ВидыПлатежей],
vt_Продажы.Выпуски as Выпуски,
vt_Продажы.Издание as [Издание $Справочник.Издания],
vt_Продажы.КодОперации as [КодОперации $Перечисление.КодОперации],
vt_Продажы.Контрагент as [Контрагент $Справочник.Контрагенты],
vt_Продажы.Менеджер as [Менеджер $Справочник.Менеджеры],
vt_Продажы.Размер as [Размер $Справочник.РазмерРекламы],
vt_Продажы.Рубрика as [Рубрика $Справочник.Рубрики],
vt_Продажы.Сумма as Сумма,
vt_Продажы.ТекДок as [ТекДок $Документ], vt_Продажы.debkred as debkred
from() as vt_Продажы
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #24 - 29. Января 2007 :: 05:32
Печать  
           |Select
           |  $Рег.Менеджер as [Менеджер $Справочник.Менеджеры],
           |  $Рег.Рубрика as [Рубрика $Справочник.Рубрики],
           |  $Рег.Контрагент as [Контрагент $Справочник.Контрагенты],
           |  $Рег.Номер as Номер,
           |  SUM(case when Рег.DebKred = 1 then -$Рег.Сумма else 0 end) as ВыходРекламы,
           |  SUM(case when $Рег.ВидПлатежа = :Банк AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Банк,
           |  SUM(case when $Рег.ВидПлатежа = :Нал AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Наличка,
           |  SUM(case when $Рег.ВидПлатежа = :Допл AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Доплата,
           |  SUM(case when $Рег.ВидПлатежа = :Беспл AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Бесплатно,
           |  SUM(case when $Рег.ВидПлатежа = :Барт AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Бартер
           |From $Регистр.Реклама as Рег
           |INNER JOIN  _1sJourn as Жур ON Рег.IDDOC = Жур.IDDOC
           |Where $Рег.Издание = :ВыбИздание  AND Жур.DATE_TIME_IDDOC Between :ДатаНач AND :ДатаКон~
           |GROUP BY
           |      $Рег.Менеджер, $Рег.Рубрика, $Рег.Контрагент, $Рег.Номер
           |";

как в этом запросе получить в выходной ТЗ документ из регистра по виду документа "ПриемРекламы" что бы ... в общем последний документ данного типа
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: помогите новичку с запросом
Ответ #25 - 29. Января 2007 :: 05:45
Печать  
skom писал(а) 29. Января 2007 :: 05:32:
как в этом запросе получить в выходной ТЗ документ из регистра по виду документа "ПриемРекламы" что бы ... в общем последний документ данного типа

ничего не понятно
  
Наверх
 
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #26 - 29. Января 2007 :: 07:35
Печать  
сорри за неясность
из этого запроса мне нужно еще одно значение для полноты картины
надо в колонку (новую) ТЗ (ну по выполнении запроса результат в ТЗ)
получить ссылку на документ, по виду дока "Прием рекламы" и самый последний по дате!!!
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Re: помогите новичку с запросом
Ответ #27 - 29. Января 2007 :: 08:36
Печать  
В подзапросе вычислишь мах дату данного документа а потом возмешь по этому условию.
Если не понятно то постараюсь написать пример.
Я гляжу твой запрос уже принял человеческий  вид, молодец растешь
прямо на глазах Подмигивание.
Успехов.  Подмигивание

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


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #28 - 29. Января 2007 :: 09:22
Печать  
стараюсь...
и все таки хотелось бы примерчик плз...
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: помогите новичку с запросом
Ответ #29 - 29. Января 2007 :: 09:47
Печать  
     ТекстЗапроса = "
           |Select
           |  $Рег.Менеджер as [Менеджер $Справочник.Менеджеры],
           |  $Рег.Рубрика as [Рубрика $Справочник.Рубрики],
           |  $Рег.Контрагент as [Контрагент $Справочник.Контрагенты],
           |  $Рег.Номер as Номер,
           |  Case when Жур.IDDOCDef = $ВидДокумента.ПриемРекламы then Рег.IDDOC else $ПустойИД end as [Док $Документ.ПриемРекламы],
           |  SUM(case when Рег.DebKred = 1 then -$Рег.Сумма else 0 end) as ВыходРекламы,
           |  SUM(case when $Рег.ВидПлатежа = :Банк AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Банк,
           |  SUM(case when $Рег.ВидПлатежа = :Нал AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Наличка,
           |  SUM(case when $Рег.ВидПлатежа = :Допл AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Доплата,
           |  SUM(case when $Рег.ВидПлатежа = :Беспл AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Бесплатно,
           |  SUM(case when $Рег.ВидПлатежа = :Барт AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Бартер
           |From $Регистр.Реклама as Рег
           |INNER JOIN  _1sJourn as Жур ON Рег.IDDOC = Жур.IDDOC
           |Where $Рег.Издание = :ВыбИздание  AND Жур.DATE_TIME_IDDOC Between :ДатаНач AND :ДатаКон~
           |GROUP BY
           |      $Рег.Менеджер, $Рег.Рубрика, $Рег.Контрагент, $Рег.Номер, Жур.IDDOCDef, Рег.IDDOC
           |";

а дальше???
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Re: помогите новичку с запросом
Ответ #30 - 29. Января 2007 :: 11:32
Печать  
так должена  была  выглядеть часть твоего исходного
запроса связаная с движениями
vt_Продажы.ТекДок as [ТекДок $Документ],
vt_Продажы.Издание as [Издание $Справочник.Издания],
vt_Продажы.Контрагент as [Контрагент $Справочник.Контрагенты],
vt_Продажы.Рубрика as [Рубрика $Справочник.Рубрики],
vt_Продажы.Размер as [Размер $Справочник.РазмерРекламы],
COALESCE(Размер1,Размер2) as as [Размер $Справочник.РазмерРекламы],
vt_Продажы.ВидПлатежа as [ВидПлатежа $Перечисление.ВидыПлатежей],
vt_Продажы.Выпуски as Выпуски,
vt_Продажы.Менеджер as [Менеджер $Справочник.Менеджеры],
vt_Продажы.Сумма as Сумма,
vt_Продажы.КодОперации as [КодОперации $Перечисление.КодОперации]
vt_Продажы.debkred as debkred
from(
|select vt_Продажы2.*,              
|$Документ.ПеремещениеРекламы.Размер as Размер2  
| from(      select vt_Продажы1.*,              
|            $Документ.ПриемРекламы.Размер as Размер1  
|             from(                                                                                    
                 | $Рег.Менеджер.Документ   as ТекДок,
                 | $Рег.Издание Издание,
                 | $Рег.Контрагент as Контрагент ,
                 | $Рег.Рубрика as Рубрика,
                 | Жур.IDDOC   as ТекущийДокум,
                 | $Рег.ВидПлатежа as ВидПлатежа,
                 | $Рег.Номер as Выпуски,
                 | $Рег.Менеджер as Менеджер,    
                 | $Рег.Сумма as Сумма,    
                 | $Рег.КодОперации as КодОперации
                 |From $Регистр.Реклама as Рег
                 |INNER JOIN _1sJourn as Жур ON Рег.IDDOC = Жур.IDDOC
                 |Where Жур.DATE_TIME_IDDOC Between :ДатаНач AND :ДатаКон~) as vt_Продажы1
           | Left outer join $Документ.ПриемРекламы as Документ on  Документ.IDDOC=vt_Продажы1.ТекущийДокумент) as vt_Продажы2
| Left outer join $Документ.ПеремещениеРекламы as Документ on Документ.IDDOC=vt_Продажы2.ТекущийДокумент)
) as vt_Продажы
SUM(case when $Рег.ВидПлатежа = :Банк AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Банк,
          |  SUM(case when vt_Продажы.ВидПлатежа = :Нал AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Наличка,
          |  SUM(case when vt_Продажы.ВидПлатежа = :Допл AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Доплата,
          |  SUM(case when vt_Продажы.ВидПлатежа = :Беспл AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Бесплатно,
          |  SUM(case when vt_Продажы.ВидПлатежа = :Барт AND Рег.DebKred = 0 then $Рег.Сумма else 0 end) as Бартер
GROUP BY
          |      vt_Продажы.Менеджер, vt_Продажы.Рубрика, vt_Продажы .Контрагент,vt_Продажы.Выпуски
Тебе  написаное  помогло или все же отвечать на твой вопрос?
Хотя мне он кажеться страным но тебе видней.

« Последняя редакция: 29. Января 2007 :: 14:20 - nikolka »  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать