8.х РазностьДат

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Swl68, 29 сен 2012.

  1. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Необходимо посчитать количество дней между датой приема и датой увольнения и привести в формат ДД.ММ.ГГГГ. Заранее благодарен
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Поможет функция РАЗНОСТЬДАТ. Простите, а как Вы хотите количество дней перевести в формат ДД.ММ.ГГГГ? Как Вы видите цифру 36 в этом формате?
  3. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    а если так... РАЗНОСТЬДАТ(Дата приема, Дата Увольнения, ? ), чтобы получить например такой вид(11.11.2011) какой тип вписать нужно для этого?
  4. Annie
    Offline

    Annie Опытный в 1С Команда форума

    Регистрация:
    10 фев 2010
    Сообщения:
    949
    Симпатии:
    23
    Баллы:
    29
    Swl68, поймите, РАЗНОСТЬДАТ возвращает тип Число, а не Дата. :smile:
  5. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    Код:
    РазностьДатВСекундах=Дата1-Дата2;
    РазностьДатВДнях=РазностьДатВСекундах / 24*60*60;
    как вы представляете себе разность дат в виде конкретной даты?.. непонятно..
  6. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Я уже спрашивал у чувака это. :D Что-то мне подсказывает, что ему нужно немного другое. Вам что нужно сделать то? Может быть Вы немного неправильно задание понимаете.
  7. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    нет, сказали количетсво дней полученное в результате разности дат переделать в более читабельный формат...
  8. abelly
    Offline

    abelly

    Регистрация:
    30 сен 2012
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    найдете решение - поделитесь, не скрывайте.
  9. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    это сарказм?
  10. abelly
    Offline

    abelly

    Регистрация:
    30 сен 2012
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    нет , просто хочу в своей базе все числа перевести в "более читабельный формат" - а то бухам трудно - формат нечитабельный нифига
  11. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    я его тоже немного непонял...
  12. abelly
    Offline

    abelly

    Регистрация:
    30 сен 2012
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    я думаю там просто рюшечки какие-то нужны
  13. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    чтоб лапупырилось =)
  14. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Может так :
    06.01.00 - 6 дней и 1 месяц и 0 лет :D
  15. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    А месяц какой? Январь, февраль высокосного года или апрель? :icon_kringeln:
  16. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    :sm_wink: да я крут..


    Код:
    ВЫБРАТЬ
    РАЗНОСТЬДАТ(&МойДеньРождения, &ТекущаяДата, ГОД) КАК Лет,
    РАЗНОСТЬДАТ(&МойДеньРождения, &ТекущаяДата, МЕСЯЦ) - РАЗНОСТЬДАТ(&МойДеньРождения, &ТекущаяДата, ГОД) * 12 КАК Месяцев,
    РАЗНОСТЬДАТ(&МойДеньРождения, &ТекущаяДата, ДЕНЬ) - РАЗНОСТЬДАТ(&МойДеньРождения, &ТекущаяДата, ГОД) * 365 КАК Дней
    осталось только посчитать количество високосных лет и добавить их к дням..

    нее.. с днями накосячил.. щас некогда. потом додумаю.
  17. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    В таком случае проще воспользоваться типовой процедурой
    Код:
    Процедура РазобратьРазностьДат(Дата1, Дата2, Лет = 0, Месяцев = 0, Дней = 0) Экспорт
    
    Лет  = 0;
    Месяцев = 0;
    Дней = 0;
    Если Дата1 > Дата2 Тогда
    
    ВременнаяДата = Дата1;
    Если День(ВременнаяДата) < День(Дата2) Тогда
    Дней = (ВременнаяДата - ДобавитьМесяц(ВременнаяДата,-1))/86400;
    ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-1);
    КонецЕсли;
    Если Месяц(ВременнаяДата) < Месяц(Дата2) Тогда
    ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-12);
    Месяцев = 12;
    КонецЕсли;
    Лет  = Макс(    Год(ВременнаяДата)  - Год(Дата2), 0);
    Месяцев = Макс(Месяцев + Месяц(ВременнаяДата) - Месяц(Дата2), 0);
    Дней = Макс(Дней  + День(ВременнаяДата) - День(Дата2), 0);
    
    // скорректируем отображаемое значение, если "вмешалось" разное количество дней в месяцах
    Если Дата2 <> (ДобавитьМесяц(Дата1,-Лет*12-Месяцев)-Дней*86400) Тогда
    Дней = Дней + ((ДобавитьМесяц(Дата1,-Лет*12-Месяцев)-Дней*86400) - Дата2)/86400;
    //(День(КонецМесяца(Дата2)) - День(НачалоМесяца(Дата2))) - (День(КонецМесяца(ДобавитьМесяц(Дата1,-1))) - День(НачалоМесяца(ДобавитьМесяц(Дата1,-1))));
    КонецЕсли;
    
    КонецЕсли;
    КонецПроцедуры

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