8.х Как посчитать срок дней

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Эмиль0690, 14 авг 2014.

  1. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    Добрый день Всем!
    Нужно посчитать срок пробега авто т.е есть Объект.ДатаВыезда и Объект.ДатаЗаезда.
    Например Объект.ДатаВыезда (01.08.2014-22:00) - Объект.ДатаЗаезда (14.08.2014-09:20) = Объект.Срок (14 дней 11 час 20 мин )
    либо хотя бы без времени просто 14 д
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Если будете одну дату вычитать из другой, то получите разность между датами в секундах. Улавливаете мысль ?
  3. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    + а потом переводите в дни, часы и минуты.. чистая математика
  4. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    аха улавливаю...
    Покажите пожалуйста пример
  5. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Видать не улавливаете. 86400 секунд в сутках. 86400/24=3600/60=60. Соответственно ровно 1 день.
  6. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    как правильно Преобразование значения к типу Число?
    Код:
    {Документ.Выезды1.Форма.ФормаДокумента.Форма(63)}: Преобразование значения к типу Число не может быть выполнено
        Объект.Срок = ((Объект.ДатаВыезда/24/60) - (Объект.ДатаЗаезда/24/60));
  7. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    вы сначала даты вычитаете - на выходе получите число, а уже его переводите. Вам же написали - следуйте инструкции
  8. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    Код:
    Объект.ДатаВыезда = Объект.ДатаВыезда/24/60;
        Объект.ДатаЗаезда = Объект.ДатаЗаезда/24/60;
        Объект.Срок = Объект.ДатаЗаезда - Объект.ДатаВыезда;
    
    так?
  9. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Эмиль, вы понимаете что вы делаете и с какими переменными вы работаете? или вы тут тролить вздумали?
    В последний раз разжевываю: Дата она и в Африке дата. Вам надо получить разность дат, а потом полученный результат (с типом число), преобразовывать
  10. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    А не проще в запросе получить через РАЗНОСТЬДАТ()
    И получайте в чем Вам надо, в месяцах, днях, минутах, часах. Конеяно если составной то уже делите и получайте целую часть и т.д
  11. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    нет не понимаю поэтому к вам обратился за помощь.
    люди пример покажите пожалуйста!
  12. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    звездец, что вы такое программируете, что в типах запутались..
    Код:
    Секунды= Объект.ДатаЗаезда - Объект.ДатаВыезда;
    Дни = Секунды/ 60 / 60 / 24;
    Секунды= Секунды- Цел(Дни) * 24 * 60 * 60; //получили остаток секунд
    Часы = Секунды/ 60 / 60;
    Секунды= Секунды- Цел(Дни) * 60 * 60;//получили остаток секунд
    Минуты = Секунды / 60;
    Секунды = Секунды - Цел(Минуты) * 60;//получили остаток секунд
    Сообщить(Строка(Дни) + "день(дней) + Строка(Часы) + "часов" + Строка(Минуты) + "минут" + Строка(Секунды) + "Секунд");
    код на коленке - первое что пришло в голову...
  13. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    чисто кол-во дней в днях (целых) -
    Код:
    (НачалоДня(Объект.ДатаВыезда) - НачалоДня(Объект.ДатаЗаезда)) / 86400
    --- Объединение сообщений, 14 авг 2014 ---
    +
    http://help1c.com/faq/view/1420.html
    http://help1c.com/faq/cat/36.html
  14. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    Спасибо Всем!
    Сработал код #13 LordMaverick

    а код Tiger86 ошибку дает в сообщение символы поставил хуже стало но все-равно Большое Спасибо!
    Код:
    {Документ.Выезды1.Форма.ФормаДокумента.Форма(72,54)}: Ожидается символ ')'
    Сообщить(Строка(Дни) + "день(дней) + Строка(Часы) + "<<?>>часов" + Строка(Минуты) + "минут" + Строка(Секунды) + "Секунд"); (Проверка: Сервер)
    {Документ.Выезды1.Форма.ФормаДокумента.Форма(72,54)}: Ожидается символ ')'
    Сообщить(Строка(Дни) + "день(дней) + Строка(Часы) + "<<?>>часов" + Строка(Минуты) + "минут" + Строка(Секунды) + "Секунд"); (Проверка: Тонкий клиент)
    
  15. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    я кавычки пропустила. Ведь сказала же код на коленке написан - доведите до ума сами...
    --- Объединение сообщений, 14 авг 2014 ---
    код из 13 поста выдаст вам дни, но не часы и минуты.... так что то что вам помогло, разходится с вашим задание в 1 посте
  16. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    ну с последней строчкой его поста первого не расходиться :) потому так и привёл код
    -"либо хотя бы без времени просто 14 д"
  17. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну я тут спорить не буду.. автору виднее как ему надо с точностью или округленно

Поделиться этой страницей