Получает разницу дат в указанной единице изменения
// Получение запросом
// Возращает разницу переданных дат в указанном типе разницы
//
// Параметры:
// МеньшаяДата - Меньшая (Начальная) дата, к примеру дата документа
// БольшаяДата - Большая (Конечная) дата, к примеру текущая дата
// Тип - Тип разницы, поддерживается: секунда, минута, час, день, неделя, месяц, год
// ВыбиратьБольшуюДатуПервой - В случае если в качестве меньшей даты, указана большая, можно ли их поменять местами
//
// Порядок указания дат не пренципиален, функция сама определит какая из дат большая.
// По умолчанию тип разницы "день".
// Указывать тип можно в любом регистре.
// Возращает целое число!
//
Функция ПолучитьРазницуДатВ(Знач МеньшаяДата, Знач БольшаяДата, Тип = "день", ВыбиратьБольшуюДатуПервой = Истина) Экспорт
Тип = НРег(Тип);
Если МеньшаяДата > БольшаяДата и ВыбиратьБольшуюДатуПервой Тогда
ВремДата = БольшаяДата;
БольшаяДата = МеньшаяДата;
МеньшаяДата = ВремДата;
ИначеЕсли БольшаяДата = МеньшаяДата Тогда
Возврат 0;
КонецЕсли;
Если Тип = "сек" или Тип = "секунда" или Тип = "секунды" Тогда Возврат БольшаяДата - МеньшаяДата;
ИначеЕсли Тип = "мин" или Тип = "минута" или Тип = "минуты" Тогда Тип = "МИНУТА"
ИначеЕсли Тип = "час" или Тип = "часы" Тогда Тип = "ЧАС"
ИначеЕсли Тип = "день" или Тип = "дней" или Тип = "дни" Тогда Тип = "ДЕНЬ"
ИначеЕсли Тип = "неделя" или Тип = "недель" или Тип = "недели" Тогда Тип = "НЕДЕЛЯ"
ИначеЕсли Тип = "месяц" или Тип = "месяцев" или Тип = "месяцы" Тогда Тип = "МЕСЯЦ"
ИначеЕсли Тип = "год" или Тип = "лет" Тогда Тип = "ГОД"
Иначе Возврат 0;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("БольшаяДата", БольшаяДата);
Запрос.УстановитьПараметр("МеньшаяДата", МеньшаяДата);
Запрос.УстановитьПараметр("ВидСравнения", Тип);
Запрос.Текст= "ВЫБРАТЬ РАЗНОСТЬДАТ(&МеньшаяДата, &БольшаяДата, ДЕНЬ) КАК Разница";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ДЕНЬ", Тип);
Выборка = Запрос.Выполнить().Выбрать();
Возврат ?(Выборка.Следующий(), ?(Выборка.Разница <> Null, Выборка.Разница, 0), 0);
КонецФункции
// На клиенте
// Возращает разницу переданных дат в указанном типе разницы
//
// Параметры:
// МеньшаяДата - Меньшая (Начальная) дата, к примеру дата документа
// БольшаяДата - Большая (Конечная) дата, к примеру текущая дата
// Тип - Тип разницы, поддерживается: секунда, минута, час, день, неделя, месяц, год
// ВыбиратьБольшуюДатуПервой - В случае если в качестве меньшей даты, указана большая, можно ли их поменять местами
//
// Порядок указания дат не пренципиален, функция сама определит какая из дат большая.
// По умолчанию тип разницы "день".
// Указывать тип можно в любом регистре.
// Возращает целое число!
//
Функция ПолучитьРазницуДатВ(Знач МеньшаяДата, Знач БольшаяДата, Тип = "день", ВыбиратьБольшуюДатуПервой = Истина) Экспорт
Тип = НРег(Тип);
Если МеньшаяДата > БольшаяДата и ВыбиратьБольшуюДатуПервой Тогда
ВремДата = БольшаяДата;
БольшаяДата = МеньшаяДата;
МеньшаяДата = ВремДата;
ИначеЕсли БольшаяДата = МеньшаяДата Тогда
Возврат 0;
КонецЕсли;
Разница = БольшаяДата - МеньшаяДата;
Если Тип = "сек" или Тип = "секунда" или Тип = "секунды" Тогда
Возврат Разница;
ИначеЕсли Тип = "мин" или Тип = "минута" или Тип = "минуты" Тогда
Возврат Цел(Разница / 60);
ИначеЕсли Тип = "час" или Тип = "часы" Тогда
Возврат Цел(Разница / (60*60));
ИначеЕсли Тип = "день" или Тип = "дней" или Тип = "дни" Тогда
Возврат Цел(Разница / (60*60*24));
ИначеЕсли Тип = "неделя" или Тип = "недель" или Тип = "недели" Тогда
Возврат Цел(Разница / (60*60*24*7));
ИначеЕсли Тип = "месяц" или Тип = "месяцев" или Тип = "месяцы" Тогда
Возврат Цел(Разница / (60*60*24*30));
ИначеЕсли Тип = "год" или Тип = "лет" Тогда
Возврат Цел(Разница / (60*60*24*365));
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
{69} Высокая цикломатическая сложность: 28 Орфографическая ошибка в Возращает (найдено 4): Возращает Орфографическая ошибка в пренципиален (найдено 2): пренципиален
Как в запросе секунды преобразовать в часы и минуты
Получить представление [разницы] времени
Получить даты за период в запросе
ПолучитьИнтервалВремениИзСтроки (БСП)
ПолучитьНапоминанияТекущегоПользователя (БСП)
Цены на дату документа продажи