В прошлой статье мы узнали, что такое дата и как с неё работать. В этой статье изучим основные функции работы с датами в 1С 8.3.
Текущая дата в 1С
В 1С имеется возможность получить текущую дату, ту дату, которая выставлена в данный момент в операционной системе компьютера. Делается это при помощи метода ТекущаяДата.
Этот метод является функцией, не имеет параметров и с его помощью можно получить текущую дату в 1С 8.3.
ТекДата = ТекущаяДата(); Сообщить("Текущая дата: " + ТекДата);
Посмотрим, что возвращает этот код
Как вы могли заметить, текущая дата получена в полном формате (год, месяц, день, час, минута и секунда), т.е. текущая дата у нас возвращается с точностью до секунды.
Определить год, месяц, день, час, минуту и секунду даты в 1С
В платформе 1С имеются методы, которые возвращают числовое представление года, месяца, дня, часа, минут и секунды определенной даты. Данные методы так и называются
Год(<Дата>) – возвращает год даты
Месяц(<Дата>) – возвращает месяц даты
День(<Дата>) – возвращает день даты
Час(<Дата>) – возвращает час даты
Минута(<Дата>) – возвращает минут даты
Секунда(<Дата>) – возвращает секунду даты
Рассмотрим пример, в котором возьмем текущую дату и вернем год, месяц, час, минуту и секунду этой даты.
ТекДата = ТекущаяДата(); Тек_Год = Год(ТекДата); Тек_Месяц = Месяц(ТекДата); Тек_День = День(ТекДата); Тек_Час = Час(ТекДата); Тек_Минута = Минута(ТекДата); Тек_Секунда = Секунда(ТекДата); Сообщить("У даты " + ТекДата + ", год: " + Тек_Год + ", месяц: " + Тек_Месяц + ", день: " + Тек_День + ", час: " + Тек_Час + ", минута: " + Тек_Минута + ", секунда: " + Тек_Секунда);
И результат работы этого кода.
Дата начала и дата конца периода в 1С
В платформе 1С 8.3. имеется возможность определить начало и конец периода даты, которому она принадлежит.
Возьмем, например, дату 10.09.2017 – начала месяца этой даты будет 01.09.2017, а начало года – 01.01.2017. И противоположное, у этой даты конец месяца – 30.09.2017, а конец года -31.12.2017.
Делается это при помощи следующих методов:
- НачалоГода(<Дата>) — возвращает начало года даты
- НачалоКвартала(<Дата>) — возвращает начало квартала даты
- НачалоМесяца(<Дата>) — возвращает начало месяца даты
- НачалоНедели(<Дата>) — возвращает начало недели даты
- НачалоДня(<Дата>)- возвращает начало дня даты
- НачалоЧаса(<Дата>) — возвращает начало часа даты
- НачалоМинуты(<Дата>) — возвращает начало минуты даты
И противоположные методы:
- КонецГода(<Дата>) — возвращает конец года даты
- КонецКвартала(<Дата>) — возвращает конец квартала даты
- КонецМесяца(<Дата>) — возвращает конец месяца даты
- КонецНедели(<Дата>) — возвращает конец недели даты
- КонецДня(<Дата>) — возвращает конец дня даты
- КонецЧаса(<Дата>) — возвращает конец часа даты
- КонецМинуты(<Дата>) — возвращает конец минуты даты
Данные методы являются функциями, которые имеют один параметр с типом дата и возвращают соответствующую дату.
Рассмотрим пример, в котором будем получать начало и конец квартала текущей даты, начало и конец недели текущей даты, и начало и конец часа текущей даты. В этом примере будет шесть методов: НачалоКвартала, НачалоНедели, НачалоЧаса, КонецКвартала, КонецНедели, КонецЧаса. Остальные методы определения начала и конца периода работают аналогично.
ТекДата = ТекущаяДата(); НачКвартала = НачалоКвартала(ТекДата); НачНедели = НачалоНедели(ТекДата); НачЧаса = НачалоЧаса(ТекДата); КонКвартала = КонецКвартала(ТекДата); КонНедели = КонецНедели(ТекДата); КонЧаса = КонецЧаса(ТекДата); Сообщить("У даты " + ТекДата + " начало квартала: " + НачКвартала + " конец квартала: " + КонКвартала); Сообщить("У даты " + ТекДата + " начало недели: " + НачНедели + " конец недели: " + КонНедели); Сообщить("У даты " + ТекДата + " начало часа: " + НачЧаса + " конец часа: " + КонЧаса);
И результат работы этих методов.
Неделя года, день года и день недели
Рассмотрим похожие функции, которые возвращают порядковый номер соответствующего периода, которому принадлежит дата.
НеделяГода(<Дата>) – возвращает порядковый номер недели в году, на которую приходится дата.
ДеньГода(<Дата>) – возвращает порядковый номер дня года указанной даты.
ДеньНедели(<Дата>) – возвращает порядковый номер дня недели указанной даты.
Сделаем пример, в котором у текущей даты определим какой день недели (понедельник, вторник и т.д.), какой день года, и какая неделя в году.
ТекДата = ТекущаяДата(); НеделяГода = НеделяГода(ТекДата); ДеньГода = ДеньГода(ТекДата); ДеньНедели = ДеньНедели(ТекДата); Если ДеньНедели = 1 Тогда СообщениеДня = "сегодня понедельник"; ИначеЕсли ДеньНедели = 2 Тогда СообщениеДня = "сегодня вторник"; ИначеЕсли ДеньНедели = 3 Тогда СообщениеДня = "сегодня среда"; ИначеЕсли ДеньНедели = 4 Тогда СообщениеДня = "сегодня четверг"; ИначеЕсли ДеньНедели = 5 Тогда СообщениеДня = "сегодня пятница"; ИначеЕсли ДеньНедели = 6 Тогда СообщениеДня = "сегодня суббота"; ИначеЕсли ДеньНедели = 7 Тогда СообщениеДня = "сегодня воскресенье"; КонецЕсли; Сообщить("У даты " + ТекДата + " " + СообщениеДня + ", день года: " + ДеньГода + ", неделя года: " + НеделяГода);
В этом примере я использовал условие, в котором в зависимости от того, что возвращал метод ДеньНедели выводил строкой нужное сообщение.
Результат примера:
Добавить месяц к дате в 1С
В предыдущей статье мы научились добавлять к дате секунды (или вычитать из даты секунды). Делается это прибавлением к дате любого целого числового значения. Например, так:
ТекДата = ТекущаяДата(); ТекДатаПлюсЧас = ТекДата + 3600;
В этом примере мы прибавили к дате 1 час. Но если нужно к какой-то дате прибавить месяц, то данный метод не всегда подойдет: в разных месяцах разное количество дней.
И если такая задача возникает, то нужно использовать метод ДобавитьМесяц. При помощи этого метода, можно добавить к дате или убавить от даты нужное количество месяцев.
Этот метод является функцией, возвращает переменную с типом дата и имеет следующий синтаксис:
ДобавитьМесяц(<Дата>, <КоличествоМесяцев>).
Этот метод добавляет или вычитает из даты в первом параметре количество месяцев из второго параметра.
Рассмотрим пример: добавим к текущей дате месяц и год, а также вычтем из текущей даты месяц и год.
ТекДата = ТекущаяДата(); ТекДатаПлюсМесяц = ДобавитьМесяц(ТекДата,1); ТекДатаМинусМесяц = ДобавитьМесяц(ТекДата,-1); ТекДатаПлюсГод = ДобавитьМесяц(ТекДата,12); ТекДатаМинусГод = ДобавитьМесяц(ТекДата,-12); Сообщить("Текущая дата: " + ТекДата + ", ""+"" месяц: " + ТекДатаПлюсМесяц + ", ""-"" месяц: " + ТекДатаМинусМесяц); Сообщить("Текущая дата: " + ТекДата + ", ""+"" год: " + ТекДатаПлюсГод + ", ""-"" год: " + ТекДатаМинусГод);
И результат этого кода:
Другие статьи о примитивных типах:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009