В 1С:Предприятии 8 используется несколько типов для указания точки на временной оси: дата, момент времени, граница. Разберемся в чем разница между этими типами.
Дата
Тип Дата всегда включает в себя дату и время с точностью до секунды.
При создании реквизитов объектов и реквизитов форм можно ограничить ввод допустимых значений, задав свойство «состав даты»:
- Дата — можно вводить только дату, время всегда будет равно «00:00:00»;
- Время — можно вводить только время, дата всегда будет равна «0001.01.01»;
- Дата и время — можно вводить и дату, и время.
Вне зависимости от указанного свойства «состав даты», в базе данных дата хранится в едином формате, с точностью до секунды.
Как программно указать конкретную дату
В языке 1С можно задать с помощью:
- литерала типа Дата;
- функции Дата().
Литерал типа дата представляет собой строку цифр вида ‘ГГГГММДДччммсс’, заключенную в одинарные кавычки, например:
НужнаяДата = ‘20170911142955’;
Час, минуту и секунду указывать не обязательно.
В литерале даты допускается использование различных разделителей:
НужнаяДата = ‘2017-09-11 14:29:55’;
Функция Дата() имеет два варианта синтаксиса:
НужнаяДата = Дата(«20170911142955»);
НужнаяДата = Дата(2017, 09, 11, 14, 29, 55);
Пример указания пустой даты:
ПустаяДата = ‘00010101’;
ПустаяДата = Дата(1,1,1);
Как указать конкретную дату в запросе
В запросе для указания даты можно использовать:
- оператор ДАТАВРЕМЯ(<год>, <месяц>, <день>, <час>, <минута>, <секунда>);
- значение переданного параметра.
ВЫБРАТЬ
ДАТАВРЕМЯ(2017, 9, 11, 14, 29, 55) КАК ПримерДаты1,
ДАТАВРЕМЯ(2017, 9, 11) КАК ПримерДаты2,
&ПараметрДата КАК ПримерДаты3
Момент времени
Момент времени содержит дату, время и ссылку на объект базы данных, что позволяет однозначно идентифицировать объект на оси времени. Примеры получения момента времени:
Момент = Новый МоментВремени(ДокументСсылка.Дата, ДокументСсылка);
Момент = ДокументСсылка.МоментВремени();
Граница
Граница содержит точку на оси времени (например, секунду) и вид границы этой точки (Включая, Исключая).
Данный тип используется в тех случаях, когда важно указание включения или исключения граничного значения, например, при получении остатков в запросе.
Граница = Новый Граница(Дата, ВидГраницы.Включая);