|
Количество лет клиенту | ☑ | ||
---|---|---|---|---|
0
Kirill123455
08.01.19
✎
15:10
|
Имеется поле ДатаРождения(тип дата) и поле количество лет(тип число).
Необходимо создать событие,которое считало бы количество лет, а именно от текущей даты отнимал ДатаРождения |
|||
2
Базис
naïve
08.01.19
✎
15:18
|
Не понял про событие. В чём задача, что сделал, что не получилось?
Формат даты - семёрочный, восьмёрочный, unixtime или какой? |
|||
3
zak555
08.01.19
✎
15:19
|
Регзадание на перезапись количества лет для каждого клиента ежесуточно
|
|||
4
Kirill123455
08.01.19
✎
15:20
|
(2) От текущей даты отнял дату рождение( ТекущаяДата()-ДатаРождения). Как сделать, чтобы выводилась разница в годах?
|
|||
5
impulse9
08.01.19
✎
15:21
|
(3) маловато, данные могут устареть. Надо раз в секунду
|
|||
6
Базис
naïve
08.01.19
✎
15:24
|
(4) Получил большую цифру, иногда огромную. Если огромную, то пиши "Где дата рождения, блин?". Иначе дели на число секунд в (году + 6 часов).
|
|||
7
K1RSAN
08.01.19
✎
15:29
|
Проверить, прошел ли ДР в этом году, потом получить значение года рождения и текущего года. Отнять от большего меньшее. Если ДР в этом году еще не было - отнять еще 1.
Если это 8, вроде там есть метод Год(<Дата>). |
|||
8
vde69
08.01.19
✎
15:33
|
Год(Дата(ТекущаяДата()-ДатаРождения))
|
|||
9
Kigo_Kigo
08.01.19
✎
15:41
|
Во заморачиваться и хранить эти данные -зачем?
Если всегда можно посчитать, и мне кажется это будет быстрее и эффективней |
|||
10
Kirill123455
08.01.19
✎
15:41
|
(8) Пишет ошибку:Преобразование значения к типу Дата не может быть выполнено
|
|||
11
vde69
08.01.19
✎
15:49
|
чему равно
ТекущаяДата()-ДатаРождения |
|||
12
Kirill123455
08.01.19
✎
15:50
|
(11) полю КоличествоЛет
|
|||
13
zak555
08.01.19
✎
15:51
|
(5) раз в сутки и при записи даты рождения
|
|||
14
vde69
08.01.19
✎
15:51
|
(12) напиши значение сюда и тип значения
|
|||
15
zak555
08.01.19
✎
15:51
|
(11) разница в секундах )
|
|||
16
vde69
08.01.19
✎
15:53
|
(15) все зависит от типа реквизита "ДатаРождения" и данных записаных туда
|
|||
17
sieben
08.01.19
✎
15:53
|
(11) Да не работает оно так, дядь Дим. Надо к пустой дате количество секунд прибавлять.
|
|||
18
vde69
08.01.19
✎
15:54
|
(17) я знаю, что не работает, я пытаюсь человека подтолкнуть...
|
|||
19
sieben
08.01.19
✎
15:57
|
(18) Публикацией заранее неработающего кода? Отличное "подталкивание" новичков, что уж.
И кстати, ты еще не учел часовой пояс места рождения и места получения данных, это очень важно в операциях с датами! (: |
|||
20
vde69
08.01.19
✎
16:01
|
(19) ИХМО в сабже чисто учебная задача не имеющая к практике никакого отношения...
зы ни кто в здравом уме не придумает поле/реквизит "количество лет" |
|||
21
vde69
08.01.19
✎
16:03
|
(19) а по поводу часовых поясов и прочего - ты меня рассмешил, единственный нюанс - это високосный год...
но в большинстве случаев им можно пренебречь |
|||
22
Kirill123455
08.01.19
✎
16:04
|
(14) КоличествоЛет - тип число
ДатаРождения - тип дата |
|||
23
vde69
08.01.19
✎
16:08
|
(22) ну так какое значение возвращает отладчик если в нем вычислить ТекущаяДата()-ДатаРождения
напиши сюда значение которое получается в результате вычитания... а потом подумай, что это получается дни, секунды или вообще не верное значение |
|||
24
Kirill123455
08.01.19
✎
16:11
|
(23) Отладчик ничего не возвращает, пустое поле
|
|||
25
vde69
08.01.19
✎
16:14
|
(24) замечательно....
выполни такой код Сообщить(ТекущаяДата() + " / " + ДатаРождения + " / " + (ТекущаяДата()-ДатаРождения)) и результат сюда |
|||
26
Kirill123455
08.01.19
✎
16:15
|
(25) На какое событие это прописать?
|
|||
27
Конструктор1С
08.01.19
✎
16:16
|
(0) хранить в статичном поле динамичные данные не есть гуд
|
|||
28
vde69
08.01.19
✎
16:17
|
в форме на любое событие (например ПослеЗаписи), только возможно ДатаРождения надо юзать типа Объект.ДатаРождения или аналогично
|
|||
29
Kirill123455
08.01.19
✎
16:23
|
(28) А куда будет отображаться результат?
|
|||
30
vde69
08.01.19
✎
16:27
|
почитай про "Сообщить"
а вообще все что тебе нужно это решить (23) и понять по чему у тебя (24) на сим я раскланиваюсь ибо и подозреваю, что Вам начало надо на курсы сходить, хоть как-то поучится а потом уже пытаться что-то реализовывать |
|||
31
MetaDon
08.01.19
✎
16:29
|
(0) любое решение неверным будет если не требовать от ОК вписывать ДР с точностью до секунды;)
|
|||
32
Fram
08.01.19
✎
16:52
|
(27) не умничай. Ему ещё до таких истин как до луны
|
|||
33
sieben
08.01.19
✎
16:58
|
(25) Ну хватит над новичком-то издеваться. Как сам-то думаешь, что будет, если к дате начать прибавлять строку?
|
|||
34
Конструктор1С
08.01.19
✎
17:04
|
Функция ОпределитьВозрастВГодах(ДатаРождения, ТекущаяДата)
ВозрастЛет = Год(ТекущаяДата) - Год(ДатаРождения); МесяцРождения = Месяц(ДатаРождения); МесяцТекущий = Месяц(ТекущаяДата); ДеньРождения = День(ДатаРождения); ДеньТекущий = День(ТекущаяДата); ДеньРожденияБыл = Ложь; Если МесяцТекущий > МесяцРождения Тогда ДеньРожденияБыл = Истина; ИначеЕсли МесяцТекущий = МесяцРождения И ДеньРождения <= ДеньТекущий Тогда ДеньРожденияБыл = Истина; КонецЕсли; Если Не ДеньРожденияБыл Тогда // В этом году день рождения ещё не отмечал ВозрастЛет = ВозрастЛет - 1; КонецЕсли; Возврат ВозрастЛет; КонецФункции |
|||
35
ГдеСобака Зарыта
08.01.19
✎
17:38
|
Еще вариант
Функция ОпределитьВозрастВГодах(ДатаРождения, ТекущаяДата) Запрос = Новый Запрос; Запрос.УстановитьПараметр("ДатаРождения", ДатаРождения); Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата); Запрос.Текст = "ВЫБРАТЬ | РАЗНОСТЬДАТ(&ДатаРождения, &ТекущаяДата, МЕСЯЦ) / 12 - ВЫБОР | КОГДА МЕСЯЦ(&ДатаРождения) = МЕСЯЦ(&ТекущаяДата) | И ДЕНЬ(&ДатаРождения) > ДЕНЬ(&ТекущаяДата) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ КАК КолВоЛет"; Возврат ЦЕЛ(Запрос.Выполнить().Выгрузить().Получить(0).КолВоЛет); КонецФункции |
|||
36
g00d
08.01.19
✎
20:15
|
окр(ТекущаяДата()-ДатаРождения / 86400 / 365, режимокругления.до0)
|
|||
37
Fram
08.01.19
✎
20:48
|
(36) корректнее все таки ... / 365.25
|
|||
38
palsergeich
08.01.19
✎
22:47
|
(35) Подозрительно похоже на мой код с одного из прошлых мест работы....
|
|||
39
palsergeich
08.01.19
✎
22:47
|
Совпадает название функции и псевдоним...
Подозрительно. |
|||
40
ГдеСобака Зарыта
09.01.19
✎
10:21
|
(39) Это не ко мне. Я скопипастил из (34).
|
|||
41
Cyberhawk
09.01.19
✎
14:46
|
(40) А откуда псевдоним "КолВоЛет" взял?
|
|||
42
ГдеСобака Зарыта
09.01.19
✎
14:59
|
(41) Ну все. Меня разоблачили. Я бессовестно пользую плоды интеллектуальной собственности Пал Сергеича. Да еще и выдаю их за свои на профильных форумах, пытаясь поднять значимость в глазах коллег. Очень стыдно, пойду брошусь в окно.
|
|||
43
НЕА123
09.01.19
✎
15:39
|
Год('0001-01-01'+ (ТекущаяДата() - ДатаРождения) ) - 1
|
|||
44
Cyberhawk
09.01.19
✎
15:56
|
(42) Так Я без стеба спросил - сам псевдоним придумал?
|
|||
45
Fram
09.01.19
✎
21:01
|
(43) красиво
|
|||
46
palsergeich
09.01.19
✎
21:05
|
(42) Та пофиг абсолютно))))
|
|||
47
sieben
09.01.19
✎
22:26
|
(38) Так вот ты какой - человек, который не может умножить два на два без SQL сервера!
|
|||
48
Serg_1960
09.01.19
✎
23:21
|
(44) А что тут такого? У меня, например, тоже привычка писать вместо "Количество..." сокращение "КолВо..." - привычка сохранилась с тех пор, когда в языках ограничивали количество символов в наименованиях.
|
|||
49
RomaH
naïve
10.01.19
✎
07:07
|
(34) как все сложно и запутано
зачем день рождения считать если достаточно разницы? Функция ПолучитьВозрастЧисломЛет(Знач ДатаРождения,Знач ДатаРасчета) Экспорт Если ДатаРасчета = '00010101' Тогда ДатаРасчета = ТекущаяДата(); КонецЕсли; Возраст = 0; ПриведеннаяДатаРождения = '00010101' + (НачалоДня(ДатаРасчета) - ДатаРождения); ПолныхЛет = Год(ПриведеннаяДатаРождения)-1; Возраст = ПолныхЛет; Возврат Возраст; КонецФункции |
|||
50
Конструктор1С
10.01.19
✎
08:18
|
(49) проверил, эта функция обижает родившихся 29 февраля. Моя функция по родившимся 29 февраля отрабатывает нормально
|
|||
51
DGorgoN
10.01.19
✎
08:22
|
(49) Год(ТекущаяДата()) - Год(ДатаРождения) не проще?
|
|||
52
Конструктор1С
10.01.19
✎
08:46
|
(51) проще, но не корректно. Для родившегося 31.01.2018 на дату 01.01.2019 покажет 1 год
|
|||
53
Cyberhawk
10.01.19
✎
10:11
|
(48) Не по стандартам с ИТС это, однако. И даже не по правилам русского языка.
|
|||
54
Eiffil123
10.01.19
✎
10:13
|
(6) а что за +6?
|
|||
55
Fram
10.01.19
✎
10:17
|
(54) каждый 4 год високосный, однако
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |