Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Можно ли получить "дни на сладе" для товара в запросе? (число прочтений - 5013 )
Den@
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 23
Зарегистрирован: 24. Октября 2008
Можно ли получить "дни на сладе" для товара в запросе?
11. Мая 2009 :: 13:06
Печать  
Имеется задача - получить дни присутствия товара на определенной фирме за определенный период. Пока что в запросе получаю движения, далее сортировка+проход по таблице для подсчета дней когда имелись положительные остатки.
Неплохо было бы получить как-то эти данные в самом запросе. Никто не знает, как это можно сделать?
  
Наверх
 
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #1 - 12. Мая 2009 :: 08:31
Печать  
как я представляю: нужна группировка по дням, и потом что то вроде
iif(выборка.Остаток>0,1,0) ДнейСТоваром
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #2 - 12. Мая 2009 :: 09:56
Печать  
Во временную таблицу кладешь дни с .. по ..
Можно добавить поля месяц  и т.п.
Выполняется меньше 0.1 сек
Потом соединение с этой таблицей
  
Наверх
 
IP записан
 
Den@
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 23
Зарегистрирован: 24. Октября 2008
Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #3 - 12. Мая 2009 :: 10:36
Печать  
Ээ.. что-то не доходит.  Улыбка С временными таблицами вообще не работал еще. Отмечу что база у меня dbf-ная... Не знаю с какого конца подступиться к решению.  Нерешительный
  
Наверх
 
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #4 - 12. Мая 2009 :: 10:56
Печать  
вот такой код попробуй

Код
Выбрать все
		Запрос1спп.Выполнить("EXEC('CREATE CURSOR табПериоды(period date not null)')");
		Для с=1 по сз_периоды.РазмерСписка() цикл
			;
		    Запрос1спп.Выполнить("insert into табПериоды values(:ТекДата~~)");	    
		КонецЦикла;

 



сз_периоды - тут все дни
потом обращаешься к табПериоды как к обычной дбф.
  
Наверх
ICQ  
IP записан
 
Den@
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 23
Зарегистрирован: 24. Октября 2008
Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #5 - 12. Мая 2009 :: 11:03
Печать  
спасибо, как работает понял. но непонятно как соединить с регистром движений... И как будет идти расчет - для каждого дня будут суммироваться все движения до этой даты? Не понимаю %(
  
Наверх
 
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #6 - 12. Мая 2009 :: 11:09
Печать  
сразу мне трудно набросать, что нужно получить в итоге.
но для начала м.двинуться

select табПериоды.date День
from табПериоды
left join (<запрос по регистру>) зпр on зпр.День=табПериоды.date

но как получить остаток по регистру для каждого дня - тут нужно голову поломать
  
Наверх
ICQ  
IP записан
 
Den@
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 23
Зарегистрирован: 24. Октября 2008
Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #7 - 12. Мая 2009 :: 11:26
Печать  
да, надо как-то сделать чтобы движения суммировались порциями по дням, прибавляясь к остатку за предыдущий день. я тут видел где-то "накопительные итоги" (по сути они и нужны вроде), но так и не смог разобраться что к чему, к тому же там все для sql было. А надо как-то для фокспро сделать.
  
Наверх
 
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #8 - 12. Мая 2009 :: 13:23
Печать  
я видел такой вариант подсчета нарастающего итога:

Код
Выбрать все
select
t2.id,
t2.sum1,
(
select sum(t1.sum1)
from #t t1
where t1.id<=t2.id
) as tot
from #t t2
 



все еще несколько усложнится  наличием нач.остатка, который тоже надо вычислить. в общем, ожидаемы навороты
  
Наверх
ICQ  
IP записан
 
Den@
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 23
Зарегистрирован: 24. Октября 2008
Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #9 - 12. Мая 2009 :: 18:43
Печать  
мда.. хитро ) попробую переложить на мою задачу когда смогу заняться. однако, если у кого есть работающий код по указанной задаче, буду премного благодарен  Улыбка
  
Наверх
 
IP записан
 
Злой Бобр
Junior Member
**
Отсутствует



Сообщений: 56
Местоположение: Украина, Кривой Рог
Зарегистрирован: 07. Марта 2009
Пол: Мужской
Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #10 - 13. Мая 2009 :: 09:34
Печать  
Код
Выбрать все
$РегистрОстаткиОбороты.ОстаткиТоваров(:НачДата, :КонДата~, День,,,(Товар), (Количество)) as Рег 


Вроде как там все что нужно есть. Останется только обработать полученный набор данных так как тебе нужно.
  

Если у вас есть деньги тогда мы идем к вам!!!
Наверх
ICQ  
IP записан
 
diesell
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 28. Мая 2009
Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #11 - 28. Мая 2009 :: 10:07
Печать  
Вот у меня такая проблема:
использую $РегистрОстаткиОбороты.ОстаткиТоваров(:НачДата, :КонДата~, День,,,(Товар), (Количество)) as Рег
но когда обрабатываю результаты запроса, то там записи только по границам периода, и в тот день когда были движения.
Как можно сделать, что бы результаты были каждый день периода, даже если не было никаких движений?
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #12 - 28. Мая 2009 :: 10:53
Печать  
diesell писал(а) 28. Мая 2009 :: 10:07:
Вот у меня такая проблема:
использую $РегистрОстаткиОбороты.ОстаткиТоваров(:НачДата, :КонДата~, День,,,(Товар), (Количество)) as Рег
но когда обрабатываю результаты запроса, то там записи только по границам периода, и в тот день когда были движения.
Как можно сделать, что бы результаты были каждый день периода, даже если не было никаких движений?


Моно. Соединяй с внешней таблицей дат.
  
Наверх
 
IP записан
 
diesell
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 28. Мая 2009
Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #13 - 28. Мая 2009 :: 11:11
Печать  
Подсказку можно, как именно это сделать?
Ставлю в параметр соединение
INNER  JOIN (SELECT Val FROM #ТаблицаДаты)
выдает ошибку
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Можно ли получить "дни на сладе" для товара в запросе?
Ответ #14 - 28. Мая 2009 :: 12:08
Печать  
diesell писал(а) 28. Мая 2009 :: 11:11:
Подсказку можно, как именно это сделать?
Ставлю в параметр соединение
INNER  JOIN (SELECT Val FROM #ТаблицаДаты)
выдает ошибку

Типа так (С) не мое

Код
Выбрать все
|CREATE TABLE td (Dat DateTime)
|DECLARE @DateStart DateTime
|SET @DateStart = Convert(datetime,'20020101',112)
|INSERT INTO td
|select top 365 dateadd(dd, -Day(@DateStart), dateadd(mm,-Month(@DateStart)+1,@DateStart)) +
|(select count(*) from master..sysobjects where id<=a.id) AS [Date] from master..sysobjects AS a Order by [Date]
 



А потом уже join к ней по Рег.Период
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать