Помогите с РАЗНОСТЬДАТ #487907


#0 by Alexey87
Задача такая: в запросе хочу получить разницу в месяцах между свойством номенклатуры типа Дата и Текущей датой, соответственно пишу: РАЗНОСТЬДАТ(ЗначенияСвойствОбъектов.Значение, &ТекДата, МЕСЯЦ) Выдает ошибку "неверные параметры РАЗНОСТЬДАТ", такое ощущение, что не видит тип у значения свойства, думаю, если сделать свойство предопределенным, то прокатит или дело в другом?
#1 by Дикообразко
ВЫРАЗИТЬ
#2 by Alexey87
не катит, пробовал уже
#3 by Дикообразко
как пробывал?
#4 by Said_We
Отработало - что я делаю не так?
#5 by Said_We
Запрос.УстановитьПараметр("ТекДата", ТекДата);
#6 by Defender aka LINN
ЗначенияСвойствОбъектов.Значение - не дата, это ж дураку (1С) даже понятно.
#7 by Дикообразко
РАЗНОСТЬДАТ(ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Значение КАК ДАТА), &ТекДата, МЕСЯЦ) у тебя поле не составного типа
#8 by Alexey87
ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Значение КАК ДАТА)
#9 by Said_We
Тогда возможно лудше подзапросом. В одном выразить и обрезать всё что не дата и не номенклатура, а во втором уже считать...
#10 by Said_We
РАЗНОСТЬДАТ - медленная зараза...
#11 by Alexey87
так и делаю
#12 by Дикообразко
извращенец? чем   не устраивает?
#13 by Дикообразко
в все работает, может руки нужно выпрямить?
#14 by Said_We
Что-то подсказывает что быстрее будет.
#15 by hhhh
он наверно туда другие свойства подсовывает, в эту функцию.
#16 by Дикообразко
ты умнее оптимизатора MS SQL?
#17 by Дикообразко
+ делай хорошо, а хреново само получиться (с)
#18 by Said_We
Время работы оптимизатора - тоже время - не правда ли.
#19 by Said_We
У файловой версии тоже оптимизатор MS SQL? :-)
#20 by Дикообразко
не пори чушь
#21 by Said_We
Ну какая-же это чушь, если в файловой нету MS SQL? А Вы предлагаете все взвалить на сей инструмент.
#22 by Дикообразко
вложенный запрос с отбором, а затем еще одна выборка по результату  ...вестимо будет медленнее одной выборки
#23 by hhhh
не скажи, если в файловой отбор и соединение, то будет работать в 60 раз медленнее, чем сначала отбор в подзапросе, а потом соединение.
#24 by Said_We
К Отбор в подзапросе с фильтром. И примерно во столько раз медленнее во сколько записей больше без предварительного фильтра в подзапросе. Соединение это почти декартово перемножение. Чем больше записей тем выходной результат больше. Если заранее перемножемые таблицы ограничить, то и перемножать придётся уже меньшие по количеству строк таблицы. А это уже быстрее. В принципе это прописные истины. А сваливать всё на некие оптимизаторы - не хорошо это. Видел я как оракл загибается от фильдипесового подобного запроса. Беруться четыре огромные таблицы и перемножаются. Потом на результат накладываются условия, но не только условия связи, а и условия на каждую таблицу. В результате получается одна небольшая таблица. Но запрос выполняется крайне медленно. Хорошо это писал не большой специалист в оракле (сопровождает он систему) и не в самой базе, а в отчёте. Тоже сказал - есть же оптимизатор. Немного подкорректировал - наложил фильтры заранее и в подзапросы. Скорость выполнения - стало буквально несколько секунд (2-3 сек). При этом в самой базе на которой это писалось и в оракле я не специалист совсем. Специалист наверное еще быстрее бы нарисовал.
#25 by Дикообразко
а с чего ты взял, что фильтра нет О_о ??? речь об одной выборке с фильтром, против выборки из подзапроса с фильтром
#26 by Said_We
Речь о РАЗНОСТЬДАТ для скольки строк она будет отрабатывать, если известно что данная операция довольно-таки медленная.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С