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


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 27. Сентября 2006
Прошу помочь написать прямой запрос.
27. Сентября 2006 :: 13:10
Печать  
Необходимо переписать запрос в прямой, если можно прошу помочь, на Мисте помощи не дождался..
   тЗапроса1=
   "//{{ЗАПРОС(Сформировать)

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

   Если ВыбСклад.Выбран()=1 тогда
   тЗапроса1=тЗапроса1+"Условие (Склад = ВыбСклад);";
   иначе
   тЗапроса1=тЗапроса1+"Условие (Склад в СписСкладов);
   |Группировка Склад;";
   КонецЕсли;    
ВремЗ.Выполнить(тЗапроса1);                                          
ВремЗ.Выгрузить(ВремТаблица);
  
Наверх
 
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Прошу помочь написать прямой запрос.
Ответ #1 - 27. Сентября 2006 :: 13:18
Печать  
Смотри FAQ по прямым запросам, там все подробно описано.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
PS55
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 27. Сентября 2006
Re: Прошу помочь написать прямой запрос.
Ответ #2 - 27. Сентября 2006 :: 13:28
Печать  
Нашел a Faq такой запрос.
ТекстЗапроса = "
  |Select
  |    Товар [Товар $Справочник.Товары],
  |    Склад [Склад $Справочник.Склады], 
  |    ОстатокТовараОстаток ОстатокТовара
  |FROM
  |    $РегистрОстатки.ОстаткиТовара(
  |      ,
  |      ,
  |      Товар in (Select val from #ВыбТовар)
  |                           And
  |      Склад in (Select val from #ВыбСклад),
  |      (Товар, Склад),
  |      ОстатокТовара
  |      ) остатки
  |";
  Запрос = СоздатьОбъект("ODBCRecordSet");
  Запрос.УложитьСписокОбъектов(ВыбСклад,"#ВыбСклад","Склады");
  Запрос.УложитьСписокОбъектов(ВыбТовар,"#ВыбТовар","Товары");
  ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
  ТЗ.ВыбратьСтроку();
У меня вопрос как выбрать нужный период и как сделать группировку день?
  
Наверх
 
IP записан
 
PS55
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 27. Сентября 2006
Re: Прошу помочь написать прямой запрос.
Ответ #3 - 27. Сентября 2006 :: 13:31
Печать  
Мне необходимо расчитать средний остаток товара на складе за выбранный период не могу дойти своим умом как это сделать?
  
Наверх
 
IP записан
 
PS55
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 27. Сентября 2006
Re: Прошу помочь написать прямой запрос.
Ответ #4 - 27. Сентября 2006 :: 13:32
Печать  
Методом как в (1) запрос по всем товарам выполняется около 3 часов....  Плачущий
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прошу помочь написать прямой запрос.
Ответ #5 - 27. Сентября 2006 :: 13:54
Печать  
PS55 писал(а) 27. Сентября 2006 :: 13:32:
Методом как в (1) запрос по всем товарам выполняется около 3 часов....  Плачущий

там не может быть таких методов...
но если изучить хорошо методы 1С можно вместо 3-х часов свести полчение выборки, скажем так минут до 5-ти...
ЗЫ запрос по кол-ву записей в регистре 2 500 000 выполнялся всего 25 мин, но это долго, запрос был кстати подобен запросу в (0), а в том что у тебя объем данных составляет хотябы 50% от тех что у меня - очень сильно сомневаюсь...
хотя все зависит еще от железа и от того как на нем распределена нагрузка...
  

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



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прошу помочь написать прямой запрос.
Ответ #6 - 27. Сентября 2006 :: 14:06
Печать  
на том объеме что я привел, запрос типа (0) отрабатывал минут 15-ть, получения остатков ср-вами 1С но не запросом ~1мин. 40 сек., запросом через 1С++ с использованием ВТ $РегистрОстатки но разными способами: первый -  ~2мин., второй - ~1мин. 35сек.
все замеры не просто получение выборки, а получение ТЗ с объектами 1С...
  

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



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прошу помочь написать прямой запрос.
Ответ #7 - 27. Сентября 2006 :: 14:08
Печать  
[quote author=PS55 link=1159362649/0#2 date=1159363681]У меня вопрос как выбрать нужный период и как сделать группировку день?[/quote]
почитать документацию, там все ясно расписано...

только вот ты одно поясни... как может быть детализация по любому периоду у остатка?
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
PS55
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 27. Сентября 2006
Re: Прошу помочь написать прямой запрос.
Ответ #8 - 27. Сентября 2006 :: 15:00
Печать  
А что не понятно сегодня на конец дня у товара один остаток завтра другой мне нужно вычислить средний остаток за период, причем именно средний по дням, потому что средний остаток на начало и на конец периода не подходят. Необходимо вычислить эффетивность работы менеджеров снабжения и чтобы они не делали перетар складов.
  
Наверх
 
IP записан
 
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: Прошу помочь написать прямой запрос.
Ответ #9 - 03. Октября 2006 :: 08:38
Печать  
Я не знаю, какая у тебя конфа, но я подошел бы к решению примерно так.
1. Берешь таблицу оборотов по регистру (RA).
2. Дата для каждого движения у тебя известна.
3. Делаешь запрос примерно следующего вида:

SELECT Дата движения, Товар, ..., SUM(Остаток товара - если DEBKRED = 1 тогда остаток
берешь со знаком минус - это расход товара)

....
....
GROUP BY(Дата движения, Товар, ...,)

У тебя получится таблица, в которой указан остаток товара на каждый день. А дальше делай что хочешь - хоть среднеквадратичное отклонение высчитывай. На регистре остатков, сформированным >1'000'000.00 документов данный запрос выполняется примерно 10-12 сек.
  
Наверх
 
IP записан
 
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: Прошу помочь написать прямой запрос.
Ответ #10 - 03. Октября 2006 :: 08:46
Печать  
Но, насколько я понимаю, вопрос не в быстродействии, а в (как бы помягче сказать) не совсем твердом знании SQL  Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать