Имя: Пароль:
1C
 
Дата + 18 Лет
0 yurikmurmansk
 
18.11.08
11:37
Что то не получается никак к дате добавить 18 лет. Подскажите как попроще, а то я уже через временные таблицы делать начинаю.
1 Immortal
 
18.11.08
11:39
+ 86400*365*18
2 Fragster
 
гуру
18.11.08
11:39
мля.... разбери на день/месяц/год, прибавь к году 18, собери обратно... хоть через прарсинг строки, хоть как...
3 Fragster
 
гуру
18.11.08
11:39
(1) а високосные года учел?
4 Долорес И
 
18.11.08
11:39
Например, так: Дата(Год(Дата0)+18,Месяц(Дата0),День(Дата0))
5 Immortal
 
18.11.08
11:40
(3) на универсальность не претендую-)
6 Живой Ископаемый
 
18.11.08
11:40
(1,2) Хы... И получится что у человека через 18 лет Д.Р. будет не в тот день, который он родился... :)
7 Михей
 
18.11.08
11:40
ДобавитьМесяц(ДатаТвоя, 12*18)
8 Живой Ископаемый
 
18.11.08
11:41
(7) Молодец, думаю так правильно...
9 Fragster
 
гуру
18.11.08
11:42
(6) чО-та ты тупишь... в (2) все нормально - как в (4)
10 Stepa86
 
18.11.08
11:43
Запрос = Новый Запрос;
       
       Запрос.Текст = "ВЫБРАТЬ
       |    ДОБАВИТЬКДАТЕ(&ИсходнаяДата, Год, &Количество) как Дата";
       
       Запрос.УстановитьПараметр("ИсходнаяДата", пИсхДата);
       Запрос.УстановитьПараметр("Количество", пКоличество);
       
       Возврат Запрос.Выполнить().Выгрузить()[0].Дата;
11 Живой Ископаемый
 
18.11.08
11:44
(9) В (4) правильно, в (2) нет.. Проверь на своем Д.Р...
И прекрати фамильярничать.
12 YauheniL
 
18.11.08
11:45
(0) Тоже вариант
ДобавитьМесяц(Дата, 12*18)
13 Serg_1960
 
18.11.08
11:46
Если учесть слова автора "...а то я уже через временные таблицы делать начинаю" - то Стёпе за (10) - пять с плюсом :)
14 Живой Ископаемый
 
18.11.08
11:46
+(11) отстатвить, все правильно у тебя, но фамильярничать прекрати, а то в угол поставлю...
15 Fragster
 
гуру
18.11.08
11:46
(11) чем (4) отличается от «разбери на день/месяц/год, прибавь к году 18, собери обратно»?
16 Fragster
 
гуру
18.11.08
11:47
(14) вот по этому и «фамильярничаю», что правильно ;)
17 Живой Ископаемый
 
18.11.08
11:47
(15) Тем, что я не разбул с глазиков ботиночки и подумал что речь о (1)...
18 Serg_1960
 
18.11.08
11:49
Ну вот, началось :( И забыли все о тех, кто родился в високосный день :))
19 yurikmurmansk
 
18.11.08
11:50
Всем спасибо. Сделал по (7). Работает четко.
20 Immortal
 
18.11.08
11:52
(18) что, у тебя ДР 29 февраля?
21 Fragster
 
гуру
18.11.08
11:52
(19) кстати, если не влом, проверь, что быстрее - (7), или (4)
22 Stepa86
 
18.11.08
11:53
+(21) и (10) тоже =) хотя бы а правильность
23 Serg_1960
 
18.11.08
11:54
(19) Не, не у меня, - у старшего брата :)
24 Stepa86
 
18.11.08
11:54
а то я ж взял идею из "простых примеров разработки"

Как прибавить к дате день, месяц?
СледующийДень = ТекущаяДата() + 60 * 60 * 24;
ДобавитьМесяц(Дата(2005, 1, 31), 1)
ДобавитьМесяц(Дата(2005, 2, 28), -1)
КонецМесяца(ДобавитьМесяц(Дата(2005, 2, 28), -1))
ФункцияПолучитьДень(ИсходнаяДата, КоличествоПрибавляемыхДней)
   
   Запрос = НовыйЗапрос("
   |ВЫБРАТЬ
   |    ДОБАВИТЬКДАТЕ(&ИсходнаяДата, ДЕНЬ, &Количество) как Дата";

   Запрос.УстановитьПараметр("ИсходнаяДата", ИсходнаяДата);
   Запрос.УстановитьПараметр("Количество", КоличествоПрибавляемыхДней);
   
   ВозвратЗапрос.Выполнить().Выгрузить()[0].Дата;
   
КонецФункции
25 Immortal
 
18.11.08
11:56
(23) абалдеть. Вот повезло человеку ,)
26 Serg_1960
 
18.11.08
11:59
(25) Мне тоже повезло - родился в Старый Новый год. Так батя, - чёрт хитрый, упросил в метрике другую дату поставить :)
27 Живой Ископаемый
 
18.11.08
12:00
2(21) 4 не может преобразовать Сообщить(""+Дата((Год(Дата1)+18),Месяц(Дата1),День(Дата1))); при условии что Дата1=29.02.2005,
а (7) - может.. так что быстрее-медленнее...
28 Fragster
 
гуру
18.11.08
12:01
(27) а что (7) в таком случае возвращает?
29 Живой Ископаемый
 
18.11.08
12:03
Так как я использовал только дату, то есть время было 0 часов 0 минут, то есть первая половина дня, то оно мне вернуло 28 февраля...
30 Fragster
 
гуру
18.11.08
12:04
(29) а если 4*12 добавить, то?
(0) не для военкомата конфу ли рисуешь, автор?
31 noxxx
 
18.11.08
12:09
(27) В 2005 году в феврале 28 дней
32 Живой Ископаемый
 
18.11.08
12:10
(30)
http://docs.google.com/Doc?id=df8g2nxh_150hshtb3hb
что нибудь еще? :)
33 Живой Ископаемый
 
18.11.08
12:11
(31) промазал, имел в виду 29.02.2004
34 Serg_1960
 
18.11.08
12:11
Кстати это интересно: существуют ли правила переноса високосного дня?

Для переноса дат старого и нового стиля - такие правила есть:
По старому стилю По новому стилю
29 февраля 1700 года - 11 марта 1700 года
29 февраля 1800 года - 12 марта 1800 года
29 февраля 1900 года - 13 марта 1900 года
Источник: Википедия
35 nexxx
 
18.11.08
12:11
Для выяснения применимости поступившего предложения - естественно, нанимайте специалиста независимого. На 6-8 месяцев. (Рекомендую из конторы Эрнст и Янг. В последнее время - об этой конторе у мну, по опыту, складываеццо очень хорошее впечатление. ПрайсВатерхаузКуперз - не рекомендую /Хотя, пару лет назад порекомендовал бы./)

Для поиска вышеуказанного специалиста (а, возможно, и для его хедхантерской обработки) - нанимайте другого сильного специалиста.
Обоим этим московским специалистам, на период проживания в вашем городе, - оплачивайте бонусы, социал, квартиры, транспортные по выходным домой в Москву и обратно.

И всё у вас получится!

ЗЫ: Знаю много сильных проектов, которые пользуясь вот такими моими нехитрыми советами, успешно реализовали Мега-Проекты (довели Проекты до логического завершения, все стороны остались удовлетворены результатами, даже владельцы бизнеса). Люди реально сэкономили себе ГОДЫ времени и МИЛЛИОНЫ долларов денег, удосужившись нанять на первоначальном этапе двух вышеуказанных специалистов.
36 Fragster
 
гуру
18.11.08
12:12
(32) в цикле на миллион, пожалуйста, а то погрешность большая ;)
37 noxxx
 
18.11.08
12:13
(35) - это точно сюда?
38 Sorg_1960
 
18.11.08
12:14
(14): УПС....
А я уж тут набил большой постинг с контактами Пуделя и СунШина, но что-то долго таймаут проходил... Случайно обновил ветку...

ОК. Сижу на попе ровно. Мну и тут неплохо кормят.

"Идиоты не станут платить такие вознаграждения"
- За "идиотов" - простите, если обидел.
Но это фраза из Ильфа и Петрова (не более и не менее).
Фраза, идеально подходящая в контекст моего постинга.
И для всех, знакомых с первоисточником, абсолютно необидная фраза.
39 elisem
 
18.11.08
12:14
(34) я правильно понимаю, что на 2000 году еще один день никто не прибавил?
40 Fragster
 
гуру
18.11.08
12:14
кто-то тут под юзеров маскируется... нех, теперь сорж..
41 Живой Ископаемый
 
18.11.08
12:20
10 тыщ с тебя хватит:
http://docs.google.com/Doc?id=df8g2nxh_152drdwgng6
42 etisem
 
18.11.08
12:22
Организация занимается торговлей (опт и розница). Поступило предложение организовать учет так, чтобы и торговля и бухгалтерия и зар.плата и управленческий учет все было в одной программе.Да еще с возможностью вести несколько организаций вместе.
Из опыта работы с УПП, что подскажете? Не запаримся ли мы с большим объемом в одном месте, какие проблемы возникают в связи с этим?
43 Serg_1960
 
18.11.08
13:05
(39) Следующий перевод даты "ожидается" 29 февраля 2100. А вот что было в 2000 - не помню :(
44 Fragster
 
гуру
18.11.08
13:07
(41) ну, по крайней мере, понятно, что работает с одной скоростью, причем, может и принцип одинаковый :) ... а что там за «Ж»? ;)
45 Serg_1960
 
18.11.08
13:08
Вот что пишет С.С.Куликов: про разницу в днях: "Ранее она была меньше и возрастала от нуля в III в. на единицу в каждом следующем «сотом» году, кроме годов 400, 800, 1200, 1600, - в этих годах разница не увеличивается. Не увелилась она и в 2000 г." Источник: статья http://crydee.sai.msu.ru/Universe_and_us/4num/v4pap13.htm
46 Живой Ископаемый
 
18.11.08
13:16
(43) nj же, что и в 1600 - первые две цифры делятся на 4...
47 Serg_1960
 
18.11.08
13:33
Есть такое правило: "перенос даты на предыдущий день"?

Сорри, автор, я на себя одеяло стянул :) - но работая с датами, складывая и отнимая, - можно получить не существующую дату (например 31 число для месяца в котором 30 дней).
48 hulio_ekb
 
18.11.08
13:41
(0) А ДобавитьМесяц(Дата, 18*12) не катит?
49 Serg_1960
 
18.11.08
13:43
(48) См. (7), (12) и последующие обсуждение :)
50 Долорес И
 
18.11.08
13:45
а чо ДобавитьМесяц(Дата, 18*12) никто не предложит?
51 hulio_ekb
 
18.11.08
13:46
(49) Сорри, не увидел сразу :))
52 YauheniL
 
18.11.08
13:46
(50) влом
53 PR
 
18.11.08
13:49
Ответ в (7), а столько хрени написали :o)
54 Serg_1960
 
18.11.08
14:01
(53) Присоединяйся :)) "без хрени" напиши: 29.02.2004(8) + 18 лет это будет...
55 PR
 
18.11.08
16:35
(54) 28.02.2022
Еще раз, ответ в (7).
56 gr13
 
18.11.08
16:40
(55) +1


а почему так нельзя?

ФункцияПолучитьДень(ИсходнаяДата, КоличествоПрибавляемыхДней)
   
ИсходнаяДата = Дата(2008, 11, 18);
   Запрос = НовыйЗапрос("
   |ВЫБРАТЬ
   |    ДОБАВИТЬКДАТЕ(&ИсходнаяДата, Год, &Количество) как Дата";

   Запрос.УстановитьПараметр("ИсходнаяДата", ИсходнаяДата);
   Запрос.УстановитьПараметр("Количество", 18);
   
   ВозвратЗапрос.Выполнить().Выгрузить()[0].Дата;
   
КонецФункции
57 PR
 
18.11.08
16:45
(56) Потому что так сложнее :))
58 gr13
 
18.11.08
16:46
(57) согласен))) просто в 24 еще сложнее)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший