Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Заготовки для 1C:FAQ > Как правильно сравнить только их первую часть (дату)?


Автор: Artega 28.10.07, 11:54
Есть две даты в формате Дата+Время. Как правильно сравнить только их первую часть (дату)?

Любая дата (переменная, поле ввода или реквизит формы) всегда состоит из 2х частей, дата и время (независимо от уточнения типа - только дата, только время или дата+время). Для любой операции с датами (когда время неважно) нужно привести даты к единой временной точке. Например сравнение дат можно сделать так:

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    НачалоДня(Дата1) > = < НачалоДня(Дата2)


Вообще приведение даты-времени к некоторой дискретной временнОй точке из некоторой периодической последовательности выполняют функции:
{Начало|Конец}{Минуты|Часа|Дня|Недели|Месяца|Квартала|Года}()
К сожалению не существует простых методов выделения одной из составных частей даты.
______________________________________
Поправки:

1. Если в v8 создать реквизит (у документа, справочника, формы, ...) с типом "Дата" и уточнением "ЧастиДаты.Дата", то при записи любой даты в такой реквизит она автоматически приводится к началу дня, поэтому дальнейшее приведение с ней делать не требуется (хотя она по прежнему сохраняет составной тип "Дата+Время").

2. При переносе объектов из v7.х в v8 через OLE (или как тот иначе), даты документов (а так же прочие реквизиты типа "Дата") преобразуются в формат "Дата+Время". Но так как составляющей времени в v7.x изначально нет, то дата в этом случае автоматически приводиться к началу дня.

3. Так же возможно сравнение дат (частей дат) другим способом, например пересчетом разности дат из секунд в дни (часы, недели, ...) или при помощи функций выделения составляющих даты (года, месяца, ...) но не без подводных камней!. (например разность в 1 секунду между двумя датами не гарантирует, что обе даты входят в одни сутки, а сверяя на больше/меньше день из двух дат нужно помнить про месяц и год).

Автор: evGenius 28.10.07, 17:06
Надо копирайты ставить:
http://itland.ru/forum//lofiversion/index.php/t606.html

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)