Как в коде правильнее прибавлять количество дней к дате?

1. user1194102 05.03.20 10:07 Сейчас в теме
Как в коде к текущей дате добавить несколько дней правильно?

В запросе это сделать наверно легко
ДОБАВИТЬКДАТЕ(ВТ_Осн.ДатаДокумента, МЕСЯЦ, ВТ_Осн.СрокИспользования) 
https://forum.infostart.ru

В коде месяц добавить тоже в СП есть функция
ДеньРожденияБудущегоГода = ДобавитьМесяц(
    (ДобавитьМесяц(НачалоДня(ТекущаяДата()), -(Год(ДатаРождения) - 1) * 12)), 
    (Год(ТекущаяДата()) * 12));


А вот как день добавить? Нашел только такой вариант, но на сколько это правильно хотелось бы узнать.
НоваяДата = НоваяДата+2*86400;
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. d.batovskiy 05.03.20 11:23 Сейчас в теме
(1)
НоваяДата = НоваяДата+2*86400;

Да так правильно
EvgeniyOlxovskiy; Rafaraf; Bespechnii_kot; v3rter; user1194102; +5 Ответить
6. user1194102 05.03.20 12:29 Сейчас в теме
(4) А функцию разработчики забыли такую написать? А то не очень красиво через плюсики считать. Для запроса же написали.
olexi2012; +1 Ответить
9. d.batovskiy 05.03.20 12:44 Сейчас в теме
(6)Не знаю, но можно самим написать и вызывать ее, конечно могли сделать на уровне платформы.
2. Alexei_Siva 205 05.03.20 10:15 Сейчас в теме
Нужно добавить количество секунд к дате
Для наглядности если нужно, к примеру, 2 дня прибавить, то это можно выразить так
НоваяДата = НоваяДата+2*24*3600;
3. duhin 05.03.20 10:33 Сейчас в теме
Я пишу
НоваяДата = НоваяДата + 2 * 24 * 60 * 60;

Зачем мозг магическими константами загружать, и так есть чего туда толкать)
Rafaraf; Светлый ум; klaus38; ant1773; +4 Ответить
5. MuxaH 05.03.20 11:48 Сейчас в теме
(3) Интересно... Что быстрее выполнится - одно сложение и одно умножение или одно сложение и 3 умножения... Но это вопрос, конечно, риторический :)
8. user1194102 05.03.20 12:34 Сейчас в теме
(5) вопрос не во времени, просто не очень красиво с плюсиками, но конечно музыку заказывает тот кто платит, собственно мы и платим, когда покупаем ПО. Замкнутый круг.
14. ant1773 6 06.03.20 11:44 Сейчас в теме
(5) И то и то выполнится в абсолютно приемлемые для пользователя сроки.

ЗЫ Дата2 = Дата1 + 86400*КолВоДней; //это на автомате
16. MuxaH 06.03.20 16:41 Сейчас в теме
(14) Я и говорю, что вопрос риторический - с точки зрения пользователя и с точки зрения тактов процессора...
17. starik-2005 3169 06.03.20 17:34 Сейчас в теме
(5)
Интересно... Что быстрее выполнится - одно сложение и одно умножение или одно сложение и 3 умножения... Но это вопрос, конечно, риторический :)
Для компилятора (а 1С все-таки в свой байт-код компилирует синтаксис - поглядите статейку про 1.с-ассемблер) все выражения с константами предварительно предвычисляются. В итоге все перемножится и сложится, а потом уже в цикле будет обрабатываться. Так что одинаково.
7. user1194102 05.03.20 12:30 Сейчас в теме
(3) иногда полезно мозги включать, а то могут поржаветь.
10. herfis 515 05.03.20 12:51 Сейчас в теме
86400 - это часть культурного кода одинэсников :)
zoikins; AloneWolf; +2 Ответить
11. user1194102 05.03.20 13:27 Сейчас в теме
(10) не уверен, у них есть более глобальные доработки, и в целом за программу 1С твердая 5с плюсом, сколько программистов нашли таким образом работу по интересу. Но 86400 это что-то символичное для 1С видимо, как например 256 в сентябре для программистов вообще. Может у них Зав кафедрой или доктор наук придумал такую функцию добавления одного дня и они решили увековечить для всех, мы же не знаем все подробностей истории разработки 1С.
12. DWZ2 06.03.20 01:33 Сейчас в теме
(11) Пять с плюсом, говорите? А ТАКОЕ *штатное* поведение, по-Вашему, нормально???
Прикрепленные файлы:
15. user1194102 06.03.20 12:19 Сейчас в теме
(12) я не имел в виду ошибки программы, даже больше скажу есть мнение программеров, что сам движок 1С имеет достаточно большие пробелы, хотя бы вот по этой статье.. Я имел в виду, что код открыт для программирования и это очень хорошее решение. А то, что не идет, у 1С при желании можно настроить самому, ну или заказать, или обойти как-то. Мне например не нравится, что 1С скрывает документацию по новым разработанным функциям, нужно за деньги покупать книги и итсы и тд. Хотя это же рабочая документация к купленной моей организацией ПО. Но сам факт, что открыт код для доработки программ, это очень хорошее решение. К примеру Microsoft Visual C++ для Visual Studio 2015 тоже пошла по пути 1С, так ничего лучше не двигает прогресс, как открытый код, но конечно это мое субъективное мнение. А Linux, у них тоже отрытый код и платформа пользуется очень большой популярностью.
18. DWZ2 07.03.20 14:17 Сейчас в теме
(15) К сожалению, это НЕ ошибки.
19. user1194102 07.03.20 15:40 Сейчас в теме
21. AlexO 136 07.03.20 17:44 Сейчас в теме
(19)видимо, веселые истории))
20. AlexO 136 07.03.20 17:41 Сейчас в теме
(15)
К примеру Microsoft Visual C++ для Visual Studio 2015 тоже пошла по пути 1С, так ничего лучше не двигает прогресс, как открытый код
Открытый код - чего? VS дописывает свободное сообщество разработчиков по лицензии GPL? Тем более, рядом с MS вы тут и про Linux.
22. user1194102 07.03.20 20:22 Сейчас в теме
(20) ну может не верно выразился, я имел в виду, что можно на законном основании взять VS и на си писать код. Ну и линукс не нужно покупать, скачал из интернета дистрибутив, поставил и все операционка есть, можно работать. Взять к примеру СБИС там вы сможете только выполнять настройку программы, изменить код и что-то настроить возможности нет. Ну или тот же Word, Exel тексты можно там писать, но нет возможности выполнять свои доработки. А в 1С код для программирования открыт и программистам есть большое поле для работы.
13. пользователь 06.03.20 11:17
Сообщение было скрыто модератором.
...
23. lev6975 05.07.22 01:08 Сейчас в теме
Весь прикол в том что года и месяца плавают, то 366, то 29, а дни перманентны, поэтому одинэсники не написали функции, я думаю
С днем рождения таки не понял, к чему такой изврат
Можно просто
ДеньРожденияБудущегоГода = Дата(Год(ДатаРождения) + 1, Месяц(ДатаРождения), День(ДатаРождения))
24. PlatonStepan 38 05.07.22 07:48 Сейчас в теме
(23)
Не работает у тебя с датой '20040229' ))
для дня рождения сойдёт и :
ДеньРожденияБудущегоГода = ДобавитьМесяц(ДатаРождения, 12);

а вот для другого варианта вычисления дат, когда при нехватке дней нужно переходить на первые числа следующего месяца, наверно и нужно городить этот пазл
25. Motive18 09.07.24 15:01 Сейчас в теме
ОбщегоНазначенияУТКлиентСервер.ДобавитьКДатеВремя()
DoReMu; user1883157; LomayaZakat; Tatyana_012345; slige; Andrei.Sevostyanov; +6 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот