Функции дат в 1С

В прошлой статье мы узнали, что такое дата и как с неё работать. В этой статье изучим основные функции работы с датами в 1С 8.3.

Текущая дата в 1С

В 1С имеется возможность получить текущую дату, ту дату, которая выставлена в данный момент в операционной системе компьютера. Делается это при помощи метода ТекущаяДата.

Этот метод является функцией, не имеет параметров и с его помощью можно получить текущую дату в 1С 8.3.

ТекДата = ТекущаяДата();
Сообщить("Текущая дата: " + ТекДата);

Посмотрим, что возвращает этот код

Текущая дата в 1С

Как вы могли заметить, текущая дата получена в полном формате (год, месяц, день, час, минута и секунда), т.е. текущая дата у нас возвращается с точностью до секунды.

Определить год, месяц, день, час, минуту и секунду даты в 1С

В платформе 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 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *