Имя: Пароль:
1C
1С v8
РазностьДат не в запросе?
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) Ее, очевидно, удобно для "универсальных" ф-й в модуле формы использовать
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.