Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Дата
Значения данного типа содержит дату григорианского календаря (с 01 января 0001 года) и время с точностью до 0,1 миллисекунды.
Литералы:
Строка цифр, заключенная в одинарные кавычки вида: ‘ГГГГММДДччммсс’, где:
- ГГГГ — четыре цифры года (включая тысячелетие и век);
- ММ — две цифры месяца;
- ДД — две цифры даты;
- чч — две цифры часа (в 24-х часовом формате);
- мм — две цифры минут;
- сс — две цифры секунд;
Во встроенном языке в литерале типа Дата обязательно должно задаваться значение года, месяца и дня. Для задания даты соответствующей началу отсчета достаточно указать ‘00010101’. Допускается при указании литералов типа Дата опускать последние символы (секунды, минуты, часы и т.д.). Это означает, что данные параметры будут равны нулю (для времени) или единице (для даты). В литерале даты допускается использование различных разделителей.
Работа с типом Дата в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
В программе 1с 8-ой версии Дата это объект, который состоит из самой календарной даты и времени.
При программировании можно использовать следующие конструкции для оперирования временем:
Чтобы получить объект «Дата» существует несколько способов. Например, чтобы установить программно дату «30.12.2010 23:59:59»:
В запросах для получения даты используется метод «ДатаВремя»:
Пустая дата это нулевая секунда нулевого года, а т.к. отсчет идет от Рождества Христова, то и получается следующая запись:
В запросе это будет выглядеть проще:
Чтобы вычислить разницу дат нужно из большей даты вычесть меньшую, но при этом программа вернет разницу в секундах.
Поэтому надо исходить из того какой тип результата нас интересует. Например, если нас интересует только разница в днях, то можно написать так:
В случае если нужна полная разница(Лет, месяцев, дней) между датами то есть следующие варианты:
1. Алгоритм который первый приходит в голову, НЕ точный :
Ещё раз подчеркну, что предыдущий алгоритм приблизительный т.к. не учитывает точное количество дней в месяце.
2. Более точен следующий алгоритм описанный в типовой конфигурации, например, в ЗУП:
Для запросов же можно использовать способ предложенный здесь: http://kb.mista.ru/article.php? >
Автор взял за основу предыдущую процедуру и перевел её на язык запросов так для вычисления года нужно записать следующее(я немного изменил запрос для наглядности):
Время
Для получения значений времени используются следующие методы:
В запросах для получения времени используются функции с такими же названиями:
Дата — один из примитивных типов данных в системе 1С:Предприятие. Дата всегда имеет формат год, месяц, день, час, минута, секунда. Таким образом, переменная типа дата содержит не только дату, но и время.
Создать переменную с типом дата можно несколькими способами:
Способ 1:
Присвоение переменной значения типа ‘ГГГГММДДччммсс’ или ‘ГГГГ.ММ.ДД:чч:чч:сс’
‘20100304235959’ — вернет дату 04.03.2010 23:59:59.
‘2011.10.09:22:10:12’ — вернет дату 09.10.2011 22:10:12.
Способ 2:
Использование функции глобального контекста Дата (Год, Месяц, День, час, минуты, секунды).
Дата(2010, 07, 14, 12, 13, 14) — вернет значение 14.07.2010 12:13:14
Этой же функцией можно преобразовать строку в дату.
Дата(20100714121314) — вернет значение 14.07.2010 12:13:14
Способ 3 (для запросов):
Использование выражения ДАТАВРЕМЯ (Год, Месяц, День, час, минута, секунда)
Для любого из способов указание часов, минут и секунд не является обязательным.
Дата (2010, 07, 14) — вернет значение 14.07.2010 0:00:00
Способ 4:
Еще можно попросить пользователя ввести нужную дату. Для этого необходимо воспользоваться функцией ВвестиДату(Дата, Подсказка, ЧастьДаты). Первый параметр задает переменную, которой будет присвоено введенное значение. Второй параметр — это заголовок диалогового окна, третий параметр определяет, какую часть типа дата необходимо ввести. Он может принимать следующие значения:
- ЧастиДаты.Дата — будут введены только год, месяц и день;
- ЧастиДаты.Время — будут введены только часы, минуты, секунды. В этом случае дата будет иметь вид 0001.01.01 чч:мм:сс.
- ЧастиДаты.ДатаВремя — будут введены все составляющие даты и времени.
Способ 5 (получить текущую дату и время)
Проверка пустой даты
Часто бывает необходимо проверить, введена дата или нет. Пустая дата — это первое января 1 года, 0 часов, 0 минут, 0 секунд. Проверка может выглядеть следующим образом:
Использование даты в реквизитах
В реквизитах справочников, документов и т.д. можно использовать:
- дату, тогда время всегда равно 00:00:00;
- только время, тогда дата равна 01.01.0001;
- дату и время.
Получение отдельных составляющих даты