Переключение на Главную Страницу Страницы: 1 ... 18 19 [20] 21 22 ... 60 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" (число прочтений - 304832 )
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: Класс "ПрямойЗапрос"
Ответ #285 - 15. Октября 2009 :: 12:03
Печать  
При получении остатка по регистру получаются лишние строки с таким количеством:
0.000000000001
0.000000000001
0.00000000001
точность по регистру 5 знаков, как избавиться от этих строк... (удалить руками эт понятно Улыбка ) 1sqlite последний
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #286 - 15. Октября 2009 :: 13:20
Печать  
Round сделай (округление)...

кстати может иначально для dbf сделать округление?
я "за"
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #287 - 15. Октября 2009 :: 13:54
Печать  
А типизация
[ХЗ :Число.20.5]
не поможет?
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #288 - 15. Октября 2009 :: 17:41
Печать  
JohnyDeath писал(а) 15. Октября 2009 :: 13:54:
А типизация
[ХЗ :Число.20.5]
не поможет?


Проблема останется, поскольку условие в ВТ Having sum(....) <> 0 не будет выполнятся. В итоге даже если типизация сделает "округление" все равно останутся значения с нулями.
А надо изначально на этапе ВТ отсекать то что на самом деле нули.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: Класс "ПрямойЗапрос"
Ответ #289 - 16. Октября 2009 :: 05:54
Печать  
vandalsvq писал(а) 15. Октября 2009 :: 17:41:
А надо изначально на этапе ВТ отсекать то что на самом деле нули.

И как бы провернуть такой фокус? Подмигивание
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Класс "ПрямойЗапрос"
Ответ #290 - 16. Октября 2009 :: 07:04
Печать  
Этот фокус означает, что регистры неправильно закрываются.
Где-то в алгоритме ошибки округления.
  
Наверх
ICQ  
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: Класс "ПрямойЗапрос"
Ответ #291 - 16. Октября 2009 :: 07:12
Печать  
vip писал(а) 16. Октября 2009 :: 07:04:
Этот фокус означает, что регистры неправильно закрываются.
Где-то в алгоритме ошибки округления.


в 11 и 12 разряде возникает единица, точность по регистру 5, я так понимаю это sqlite так считает вещественные числа, а не ошибка при закрытии регистра.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #292 - 16. Октября 2009 :: 10:41
Печать  
vip писал(а) 16. Октября 2009 :: 07:04:
Этот фокус означает, что регистры неправильно закрываются.
Где-то в алгоритме ошибки округления.

В данном случае (описанном автором) это из-за sqlite такая байда. Я уже сталкивался с этим неоднократно сам.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #293 - 16. Октября 2009 :: 12:24
Печать  
При работе с ДБФ класс не отрабатывает $ВидДокумента.Вид,  приходится писать через двоеточие - :ВидДокумента
  
Наверх
 
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: Класс "ПрямойЗапрос"
Ответ #294 - 19. Октября 2009 :: 11:29
Печать  
vandalsvq писал(а) 15. Октября 2009 :: 13:20:
Round сделай (округление)...

кстати может иначально для dbf сделать округление?
я "за"


я тоже за Улыбка

темноват я в прямых запросах, подскажите где роунд должен быть?
ПрямойЗапрос.Текст = "ВЫБРАТЬ
           |Материал КАК [Материал $Справочник.Материалы],
           |Партия КАК [Партия $Справочник.Партии],
           |Склад КАК [Склад $Справочник.МестаХранения],
           |Мол КАК [Мол $Справочник.Сотрудники],
           |КоличествоОстаток КАК Количество,
           |СтоимостьОстаток КАК Стоимость
           |ИЗ $РегистрОстатки.ПартииНаличиеМатериалов (:КонДата,((Материал В (ВЫБРАТЬ val ИЗ #СЗМатериалов)) и Склад = :Склад и МОЛ = :МОЛ),(Материал,Партия,Склад,Мол),(Количество,Стоимость)) КАК Остатки";

Сделал и типизацию и округление в условии, нулевые строки все равно есть...

ПрямойЗапрос.Текст = "ВЫБРАТЬ
           |Материал КАК [Материал $Справочник.Материалы],
           |Партия КАК [Партия $Справочник.Партии],
           |Склад КАК [Склад $Справочник.МестаХранения],
           |Мол КАК [Мол $Справочник.Сотрудники],
           |КоличествоОстаток КАК [Количество :Число.19.5],
           |СтоимостьОстаток КАК [Стоимость :Число.19.2]
           |ИЗ  В (ВЫБРАТЬ val ИЗ #СЗМатериалов)) и Склад = :Склад и МОЛ = :МОЛ и Round(Количество,5)!=0 и Round(Стоимость,2)!=0),(Материал,Партия,Склад,Мол),(Количество,Стоимость)) КАК Остатки";
           
« Последняя редакция: 19. Октября 2009 :: 14:16 - Boris_1c »  
Наверх
 
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #295 - 19. Октября 2009 :: 18:24
Печать  
Попробуй округления вынести из запроса
Код
Выбрать все
ПрямойЗапрос.Текст = "ВЫБРАТЬ
	     |Материал КАК [Материал $Справочник.Материалы],
	     |Партия КАК [Партия $Справочник.Партии],
	     |Склад КАК [Склад $Справочник.МестаХранения],
	     |Мол КАК [Мол $Справочник.Сотрудники],
	     |КоличествоОстаток КАК [Количество :Число.19.5],
	     |СтоимостьОстаток КАК [Стоимость :Число.19.2]
	     |ИЗ
В (ВЫБРАТЬ val ИЗ #СЗМатериалов)) и Склад = :Склад и МОЛ = :МОЛ),(Материал,Партия,Склад,Мол),(Количество,Стоимость)) КАК Остатки
ГДЕ Round(КоличествоОстаток,5)!=0 ИЛИ Round(СтоимостьОстаток, 2)!=0
		 

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


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #296 - 19. Октября 2009 :: 19:28
Печать  
Нееееее... Boris_1c не пойдет. То условие что ты делаешь в вообще по идее работать не будет (на SQL точно, в DBF будут но не правильно).
Правильный вариант предложил classic т.е. после ВТ ставить условие на Round(РесурсОстаток,Точность) <> 0.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: Класс "ПрямойЗапрос"
Ответ #297 - 20. Октября 2009 :: 06:12
Печать  
ГДЕ Round(КоличествоОстаток,5)!=0 ИЛИ Round(СтоимостьОстаток, 2)!=0
Все получилось, спасибо!!!!!!!!
  
Наверх
 
IP записан
 
Uncle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос"
Ответ #298 - 20. Октября 2009 :: 06:29
Печать  
Баг на ровном месте, причем только в SQL варианте:
запрос
Код
Выбрать все
|SELECT
|$Рег.ВидДокумента||$Рег.ТекущийДокумент AS [ТекущийДокумент $Документ]
|FROM Регистр.ПартииТоваров AS Рег
 


выдает выборку циферок, ну а
Код
Выбрать все
|SELECT
|$Рег.ТекущийДокумент AS [ТекущийДокумент $Документ]
|FROM Регистр.ПартииТоваров AS Рег
 


говорит что не хватает данных для типизации

Проблема в том что ты не отлавливаешь различие типов iddocdef для dbf и sql. В итоге заработала конструкция
Код
Выбрать все
|SELECT
|CONVERT(Char(4),$Рег.ВидДокумента)||$Рег.ТекущийДокумент AS [ТекущийДокумент $Документ]
|FROM Регистр.ПартииТоваров AS Рег
 


но только для sql!

Великодушно прошу исправить досадную несовместимость  Подмигивание
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #299 - 20. Октября 2009 :: 08:20
Печать  
Правда конечно в том что я не обрабатываю ВидДокумента в sql и dbf потому как не уверен что всегда это будет удобно и универсально. Тут надо подумать. Может просто функцию ввести для преобразования id2str?
Счас малость потерлись воспоминания по структуре базы. Надо восстановить в памяти.
Счас под рукой ничего нет. Может вечером смогу посмотреть. Но наврядли до конца следующей недели что-то будет. Я уже писал в теме про ПоставщикДанных что в силу некоторых обстоятельств я не смогу работать.

Пы.сы. но в данном случае все решается так:
Код
Выбрать все
$Рег.ТекущийДокумент КАК [ТекущийДокумент $Документ]
,$Рег.ВидДокумента КАК [ТекущийДокумент_вид] 


А вот общее решение для этой проблемы конечно надо сделать. Поскольку не все в типизации можно указать через "_вид".
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 18 19 [20] 21 22 ... 60
ОтправитьПечать