Тип "
Дата"
— один из базовых типов данных, поддерживаемых в языке 1С версии 7.7. Типом "
Дата"
в системе «1С:Предприятие» может представляться любая корректная дата.
В выражениях литералы дат (то есть неизменяемые значения типа "
Дата"
) записываются в формате 'ДД.ММ.ГГ'
или 'ДД.ММ.ГГГГ'
, где ГГ
или ГГГГ
— две или четыре цифры года, ММ
— числовое обозначение месяца (01, 02, 03 и т.д.), ДД
— день месяца (01, 02, 03 и т.д.). В отличие от строковых литералов, литералы даты следует заключать в одинарные кавычки:
Результат = '01.06.2020' + 1; // получим дату '02.06.2020' Результат = "01.06.2020" + 1; // получим строку "01.06.20201"
Операции с датами
Для операндов типа "Дата"
в языке определены три арифметических операции:
Дата + Число
(к дате прибавляется число дней);Дата − Число
(от даты отнимается число дней);Дата − Дата
(результатом будет число дней между датами).
Примеры арифметических операций с датами:
ВчерашняяДата = ТекущаяДата() − 1; ЗавтрашняяДата = ТекущаяДата() + 1; ЧислоДнейВМесяце = КонМесяца(РабочаяДата()) − НачМесяца(РабочаяДата()) + 1;
Даты можно сравнивать между собой и использовать в логических операциях. В языке 1С для дат определены следующие операции сравнения:
- больше (
Дата1 > Дата2
); - больше или равно (
Дата1 >= Дата2
); - равно (
Дата1 = Дата2
); - не равно (
Дата1 <> Дата2
); - меньше (
Дата1 < Дата2
); - меньше или равно (
Дата1 <= Дата2
).
Пример использования дат в логических операциях:
Если (Дата2>=Дата1)И(Дата2<>КонМесяца(Дата2)) Тогда . . . Иначе . . . КонецЕсли;
Преобразование в тип «Дата» значений других базовых типов
В процессе вычисления различных выражений может возникнуть необходимость в явном или неявном преобразовании типов отдельных значений. При преобразовании значений в тип "
Дата"
система руководствуется следующими правилами:
- Если в начале строки содержится что-то, что может быть проинтерпретировано как строковое представление даты в виде
"ДД.ММ.ГГ"
, гдеГГ
— две цифры года,ММ
— числовое обозначение месяца (01, 02, 03 и т.д.),ДД
— день месяца, то будет произведено соответствующее преобразование. В противном случае значение даты будет нулевым ('00.00.00'
). - В случае с числами делается попытка взять целую часть числа и проинтерпретировать как численное представление даты. Если число отрицательно, то итогом является нулевая дата (
'00.00.00'
).
Пример:
Результат = НачМесяца("26.10.20"); // получим дату '01.10.20', так как строка "26.10.20" будет неявно преобразована в дату '26.10.20' Результат = НачМесяца("_26.10.20"); // получим дату '00.00.00' Результат = ТекущаяДата() - 2.4528; // целая часть числа 2.4528 будет проинтерпретирована как 2 дня Результат = НачМесяца(2452000); // получим дату '01.03.01'
Для явного преобразования в тип "
Дата"
значений других базовых типов служит системная (встроенная) функция Дата()
. Англоязычный синоним имени функции — Date()
.
Синтаксис функции:
Дата(<ПреобразуемоеЗначение>)
где <ПреобразуемоеЗначение> — числовое или строковое выражение, результат вычисления которого необходимо преобразовать в дату.
Пример использования функции:
ПолученнаяДата = Дата("_01.01.2001"); // получим нулевую дату '00.00.00' ПолученнаяДата = Дата("01.01.2001"); // получим дату '01.01.01' ПолученнаяДата = Дата(2451911); // получим дату '01.01.01'
У системной функции Дата()
имеется также ещё один синтаксис:
Дата(<Год>, <Месяц>, <Число>)
где
- <Год> — числовое выражение, результат вычисления которого будет интерпретироваться как год даты (год должен указываться четырёхзначным числом);
- <Месяц> — числовое выражение, результат вычисления которого будет интерпретироваться как номер месяца даты;
- <Число> — числовое выражение, результат вычисления которого будет интерпретироваться как номер дня в месяце.
Пример использования:
УстанавливаемаяДата = Дата(Результат1, Результат2, Результат3);
Системные функции для работы с датами
Получить текущую дату, то есть дату, установленную в операционной системе, позволяет функция ТекущаяДата()
. Она не имеет параметров, а её возвращаемым значением является дата, которая выводится в трее (в правом нижнем углу экрана). Англоязычный синоним имени функции — CurDate()
.

Пример использования функции:
ДатаОС = ТекущаяДата();
Получить текущее время, то есть время, установленное в операционной системе, позволяет системная функция ТекущееВремя()
. Возвращаемым значением функции является системное время в текстовом виде. Англоязычный синоним имени функции — CurrentTime()
.
Синтаксис функции:
ТекущееВремя(<Час>, <Мин>, <Сек>)
где
- <Час> — имя переменной, куда система вернёт числовое значение часа текущего времени. Параметр является необязательным;
- <Мин> — имя переменной, куда система вернёт числовое значение минут текущего времени. Параметр является необязательным;
- <Сек> — имя переменной, куда система вернёт числовое значение секунд текущего времени. Параметр является необязательным.
Если необходимо получить системное время только в текстовом формате, параметры не используются. Например:
Сообщить("Текущее время - " + ТекущееВремя());
Установить/получить рабочую дату системы «1С:Предприятие» позволяет системная функция РабочаяДата()
. Её возвращаемым значением является значение текущей рабочей даты, установленной в системе «1С:Предприятие» до момента вызова функции. Англоязычный синоним имени — WorkingDate()
.
Синтаксис функции:
РабочаяДата(<Дата>, <РежимСменыРабДаты>)
где
- <Дата> — выражение, содержащее дату, которая будет установлена в качестве рабочей. Параметр является необязательным. Если параметр не указан, то рабочая дата в системе не изменяется;
- <РежимСменыРабДаты> — числовое значение, определяющее режим автоматической смены рабочей даты в полночь. Если параметр не указан, то режим не меняется и действует установка, выбранная в параметрах системы. Возможные значения:
- 0 — не менять дату автоматически;
- 1 — менять автоматически с выдачей предупреждения;
- 2 — менять автоматически без предупреждения.
Для получения рабочей даты функция обычно используется без параметров:
// оклад сотрудника на текущую рабочую дату Сотрудник.Оклад.Получить(РабочаяДата());
Примечание: Рабочая дата, установленная в системе «1С:Предприятие», может отличаться от текущей даты (то есть от даты, установленной в операционной системы). Сменить рабочую дату бухгалтер может, например, в том случае, когда ему необходимо ввести большое количество документов «задним числом». Произвести смену рабочей даты можно в окне настройки параметров системы (вызывается из главного меню программы: «Сервис −> Параметры…»).

Установить/получить вариант задания начала стандартного интервала отображения журнала документов позволяет системная функция НачалоСтандартногоИнтервала()
. Англоязычный синоним имени фнкции — BegOfStandardRange()
.
Синтаксис функции:
НачалоСтандартногоИнтервала(<Вариант>)
где <Вариант> — выражение со значением типа "
Дата"
или "
Строка"
. Значением типа "
Дата"
задаётся конкретная дата начала интервала журнала документов. Возможные строковые значения параметра: "День"
(или "Day"
), "Месяц"
(или "Month"
), "Квартал"
(или "Quarter"
) и "Год"
(или "Year"
). Причём, при указании строкового значения будут иметься в виду текущий день (тот, что установлен в системе как рабочая дата), текущий месяц, текущий квартал и текущий год.
Параметр функции является необязательным. Так, например, для получения варианта задания интервала функция используется без параметра. Возвращаемым значением функции является текущий установленный вариант.
Пример использования:
НачалоСтандартногоИнтервала("Месяц");
Установить/получить вариант задания конца стандартного интервала отображения журнала документов позволяет системная функция КонецСтандартногоИнтервала()
. Англоязычный синоним имени фнкции — EndOfStandardRange()
.
Синтаксис функции:
КонецСтандартногоИнтервала(<Вариант>)
где <Вариант> — выражение со значением типа "
Дата"
или "
Строка"
. Значением типа "
Дата"
задаётся конкретная дата конца интервала журнала документов. Возможные строковые значения параметра: "День"
(или "Day"
), "Месяц"
(или "Month"
), "Квартал"
(или "Quarter"
) и "Год"
(или "Year"
). Причём, при указании строкового значения будут иметься в виду текущий день (тот, что установлен в системе как рабочая дата), текущий месяц, текущий квартал и текущий год.
Параметр функции является необязательным. Так, например, для получения варианта задания интервала функция используется без параметра. Возвращаемым значением функции является текущий установленный вариант.
Пример использования:
КонецСтандартногоИнтервала("Месяц");
Примечание: Установить или посмотреть вариант задания стандартного интервала пользователь может в окне настройки параметров системы (вызывается из главного меню программы: «Сервис −> Параметры…»).

Получить строковое представление стандартного периода, в соответствии с указанными датами начала и конца периода, позволяет системная функция ПериодСтр()
. В качестве первого и второго параметров функции передаются соответственно даты начала и конца периода (выражения со значениями типа "
Дата"
), а функция возвращает его строковое представление. Возвращаемая функцией строка может использоваться, например, для выдачи информации о периоде итогов в отчётах. Англоязычный синоним имени функции — PeriodStr()
.
Пример использования:
Дата1 = '01.01.97'; Дата2 = '31.03.97'; Сообщить(ПериодСтр(Дата1, Дата2)); // Выведет "1 квартал 1997 г."
Функции для вычисления даты
Получить дату, отличающуюся от указанной даты на указанное количество месяцев, позволяет функция ДобавитьМесяц()
. Англоязычный синоним имени функции — AddMonth()
.
Синтаксис функции:
ДобавитьМесяц(<ИсходнаяДата>, <КоличествоМесяцев>)
где
- <ИсходнаяДата> — выражение типа
"
Дата"
, содержащее исходную дату; - <КоличествоМесяцев> — числовое выражение, задающее число месяцев, которое необходимо добавить к дате или вычесть из неё (при отрицательном значении).
Пример использования:
ДатаЗаТриМесяцаДоТекущей = ДобавитьМесяц(РабочаяДата(), −3);
Примечание: В общем случае данная функция просто суммирует номер месяца в исходной дате с числом, указанным во втором параметре функции, не меняя при этом номер дня. Исключение составляет случай, когда в исходной дате указан один из последних последних дней месяца (29-ое, 30-ое или 31-ое число), а в возвращаемом месяце этих чисел быть не может. В этом случае функция возвращает последний день месяца, который возможен.
Получить дату начала недели для указанной даты позволяет функция НачНедели()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — BegOfWeek()
.
Пример использования:
ДатаНачалаНедели = НачНедели(РабочаяДата());
Получить дату конца недели для указанной даты позволяет функция КонНедели()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — EndOfWeek()
.
Пример использования:
ДатаКонцаНедели = КонНедели(РабочаяДата());
Получить дату начала месяца для указанной даты позволяет функция НачМесяца()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — BegOfMonth()
.
Пример использования:
ДатаНачалаМесяца = НачМесяца(РабочаяДата());
Получить дату конца месяца для указанной даты позволяет функция КонМесяца()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — EndOfMonth()
.
Пример использования:
ДатаКонцаМесяца = КонМесяца(РабочаяДата());
Получить дату начала квартала для указанной даты позволяет функция НачКвартала()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — BegOfQuart()
.
Пример использования:
ДатаНачалаКвартала = НачКвартала(РабочаяДата());
Получить дату конца квартала для указанной даты позволяет функция КонКвартала()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — EndOfQuart()
.
Пример использования:
ДатаКонцаКвартала = КонКвартала(РабочаяДата());
Получить дату начала года для указанной даты позволяет функция НачГода()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — BegOfYear()
.
Пример использования:
ДатаНачалаГода = НачГода(РабочаяДата());
Получить дату конца года для указанной даты позволяет функция КонГода()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — EndOfYear()
.
Пример использования:
ДатаКонцаГода = КонГода(РабочаяДата());
Получить год указанной даты позволяет функция ДатаГод()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — GetYear()
.
Пример использования:
ЗначениеГода = ДатаГод(РабочаяДата());
Получить месяц указанной даты позволяет функция ДатаМесяц()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — GetMonth()
.
Пример использования:
ЗначениеМесяца = ДатаМесяц(РабочаяДата());
Получить день месяца указанной даты позволяет функция ДатаЧисло()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — GetDay()
.
Пример использования:
ЗначениеДняМесяца = ДатаЧисло(РабочаяДата());
Получить номер недели в году для указанной даты позволяет функция НомерНеделиГода()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — GetWeekOfYear()
.
Пример использования:
ЗначениеНедели = НомерНеделиГода(РабочаяДата());
Получить порядковый номер дня в году для указанной даты позволяет функция НомерДняГода()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — GetDayOfYear()
.
Пример использования:
ЗначениеДняГода = НомерДняГода(РабочаяДата());
Получить порядковый номер дня в неделе для указанной даты позволяет функция НомерДняНедели()
. В качестве единственного параметра функции передаётся выражение, содержащее исходную дату. Англоязычный синоним имени функции — GetDayOfWeek()
.
Пример использования:
ЗначениеДняНедели = НомерДняНедели(РабочаяДата());
Другие статьи по схожей тематике