Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Получение остатков на ТА (DBF) (число прочтений - 2483 )
VitGun
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 06. Июня 2006
Получение остатков на ТА (DBF)
28. Февраля 2008 :: 20:53
Печать  
Рылся на форуме, но не нашел похожей проблемы. смысл такой. Типовая ТиС 9.2 добавил регистр "СерийныеНомера"

Измерения: Фирма, Склад, Номенклатура, ИМЕИ
Ресурсы: КолВо

В документе (записан, но не проведен) нужно получить остатки ИМЕИ на выбранном складе. Делаю так

Код
Выбрать все
             SELECT
           |  Рег.ИМЕИ,
           |  SUM(Рег.КоличествоОстаток) as Количество
           |FROM
           |  (SELECT
           |     $РегСН.Номенклатура AS Товар,
           |     $РегСН.ИМЕИ as ИМЕИ,
           |     $РегСН.КолВо  AS КоличествоОстаток
           |  FROM
           |     $РегистрИтоги.СерийныеНомера as РегСН
           |  WHERE
           |     (period = :ПредМесяц~~)
           |     AND ($РегСН.Склад=:ВыбСклад) AND ($РегСН.Номенклатура=:ВыбТовар) AND ($РегСН.Фирма=:ВыбФирма)
           |
           |  UNION ALL
           |
           |  SELECT
           |     $РР.Номенклатура AS Товар,
	   |     $РР.ИМЕИ as ИМЕИ,
           |     $РР.КолВо * (1 - РР.debkred * 2) AS КоличествоОстаток
           |  FROM
           |     $Регистр.СерийныеНомера AS РР
           |  INNER JOIN
           |     1sjourn jr ON РР.iddoc = jr.iddoc
           |           AND (jr.date>=:НачалоМесяца~~)
           |  WHERE
           |     ($РР.Склад=:ВыбСклад) AND ($РР.Номенклатура=:ВыбТовар) AND ($РР.Фирма=:ВыбФирма)
           |  ) Рег
           |GROUP BY
           |  Рег.ИМЕИ";
 



Где ПредМесяц = НачМесяца(НачМесяца(ДатаДок)-1);
      НачМесяца = ДатаДок

Адаптировал пример из учебника по прямым запросам. Запрос вроде работает. Но такая ситуация. Приходую на склад Товар 2 штуки с разными ИМЕИ. Тут же один из них перемещаю на другой склад. Тут все ок. затем ввожу еще один док "перемещение" и мне в подборе ИМЕИ показывает что у меня 2 таких ИМЕИ на складе числятся. Как я понимаю запрос нужно делать по времени документа (как и написано в доке), но вот встал вопрос, а как это сделать?

Извиняюсь за несколько сумбурное выражение мысли, но надеюсь вопрос понятен...  Круглые глаза
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение остатков на ТА (DBF)
Ответ #1 - 28. Февраля 2008 :: 20:58
Печать  
Задолбешся ты с этим регистром...
  
Наверх
IP записан
 
VitGun
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 06. Июня 2006
Re: Получение остатков на ТА (DBF)
Ответ #2 - 29. Февраля 2008 :: 02:52
Печать  
эээ...простите? что сие означает?
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Получение остатков на ТА (DBF)
Ответ #3 - 29. Февраля 2008 :: 07:37
Печать  
А зачем UNION если смотришь только на ТА?

Объединять таблицы следует только если нужен временный расчет.
В этом случае в таблице 1sjourn  есть кроме date еще и time и iddoc.
Аналог поля (SQL) Цитата:
date_time_iddoc
в ДБФ
Код
Выбрать все
DTOS(РР.date)+РР.time+РР.iddoc 

  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Получение остатков на ТА (DBF)
Ответ #4 - 29. Февраля 2008 :: 07:46
Печать  
VitGun писал(а) 29. Февраля 2008 :: 02:52:
эээ...простите? что сие означает?


Это означает, что чтобы не съехали серийные номера придется или запретить проведение задним числом,
или делать "хитрые" алгоритмы. Нормального, решающего все проблемы - еще не видел.
  
Наверх
 
IP записан
 
VitGun
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 06. Июня 2006
Re: Получение остатков на ТА (DBF)
Ответ #5 - 29. Февраля 2008 :: 16:32
Печать  
kiruha писал(а) 29. Февраля 2008 :: 07:37:
А зачем UNION если смотришь только на ТА?

Объединять таблицы следует только если нужен временный расчет.
В этом случае в таблице 1sjourn  есть кроме date еще и time и iddoc.
Аналог поля (SQL) Цитата:
date_time_iddoc
в ДБФ
Код
Выбрать все
DTOS(РР.date)+РР.time+РР.iddoc 



Ну по сути это и есть временный расчет на ТА....т.е на документ.  Если сделать так

Код
Выбрать все
SELECT
           |  Рег.ИМЕИ,
           |  SUM(Рег.КоличествоОстаток) as Количество
           |FROM
           |  (SELECT
           |     $РегСН.Номенклатура AS Товар,
           |     $РегСН.ИМЕИ as ИМЕИ,
           |     $РегСН.КолВо  AS КоличествоОстаток
           |  FROM
           |     $РегистрИтоги.СерийныеНомера as РегСН
           |  WHERE
           |     (period = :ПредМесяц~~)
           |     AND ($РегСН.Склад=:ВыбСклад) AND ($РегСН.Номенклатура=:ВыбТовар) AND ($РегСН.Фирма=:ВыбФирма)
           |
           |  UNION ALL
           |
           |  SELECT
           |     $РР.Номенклатура AS Товар,
	       |     $РР.ИМЕИ as ИМЕИ,
           |     $РР.КолВо * (1 - РР.debkred * 2) AS КоличествоОстаток
           |  FROM
           |     $Регистр.СерийныеНомера AS РР
           |  INNER JOIN
           |     1sjourn jr ON РР.iddoc = jr.iddoc
           |           AND (DTOS(РР.date)+РР.time+РР.iddoc=:НачалоМесяца~)
           |  WHERE
           |     ($РР.Склад=:ВыбСклад) AND ($РР.Номенклатура=:ВыбТовар) AND ($РР.Фирма=:ВыбФирма)
           |  ) Рег
           |GROUP BY
           |  Рег.ИМЕИ
 



к));

только вот такой запрос мне ничего не возвращает....ткните плз носом где и что я не так делаю....  Смущённый
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение остатков на ТА (DBF)
Ответ #6 - 29. Февраля 2008 :: 19:09
Печать  
Запрос:
Код
Выбрать все
SELECT
	     |     $РегСН.Номенклатура AS Товар,
	     |     $РегСН.ИМЕИ as ИМЕИ,
	     |     $РегСН.КолВо  AS КоличествоОстаток
	     |  FROM
	     |     $РегистрИтоги.СерийныеНомера as РегСН
	     |  WHERE
	     |     (period = :ПредМесяц~~)
	     |     AND ($РегСН.Склад=:ВыбСклад) AND ($РегСН.Номенклатура=:ВыбТовар) AND ($РегСН.Фирма=:ВыбФирма)
 


уже вернет итоги на ТА, если :ПредМесяц~~ - равен началу месяца ТА (при условии что период итогов - месяц).
  
Наверх
IP записан
 
VitGun
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 06. Июня 2006
Re: Получение остатков на ТА (DBF)
Ответ #7 - 29. Февраля 2008 :: 20:01
Печать  
pvase

работает!!!  Подмигивание спасибо. в очередной раз убеждаюсь - учиться, учиться и еще раз учиться (всмысле доку читать...)

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