Внутренний язык программирования 1С 8.3 для начинающих программистов: работа с датами в 1С
Автор уроков и преподаватель школы: Владимир Милькин
Тип дата в языке 1С 8.3 уже знаком нам по прошлым занятиям. Сегодня мы рассмотрим более подробно операции, которые можно совершать над датами.
Работа с датами в 1С
Итак, откуда изначально появляется тип дата в нашей программе?
Во-первых, мы можем задать значение даты прямо в коде:
ПервыйДеньЛета = '20140601'; Сообщить(ПервыйДеньЛета); |
В этом случае значение даты вводится в одинарных кавычках. Первые четыре числа означают год (2014), следующие два числа - месяц (06, июнь) и, наконец, последние два - день месяца (01). Таким образом мы задали 1 июня 2014 года.
Во-вторых, мы можем использовать специальную команду, формирующую значение даты:
ПервыйДеньЛета = Дата(2014, 06, 01); Сообщить(ПервыйДеньЛета); |
Результат будет тем же самым. Но в этом случае мы вызываем команду (или правильнее сказать конструктор) Дата и в качестве параметров указываем числа, обозначающие год, месяц и число нашей даты.
В-третьих, мы можем ввести значение даты от пользователя:
ДатаОтПользователя = '00010101'; ВвестиДату(ДатаОтПользователя); ОткрытьЗначение(ДатаОтПользователя); |
Тут мы сначала заводим переменную для хранения значения даты и присваиваем начальное пустое значение ('00010101'), а затем вызываем команду ВвестиДату, указывая в качестве параметра переменную в которую нужно вернуть значение, введенное пользователем.
И, наконец, мы можем получить значение дата, как результат работы другой команды 1С. Например, так:
Сегодня = ТекущаяДата(); Сообщить(Сегодня); |
Давайте продолжим работу с последним примером (будем дописывать в него код).
Вот как мы можем из уже готовой даты вытащить только год, месяц или число:
Сообщить(Год(Сегодня)); Сообщить(Месяц(Сегодня)); Сообщить(День(Сегодня)); |
А что если нужно прибавить к дате один день? Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Это можно сделать вот так:
Сегодня = ТекущаяДата(); Завтра = Сегодня + 24 * 60 * 60; Сообщить(Завтра); |
Почему мы прибавили именно такое число (24 * 60 * 60)? Потому что напрямую к дате можно прибавлять только секунды. А нам нужно прибавить сутки в которых 24 часа, в часе 60 минут, в минуте 60 секунд.
Секунды можно не только прибавлять, но и отнимать от даты.
А что если нам нужно прибавить целый месяц? Конечно, и в этом случае можно посчитать количество секунд в месяце и прибавить, но гораздо проще использовать специальную команду 1С, которая как раз для этого предназначена:
Сегодня = ТекущаяДата(); ЧерезМесяц = ДобавитьМесяц(Сегодня, 1); |
Команда ДобавитьМесяц в качестве параметров принимает дату к которой нужно прибавить месяц и количество месяцев. Если указать отрицательное количество, то произойдёт не прибавление, а вычитание месяцев из даты.
Даты также можно отнимать друг от друга:
РазностьДат = '20140101' - '20100101'; Сообщить(РазностьДат); |
Результатом вычитания дат будет количество секунд между ними. Ну а как перевести секунды в минуты, часы или даже дни, думаю вы догадаетесь сами.
Какие ещё есть интересные функции для работы с датой в 1С?
Мы можем узнать день недели:
Сообщить(ДеньНедели(Сегодня)); |
Команда ДеньНедели возвращает число от 1 до 7. Единица обозначает понедельник, двойка - вторник и так до воскресенья.
Таким же образом мы можем узнать порядковый номер дня с начала года:
Сообщить(ДеньГода(Сегодня)); |
А также порядковый номер недели (к которой относится дата) в году:
Сообщить(НеделяГода(Сегодня)); |
Но и это ещё не все функции для работы с датой, которые есть в 1С. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. С более полным перечнем на примерах вы можете ознакомиться в справочнике по языку (ссылка).