Как из даты вычесть Год/Месяц/Дни #439585


#0 by Asdef
Товарищи, поскажите примерный алоритм сабжа. Пример: 26.10.2009 вычесть 1 г. 8 м. 15 д. равно= 12.02.2008 Нужно реализовать на 1С или VBA в Excel )
#1 by shadow_sw
берешь дату от которой надо отнять, потом 86400*кол-во отнимаемых дней=нужная дата
#2 by shadow_sw
это про 1с
#3 by skunk
считаешь количество месяцев ... отнимаешь штатное функцией месяца... и далее отнимаешь количество оставшихся дней умноженное 86400
#4 by Stim
посмотри в типовой Бухии расчет фактического срока использования ОС. Просветлись:)
#5 by Asdef
сорри, но не совсем понял, можно чуток поподробнее ? и чего делать с февралем, у него ж и 28 и 29 дней может быть
#6 by Asdef
а куда конкретно лезть? название процедуры?
#7 by Stim
нету под рукой компа, я с телефона сижу. Ищи через форму элемента справочника ОС на закладке Амортизация
#8 by Rie
ДобавитьМесяц учитывает эти нюансы.
#9 by Кураж
Налетели дятлы ) Гуру делают через "ВЫБРАТЬ РАЗНОСТЬДАТ(&Дата2,&Дата1,ДЕНЬ)"
#10 by Asdef
не нашел ничего...
#11 by Asdef
короче, народ, код на икселе такой: поправьте плиз, а то в итоге выводит 14.02.2008
#12 by Asdef
на моем примере как код писать та юзая эту функцию?
#13 by reg-aleks
нафиг год... Вычти функцией:    - вычтет 12 месяцев из твоей даты.. затем из полученного вычти дни: ПолеченнаяДата = ПолеченнаяДАта - 60*24*24 * КоличествоДней!
#14 by Rie
только 60*60*24
#15 by Asdef
60*24*24 - это что? куда ваще 1 г. 8 м. 15 д. пихать то?
#16 by reg-aleks
только 60*60*24 вычтет 1 день... а умножив на количество дней можно минусовать несколько дней
#17 by reg-aleks
упс. :) невнимательно :)))) да.. 60*60*24
#18 by Rie
В месяце не обязательно 30 дней, как было верно замечено ранее. Почему ты не хочешь работать со значениями типа Date?
#19 by Невский Александр
#20 by Asdef
в 1С ?
#21 by reg-aleks
1 г. 8 м. 15 д.
#22 by Rie
В 1С есть ДобавитьМесяц. В VBA есть DateAdd. Выбирай, что больше нравится.
#23 by Rie
+ А значения типа Date - они и в 1С есть.
#24 by reg-aleks
Скобки забыл!
#25 by Asdef
{Форма.Форма}: Преобразование значения к типу Дата не может быть выполнено    ТекущаяДата = ДобавитьМесяц(ТЕкущаяДата,(-1)*(КоличествоЛет*12+КоличествоМесяцев));
#26 by Asdef
а в икселе где месяц добавлять?
#27 by Rie
Там в параметрах DateAdd указывается, что добавляется - месяц, квартал и т.д.
#28 by Asdef
а, попробую )
#29 by Rie
ТекущаяДата - какое значение имела? Если строка - соответствовала ли представлению даты в 1С? Если нет - преобразуй.
#30 by Asdef
осталося с 1С разобраться
#31 by reg-aleks
КоличествоЛет и КоличествоМесяцев у тебя Числовые?? ПОпробуй переименовать переменные. ДатаКоторуюНадоПолучить = ДобавитьМесяц(ИсходнаяДата,(-1)*(КоличествоЛет*12+КоличествоМесяцев));
#32 by Asdef
так, добавил, все пашет, но итог не верный: 11.02.2008 0:00:00
#33 by Asdef
... или верный, ваще-та я за основу брал данные другой программы или же тут все дело в часах...
#34 by reg-aleks
насколько разница?
#35 by reg-aleks
ИсходнаяДата = ИсходнаяДата-60*60*24*КоличествоДней
#36 by reg-aleks
p.s. Блин...пообедал и ваще засыпаю и невнимательный))
#37 by Asdef
ладно, спасибо ;)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С