Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 16:43

Подсчет даты

Автор макс, 18 авг 2010, 06:19

0 Пользователей и 1 гость просматривают эту тему.

макс

Есть 2 полеВвода с типом дата, надо подсчитать количество дней от датыНачала до ДатыОкончания, вот этот алгоритм считает только за текущий год, а мне надо сделать за любой, подскажите пожалуйста?

Если ЗначениеЗаполнено(ДатаНачалаОсновногоОтпуска) И ЗначениеЗаполнено(ДатаОкончанияОсновногоОтпуска) Тогда
      Запрос = Новый Запрос;
      Запрос.УстановитьПараметр("ДатаНачалаОтпуска",      ДатаНачалаОсновногоОтпуска);
      Запрос.УстановитьПараметр("ДатаОкончанияОтпуска",   ДатаОкончанияОсновногоОтпуска);
      Запрос.Текст =
      "ВЫБРАТЬ
      |   СУММА(РегламентированныйПроизводственныйКалендарь.КалендарныеДни) КАК КоличествоДнейОтпуска
      |ИЗ
      |   РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
      |ГДЕ
      |   РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачалаОтпуска И &ДатаОкончанияОтпуска";   
      Выборка = Запрос.Выполнить().Выбрать();
      Если Выборка.Следующий() Тогда
         Если Выборка.КоличествоДнейОтпуска <> КоличествоДнейОсновногоОтпуска Тогда
            Если КоличествоДнейОсновногоОтпуска <> 0 Тогда
               //зададим вопрос, хочется ли пересчитать количество дней отпуска 
               ТекстВопроса = "Указанный в документе период отпуска
               |не соответствует количеству дней отпуска!
               |Изменить количество дней отпуска?";
               Ответ  = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет);
               Если Ответ = КодВозвратаДиалога.Да Тогда
                  КоличествоДнейОсновногоОтпуска = Выборка.КоличествоДнейОтпуска;
               КонецЕсли;
            Иначе
               КоличествоДнейОсновногоОтпуска = Выборка.КоличествоДнейОтпуска;
            КонецЕсли;
         Иначе
            // даты совпали, ничего менять не нужно
         КонецЕсли;
      Иначе
         // не удалось получить количество дней отпуска запросом
         Сообщить("Проверьте заполнение производственного календаря!");
      КонецЕсли;
   КонецЕсли;

YouAreEmpty

отнимаешь от даты конца  даты начала и прибавляешь 1

макс

мне надо решение в числовом виде
Пр. ДатаНачала(18.06.2010), ДатаОкончания(23.08.2010), Результат = 66 дней

***Vjacheslav***

(ДатаКонца-ДатаНачала)/86400 

86400- количество секунд в одном дне

***Vjacheslav***

результат вычитания одной даты из другой есть количество секунд между датами, поэтому /86400 получается количество дней в числовом виде.

YouAreEmpty

Цитата: ***Vjacheslav*** от 20 авг 2010, 10:50
результат вычитания одной даты из другой есть количество секунд между датами, поэтому /86400 получается количество дней в числовом виде.

Эт у меня пережитки семерки, там результат это количество дней между датами))

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск