Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) В чем ошибка? (число прочтений - 5321 )
Bagirius
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Февраля 2008
Пол: Мужской
В чем ошибка?
19. Февраля 2008 :: 15:16
Печать  
Хочу получить остатки в разрезе складов и стоимость остатков в ценах
вот текст:
ТекстЗапроса = "
           |SELECT ПартииТоваровОстатки.Склад [Склад $Справочник.МестаХранения]
           |      , (ПартииТоваровОстатки.ОстатокТовараОстаток) ОстКол
           |      , (ПартииТоваровОстатки.СебестоимостьОстаток) ОстСС
           |      , (ПартииТоваровОстатки.ОстатокТовараОстаток * $ПоследнееЗначение.Номенклатура.ОптоваяЦена(Номенклатура.ID, :ВыбДата)) ОстОЦ
           |      , (ПартииТоваровОстатки.ОстатокТовараОстаток * $ПоследнееЗначение.Номенклатура.МелкооптоваяЦена(Номенклатура.ID, :ВыбДата)) ОстМОЦ
           |      , (РезервыТоваровОстатки.РезервТовараОстаток) РезКол            
           |      , (ПартииТоваровОстатки.СебестоимостьОстаток / ПартииТоваровОстатки.ОстатокТовараОстаток * РезервыТоваровОстатки.РезервТовараОстаток) РезСС
           |      , (РезервыТоваровОстатки.РезервТовараОстаток * $ПоследнееЗначение.Номенклатура.ОптоваяЦена(Номенклатура.ID, :ВыбДата)) РезОЦ
           |      , (РезервыТоваровОстатки.РезервТовараОстаток * $ПоследнееЗначение.Номенклатура.МелкооптоваяЦена(Номенклатура.ID, :ВыбДата)) РезМОЦ
           |FROM $Справочник.Номенклатура AS Номенклатура
           |      FULL OUTER JOIN $РегистрОстатки.ПартииТоваров(:ВыбДата~,,
           |            (Фирма = :ВыбФирма),
           |            (Склад, Фирма, Товар),
           |            (ОстатокТовара, Себестоимость)) AS ПартииТоваровОстатки
           |      ON Номенклатура.ID = ПартииТоваровОстатки.Товар
           |      FULL OUTER JOIN $РегистрОстатки.РезервыТоваров(:ВыбДата~,,
           |            (Фирма = :ВыбФирма),
           |            (Фирма, Товар, Склад),) AS РезервыТоваровОстатки
           |      ON Номенклатура.ID = РезервыТоваровОстатки.Товар
           |      AND ПартииТоваровОстатки.Товар = РезервыТоваровОстатки.Товар
           |      AND ПартииТоваровОстатки.Фирма = РезервыТоваровОстатки.Фирма
           |      AND ПартииТоваровОстатки.Склад = РезервыТоваровОстатки.Склад
           |";
     рс.УстановитьТекстовыйПараметр("ВыбДата", ДатаОтчета);
     рс.УстановитьТекстовыйПараметр("ВыбФирма", ВыбФирма);
     тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
     тз.ВыбратьСтроку();
     ТЗ.Свернуть("Склад","ОстКол,ОстСС,ОстОЦ,ОстМОЦ,РезКол,РезСС,РезОЦ,РезМОЦ");
     ТЗ.Сортировать("Склад");

Все сделал в копии получилось, работает быстро, а когда начал пробовать в рабочей базе, при активных пользователях, все время разный результат, короче информация от болды.
где я не так что сделал?
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: В чем ошибка?
Ответ #1 - 19. Февраля 2008 :: 15:29
Печать  
Если тебе нужно свернуть то сворачивай прямо в запросе, откуда такая манера использовать Full join?
  
Наверх
ICQ  
IP записан
 
Bagirius
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Февраля 2008
Пол: Мужской
Re: В чем ошибка?
Ответ #2 - 19. Февраля 2008 :: 15:31
Печать  
Это я конструктором запросов делал, новичек я в прямых запросах.  Нерешительный
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: В чем ошибка?
Ответ #3 - 19. Февраля 2008 :: 15:33
Печать  
что значит:
Цитата:
информация от болды.


может у тебя пользователи в этом периоде документы проводят?
  
Наверх
ICQ  
IP записан
 
Bagirius
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Февраля 2008
Пол: Мужской
Re: В чем ошибка?
Ответ #4 - 19. Февраля 2008 :: 15:35
Печать  
Nick писал(а) 19. Февраля 2008 :: 15:33:
что значит:
Цитата:
информация от болды.


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



так там разница в 10 раз, потом в 5 раз, потом в 3 раза.
Не могут они такие объемы проводить. Я даже пробовал крутить отчет на дату назад, все равно все время разный результат. Я думаю что-то в запросе я напортачил, коряво сделал.
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: В чем ошибка?
Ответ #5 - 19. Февраля 2008 :: 15:41
Печать  
Ну попробуй хотя не уверен что в этом проблема но для начала
Код
Выбрать все
	     |	ON Номенклатура.ID = РезервыТоваровОстатки.Товар
	     |	AND ПартииТоваровОстатки.Товар = РезервыТоваровОстатки.Товар
	     |	AND ПартииТоваровОстатки.Фирма = РезервыТоваровОстатки.Фирма
	     |	AND ПартииТоваровОстатки.Склад = РезервыТоваровОстатки.Склад
 



убрать вот это:
Номенклатура.ID = РезервыТоваровОстатки.Товар

явно лишнее
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: В чем ошибка?
Ответ #6 - 19. Февраля 2008 :: 15:42
Печать  
Какую таблицу ты хочешь в результате получить?
  
Наверх
ICQ  
IP записан
 
Bagirius
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Февраля 2008
Пол: Мужской
Re: В чем ошибка?
Ответ #7 - 19. Февраля 2008 :: 15:46
Печать  
Nick писал(а) 19. Февраля 2008 :: 15:41:
Ну попробуй хотя не уверен что в этом проблема но для начала
Код
Выбрать все
	     |	ON Номенклатура.ID = РезервыТоваровОстатки.Товар
	     |	AND ПартииТоваровОстатки.Товар = РезервыТоваровОстатки.Товар  
	     |	AND ПартииТоваровОстатки.Фирма = РезервыТоваровОстатки.Фирма  
	     |	AND ПартииТоваровОстатки.Склад = РезервыТоваровОстатки.Склад
 



убрать вот это:
Номенклатура.ID = РезервыТоваровОстатки.Товар

явно лишнее


Убрал, результат ближе к истине, но все равно, все время разный, при каждом формировании отчета
  
Наверх
ICQ  
IP записан
 
Bagirius
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Февраля 2008
Пол: Мужской
Re: В чем ошибка?
Ответ #8 - 19. Февраля 2008 :: 15:50
Печать  
Nick писал(а) 19. Февраля 2008 :: 15:42:
Какую таблицу ты хочешь в результате получить?


Склад - Справочник.Склады
ОстКол - Остаток количества в регистре ПартииТоваров
ОстСС - Остаток себестоимости в ПартииТоваров
ОстОЦ - Остаток количества в регистре ПартииТоваров * Цену из справочника номенклатура (переодический)
ОстМОЦ - Остаток количества в регистре ПартииТоваров * Цену из справочника номенклатура (переодический)
РезКол - Остаток количества в регистре РезервыТоваров
РезСС -  Остаток количества в регистре РезервыТоваров * стоимость  ед. товара (т.к. нет себестоимости в регистре)
РезОЦ - Остаток количества в регистре РезервыТоваров * Цену из справочника номенклатура (переодический)
РезМОЦ - Остаток количества в регистре РезервыТоваров * Цену из справочника номенклатура (переодический)
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: В чем ошибка?
Ответ #9 - 19. Февраля 2008 :: 15:53
Печать  
В этой таблице должна быть номенклатура с 0 остатками?
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: В чем ошибка?
Ответ #10 - 19. Февраля 2008 :: 15:55
Печать  
вот это не одно и тоже?

Цитата:
ОстОЦ - Остаток количества в регистре ПартииТоваров * Цену из справочника номенклатура (переодический)
ОстМОЦ - Остаток количества в регистре ПартииТоваров * Цену из справочника номенклатура (переодический)

  
Наверх
ICQ  
IP записан
 
Bagirius
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Февраля 2008
Пол: Мужской
Re: В чем ошибка?
Ответ #11 - 19. Февраля 2008 :: 15:56
Печать  
Nick писал(а) 19. Февраля 2008 :: 15:53:
В этой таблице должна быть номенклатура с 0 остатками?


Там номенклатура должна сумироваться по складам, короче нули не нужны
  
Наверх
ICQ  
IP записан
 
Bagirius
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Февраля 2008
Пол: Мужской
Re: В чем ошибка?
Ответ #12 - 19. Февраля 2008 :: 15:57
Печать  
Nick писал(а) 19. Февраля 2008 :: 15:55:
вот это не одно и тоже?

Цитата:
ОстОЦ - Остаток количества в регистре ПартииТоваров * Цену из справочника номенклатура (переодический)
ОстМОЦ - Остаток количества в регистре ПартииТоваров * Цену из справочника номенклатура (переодический)



ОЦ - ОптоваяЦена
МОЦ - МелкоОптоваяЦена
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: В чем ошибка?
Ответ #13 - 19. Февраля 2008 :: 15:59
Печать  
Bagirius писал(а) 19. Февраля 2008 :: 15:56:
Nick писал(а) 19. Февраля 2008 :: 15:53:
В этой таблице должна быть номенклатура с 0 остатками?


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


Тут у тебя остатки по разным регистрам, если во всех регистрах остаток должен быть не нулевой то замени все  full join на inner join
  
Наверх
ICQ  
IP записан
 
Bagirius
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Февраля 2008
Пол: Мужской
Re: В чем ошибка?
Ответ #14 - 19. Февраля 2008 :: 16:16
Печать  
Все равно хрень получается Печаль
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать