|   |   | 
| 
 | Количество лет клиенту | ☑ | ||
|---|---|---|---|---|
| 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 год високосный, однако     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |