![]() |
![]() |
![]() |
|
РазностьДат не в запросе? | ☑ | ||
---|---|---|---|---|
0
zippygrill
30.11.12
✎
12:57
|
нет такой функции?
|
|||
1
Reset
30.11.12
✎
12:58
|
Есть, но только по секундам
|
|||
2
zippygrill
30.11.12
✎
12:59
|
как-то не разу не приходилось использовать не в запросе. мне бы по дням неделям месяц.
|
|||
3
Reset
30.11.12
✎
13:00
|
Написать самому
|
|||
4
YF
30.11.12
✎
13:00
|
(0) Пришлось самому написать
|
|||
5
zippygrill
30.11.12
✎
13:00
|
ясно
|
|||
6
Undefined vs NULL
30.11.12
✎
13:00
|
а трудно вызвать запрос?
|
|||
7
zippygrill
30.11.12
✎
13:01
|
кто-нибудь поделится со мной :)?
|
|||
8
zippygrill
30.11.12
✎
13:01
|
(6) а вот с запросом мне б понравилось. сейчас попробую.
|
|||
9
YF
30.11.12
✎
13:01
|
(7) Че там писать-то? Вычитание + деление
|
|||
10
drcrasher
30.11.12
✎
13:02
|
(8) главное - запрос в цикле
|
|||
11
ShoGUN
30.11.12
✎
13:03
|
(9) По месяцам не получится, они ж разные по длине.
|
|||
12
GROOVY
30.11.12
✎
13:05
|
Функция РазностьДат(Знач НачДата, Знач КонДата, ЕдИзм = Неопределено) Экспорт
Если ЕдИзм = Неопределено Тогда ЕдИзм = " ДЕНЬ "; КонецЕсли; Запрос = Новый Запрос("ВЫБРАТЬ РАЗНОСТЬДАТ(&НачДата, &КонДата, " + ЕдИзм + " ) Как Разность"; Результат = Запрос.Выполнить().Выбрать; Результат.Следующий(); Возврат Результат.Разность; КонецФункции |
|||
13
GROOVY
30.11.12
✎
13:06
|
Функцию в общий модель с включенным свойством "Повторное использование возвращаемых значений"
|
|||
14
Reset
30.11.12
✎
13:09
|
(12) Разве хорошо вызывать сервер для, фактически, нескольких арифметических операций?
|
|||
15
Fragster
гуру
30.11.12
✎
13:10
|
Кстати, разностьДат по месяцам в запросе - неочевидная. Она возвращает разность номеров месяцев + разность номеров годов *12. И по годам такая же фигня.
|
|||
16
GROOVY
30.11.12
✎
13:12
|
(14) Вне контекста - нормально.
|
|||
17
Reset
30.11.12
✎
13:25
|
(16) Не могу себя заставить поверить, что это нормально
Для каждого чтото из Чего-л цикл РазностьДат(); // пусть даже без контекста формы (если я правильно понял про контекст) |
|||
18
zippygrill
30.11.12
✎
13:32
|
(12) спасибо Павел.
|
|||
19
Reset
30.11.12
✎
15:49
|
Правильно ли я понимаю, что запрос вида (12) также и дергает SQL-сервер?
Причем вроде в данном конкретном случае получается запрос вида "SELECT N" где N - уже рассчитанная (1с-сервером) разность дат? (видимо, это оптимизация - до передачи на sql вычисляются все выражения, которые можно вычислить до вызова) |
|||
20
Undefined vs NULL
30.11.12
✎
15:49
|
(19) нет, вычисляет разность дат таки SQL
|
|||
21
vde69
30.11.12
✎
15:52
|
на больших запросах РАЗНОСТЬДАТ реально сильно тормозит
|
|||
22
Reset
30.11.12
✎
15:53
|
(20) ну я со своими куцими познаниями залез в технологический журнал и увидел там таки SELECT2 - отсюда предположил
15:45.8558-1,DBPOSTGRS,4,process=rphost,p:processName=****,t:clientID=***,t:applicationName=1CV8,t:computerName=****,t:connectID=5611,SessionID=4365,Usr=****,Trans=0,dbpid=1743,Sql='SELECT 2',Result=PGRES_TUPLES_OK |
|||
23
Reset
30.11.12
✎
15:53
|
(22) параметры были переданы так, что разность как раз получалась 2
|
|||
24
Fragster
гуру
30.11.12
✎
15:58
|
Повторяю, разностьДатНеВЗапросе = Месяц(Д2) - Месяц(Д1) + 12*(Год(д2)-Год(д1));
|
|||
25
Reset
30.11.12
✎
16:03
|
(24) Автор уже сделал через (12) и суда по все его устраивает.
Это уже я тут бухчу что это неоптимально и надо использовать (24) или вариации. Я не прав? :) |
|||
26
Reset
30.11.12
✎
16:03
|
судя по всему*
|
|||
27
zippygrill
30.11.12
✎
16:45
|
(25) я еще не определился использовать в помощью запроса или как в (24)
|
|||
28
Fragster
гуру
30.11.12
✎
16:52
|
вот кстати вопрос. нельзя же одновременно функцию сделать и &НаКлиенте и &НаСереверБезКонтекста, чтоба она не осуществляла серверный вызов с клиента, и чтобы ее можно было бы вызвать с сервера одноверменно...
|
|||
29
Fragster
гуру
30.11.12
✎
16:52
|
придется 2 функции писать
|
|||
30
Reset
30.11.12
✎
17:24
|
Почему, если сделать общий модуль с галками сервер, клиент (вызов сервера можно не устанавливать), то одна и та же функция будет вызываться как с клиента (не переходя на сервер), так и с сервера.
Вроде ;) |
|||
31
Fragster
гуру
30.11.12
✎
18:25
|
не, я тут в справке глянул. по умолчанию &НаСервере, но есть
&НаКлиентеНаСервере (&AtClientAtServer) — определяет процедуру (функцию), исполняемую в модуле команды, выполняемую на клиенте и на сервере, имеющую доступ к процедурам и функциям общих модулей – серверных, не глобальных и серверных и клиентских одновременно, не имеющую доступ к переменным. Сама процедура (функция) доступна для клиентских серверных процедур и функций модуля команды. |
|||
32
Reset
30.11.12
✎
18:41
|
&НаКлиентеНаСервере только в модуле команды допускается, как я понял.
То есть, если с модуля формы хотим вызывать(с &Клинтских и &Серверных функций) + из модуля объекта, скажем - придется помещать в общий модуль. Это теориекрафт все, у меня опыта с УП нет, к сожалению [пока] |
|||
33
GROOVY
30.11.12
✎
18:45
|
А есть и &НаКлиентеНаСервереБезКонтекста. Работает только в упр формах.
|
|||
34
Reset
30.11.12
✎
18:49
|
(33) Точно, есть :)
|
|||
35
Reset
30.11.12
✎
18:51
|
+(34) Ее, очевидно, удобно для "универсальных" ф-й в модуле формы использовать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |