1с получить пустую дату
В этой статье научимся узнаем, как работают даты в 1С. Тип Дата — это один из примитивных типов 1С 8.3. При помощи этого типа в программе 1С можно задать дату (например, 10 ноября 2019 года), время (например, 12 часов 32 минуты 45 секунд), а также дату с временем (например, 10 ноября 2019 года 12 часов 32 минуты 45 секунд). В этой статье мы научимся создавать переменные с типом дата, создавать реквизиты объектов с типом дата и работать на форме с этим типом. А также научимся выполнять элементарные операции над датами.
Создаем программно даты в 1С
Научимся программным способом создать переменную с типом дата. Сделать это можно двумя вариантам. Первый, при помощи ординарных кавычек, в которых дата задается в следующем формате:
ГГГГ – цифры года даты,
ММ — цифры месяца даты
ДД – цифры дня даты
ЧЧ – цифры часа от 0 до 23
ММ – цифры минут от 0 до 59
СС – цифры секунд от 0 до 59
Причем, дату можно задать в полном формате с минутами и секундами, а также без указания минут и секунд. То есть, вот так:
В переменной с типом дата, можно хранить только время без даты. В этом случае нужно указать, что год, месяц и день равно 1, т.е. формат даты будет следующим.
Рассмотрим, примеры. Создадим дату со временем, дату без времени и время с пустой датой. И также все это выведем методом Сообщить. Хотя, метод Сообщить и принимает в качестве параметра тип строка, мы можем и передать в него дату, платформа 1С автоматически её конвертирует в строку.
И посмотрим, как это все вывелось.
Таким образом, в платформе 1С у нас хранится дата в полном размере (год, месяц, день, час, минута, секунда). Если нам нужна просто дата, то час, минута и секунда равны нулю (при программном создании дат их можно не задавать), а если нам нужно просто время без даты, то год, месяц и день равны 1 (при программном создании даты их следует указывать).
Разберем еще один способ создания переменной с типом дата, это использование метода Дата. Этот метод имеет два варианта синтаксис:
СтрокаДаты – строка, которая задаётся в уже знакомом нам формате «ГГГГММДДЧЧММСС», принципы задания строки аналогичны принципам задания даты в ординарных кавычках.
Год – цифра года даты,
Месяц – цифра месяца даты,
День – цифры дня даты,
Час – цифры часа
Минута – цифры минуты
Секунда – цифры секунды.
Первый три параметра являются обязательными.
Если нам нужно задать, просто дату (без времени), то будет следующий синтаксис.
А если нужно задать время, то года, месяц и день будут равны 1:
Переделаем предыдущий пример.
Здесь я использовал два синтаксиса метода Дата. Первый синтаксис, по сути, преобразует строку в дату (строка естественно должна быть задана по правилам). Второй синтаксис, позволяет задать дату при помощи типа число.
Реквизит с типом дата в объектах 1С
Для того, чтобы какой-то реквизит объекта 1С 8.3 был датой, достаточно указать ему соответствующий тип. Например, как мы это делаем со справочником.
Причем у любого реквизита с типом дата имеется состав даты. Это Дата, Время и Дата и время.
В зависимости от того, какой состав даты выбран, такой вид даты и можно будет указать в форме объекта.
Состав даты Дата.
Состав даты Время.
Состав даты Дата и время.
Причем, не имеет значения, какой состав даты выбран, дата запишется полностью в формате ГГГГММДДЧЧММСС. Просто в зависимости от состава даты, или время будет равняться нулю (если выбран состав даты Дата), или год, месяц, день будут равняться единицы.
Дата на управляемой форме 1С
На управляемую форме 1С можно поместить реквизит с типом дата, у которого, также, имеется возможность выбрать состав даты: Дата, Время, Дата и время.
Если мы поместим этот реквизит на форму, то он разместится в виде поля ввода.
Причем у этого поля ввода имеется справа кнопка, при нажатии на которую будет открыто окно выбора даты.
Это окно появляется в том случае, если состав даты реквизита или Дата, или Дата и время.
А отвечает за появление этой кнопки свойство поля ввода «Кнопка выбора».
Посмотрим, как записывается дата, в зависимости от значения состава даты.
Для этого у поля ввода я создам событие при изменении.
Посмотрим, что вернет этот метод, когда состав даты реквизита — Дата.
Когда состав даты реквизита — Время
Когда состав даты реквизита – Дата и время
Вы убедились наглядно, что независимо от состава даты, у нас дата всегда записывается в формате ГГГГММДДЧЧММСС.
Разность дат в 1С
В 1С 8.3 имеется возможность вычитать одну дату из другой, или получать разность дат. В этом случае разность будет равна количеству секунд между датами.
Например, создадим две даты разностью в минуту, вычтем одну из другой.
И посмотрим, какая разница.
Мы получили количество секунд разности между Дата2 и Дата1. Если мы вычтем наоборот.
То поскольку Дата2 раньше на временной оси, чем Дата1, то получим разность с отрицательным знаком.
Прибавить дату 1С
Мы также, можем прибавить к дате нужное количество секунда. Делается это просто: к определенной дате, прибавляется то количество секунд, которое нам нужно.
Например, прибавим к дате минуту, час, день.
Посмотрим на результат:
Также можно и вычесть дату.
Посмотрим на результат:
Этим способом рекомендую прибавлять к датам и вычитать из дат небольшие значения (до дня), для прибавления месяцев и выше, в платформе 1С имеется способ, который будет рассмотрен в следующей статье.
Другие статьи о примитивных типах:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
С помощью языка запросов 1С 8 решаются практически все задачи по получению данных в платформе 1С 8.3. Дата — один из часто используемых типов данных. Рассмотрим, как использовать дату в запросах 1С.
Проверка на пустую дату в запросе 1С 8.3
Проверим значение на пустую дату в запросе 1С.
Например, отберем только не закрытые банковские счета из справочника. Критерий того, что они не закрытые, — наличие пустой даты в поле «ДатаЗакрытия»:
ВЫБРАТЬ
БанковскиеСчета.Ссылка
ИЗ
Справочник.БанковскиеСчета КАК БанковскиеСчета
ГДЕ
БанковскиеСчета.ДатаЗакрытия = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
Произвольная дата в языке запросов
Используя функцию ДатаВремя, помимо пустой даты можно указывать и любые другие произвольные даты.
Например, отберем все документы «Счет на оплату покупателю» за месяц, от 1 до 28 февраля:
ВЫБРАТЬ
СчетНаОплатуПокупателю.Ссылка
ИЗ
Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
ГДЕ
СчетНаОплатуПокупателю.Дата МЕЖДУ ДАТАВРЕМЯ(2015, 2, 1, 0, 0, 0) И ДАТАВРЕМЯ(2015, 2, 28, 23, 59, 59)
Текущая дата в запросе
К сожалению, в языке запросов нет аналога метода «ТекущаяДата()», поэтому чтобы получить это значение, его можно передать в запрос с помощью параметра:
Запрос = Новый Запрос;
Запрос.Текст = »
|ВЫБРАТЬ
| СчетНаОплатуПокупателю.Ссылка
|ИЗ
| Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
|ГДЕ
| СчетНаОплатуПокупателю.Дата = &ТекущаяДата«;
Запрос.УстановитьПараметр(«ТекущаяДата», ТекущаяДата());
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
В 1С значение типа «Дата» – это календарная дата григорианского календаря (с 01 января 0001 года по 31 декабря 3999 год) и время с точностью до 0,1 миллисекунды. Разработчику неизбежно приходится сталкиваться с данным типом, поэтому в этой статье предлагаю ознакомиться с его основными функциями и принципами работы.
«Дата» в модулях 1С
Как инициализировать дату
С помощью литерала встроенного языка
С помощью функции 1С Дата()
Как указать пустую дату
Функции для работы с датой
Получить текущую дату
Получить отдельные части даты
Следует заметить, что пробел в номере года вставляется при установках по умолчанию (подразумевается, что не установлен признак группировки в региональных установках).
Определить дату и время начала некоторого периода из даты
Для решения таких задач существует набор функций НачалоГода(), НачалоКвартала(), НачалоМесяца(), НачалоНедели(), НачалоДня(), НачалоЧаса(), НачалоМинуты(). В параметр задаётся значение даты начало периода, которого необходимо определить.
Определить дату и время конца некоторого периода из даты
Для получения конца периода из даты, можно использовать специальные функции НачалоГода(), НачалоКвартала(), НачалоМесяца(), НачалоНедели(), НачалоДня(), НачалоЧаса(), НачалоМинуты(). Параметр принимает значение «нашей даты», аналогично, как и в функции Начало…().
Определить номер недели или дня в году
Определить номер дня в неделе
Как отнять или прибавить к дате в 1С год, месяц, день, час, минуту, секунду
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Чтобы прибавить, вычесть месяц или год правильно использовать функцию ДобавитьМесяц(, ). Если параметру задать отрицательное значение, то число месяцев отнимается.
Формат даты в 1С
Функция Формат(, ). В параметре перечисляются параметры форматирования через символ «;». Возвращаемый тип строка.
Для задания параметра можно воспользоваться «конструктором форматной строки». При написании кода вызвать его не составляет труда. Необходимо только нажать правую кнопку «мыши» и из контекстного меню выбрать одноимённый конструктор.
На вкладке «Дата» задаём нужный нам формат.
Как вызвать диалоговое окно для ввода даты
Не модальный режим:
«Дата» в запросах 1С
Инициализация даты в запросах
Функция ДАТАВРЕМЯ()
Стоит отметить, что параметры данной функции принимают только литералы в отличие от схожей на неё функции для работы с датой в модулях Дата(). Например запись с передачей в функцию полей выборки из временной таблицы ДАТАВРЕМЯ(вт.Год, вт.Месяц, вт.День) выдаст ошибку.
Пустая дата
Текущая дата и работа с условием по дате в запросе
Так же не стоит забывать, что передать в запрос дату можно с помощью параметра. Для указания текущей даты это единственный вариант.
Получить отдельные части даты. Функции: ГОД, КВАРТАЛ, МЕСЯЦ, ДЕНЬ, ЧАС, МИНУТА, СЕКУНДА
В запросе получить отдельные части даты возможно с помощью одноимённых функций ГОД(), КВАРТАЛ(), МЕСЯЦ(), ДЕНЬ(), ЧАС(), МИНУТА(), СЕКУНДА().
Получить начало, конец некоторого периода
Существует две функции для решения таких задач. Соответственно НАЧАЛОПЕРИОДА(, ) и КОНЕЦПЕРИОДА(, ).
Где в параметр указывается «наша дата», а в параметр задаётся значение периода (Год, Полугодие, Квартал, Месяц, Декада, Неделя, День, Час, Минута).
Аналогично и для функции КОНЕЦПЕРИОДА().
Добавить сдвиг к дате
Для решения таких задач пригодится функция ДОБАВИТЬКДАТЕ(, , ). В параметр задаётся «наша дата», в параметр временной интервал (Год, Полугодие, Месяц и т.д.).
Использование функции РАЗНОСТЬДАТ()
В прошлой статье мы узнали, что такое дата и как с неё работать. В этой статье изучим основные функции работы с датами в 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С
В предыдущей статье мы научились добавлять к дате секунды (или вычитать из даты секунды). Делается это прибавлением к дате любого целого числового значения. Например, так:
В этом примере мы прибавили к дате 1 час. Но если нужно к какой-то дате прибавить месяц, то данный метод не всегда подойдет: в разных месяцах разное количество дней.
И если такая задача возникает, то нужно использовать метод ДобавитьМесяц. При помощи этого метода, можно добавить к дате или убавить от даты нужное количество месяцев.
Этот метод является функцией, возвращает переменную с типом дата и имеет следующий синтаксис:
Этот метод добавляет или вычитает из даты в первом параметре количество месяцев из второго параметра.
Рассмотрим пример: добавим к текущей дате месяц и год, а также вычтем из текущей даты месяц и год.
И результат этого кода:
Другие статьи о примитивных типах:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
В разработке часто возникают ситуации, когда нужно провести какие-то манипуляции с пустой датой: сравнить является ли какая-либо дата пустой, записать в какой-то реквизит с типом Дата пустую дату, а также иногда необходимо использовать пустую дату в запросе. В этой статье разберем, как работает пустая дата в 1С.
Что такое пустая дата в 1С? Эта дата, которая соответствует дате григорианского календаря 1 января 1 года 0 часов, 0 минут и 0 секунд. Такая дата с таким временем в 1С считается пустой.
Задаем пустую дату
Задать пустую дату в модуле можно несколькими способами.
При помощи ординарных кавычек:
При помощи метода Дата:
В обоих случаях, переменная НашаПустаяДата будет иметь тип Дата, но являться пустой. Если мы посмотрим на значение переменной НашаПустаяДата в отладке, то увидим, что эта переменная имеет тип Дата, с датой, которая соответствует 1 января 1 года.
Сравниваем с пустой датой
Как в программном модуле проверить является ли какая-либо дата пустой? Сделать это можно двумя способами. В первом способе используется метод ЗначениеЗаполнено. Этот метод вернёт Истина, если дата не пустая, и Ложь, если дата пустая. Например, узнаем, является ли НашаПустаяДата пустой. Для этого будем использовать условие.
Если же мы проверим так не пустую дату.
Можно проверять, просто сравнивая какую-то переменную или реквизит с пустой датой. Например, в коде ниже проверяется, является ли реквизит формы ДатаЗаписиДокумента пустой датой.
Задаем пустую дату в запросе
Иногда, в запросе необходимо создать поле с пустой датой. Чтобы это сделать, необходимо использовать функцию ДатаВремя.
При помощи этой функции задаются даты и время в запросе. Но, если в качестве первых трёх параметров задать значение 1, то в поле выборки будет пустая дата.
Также, мы можем передать значение с пустой датой в запрос.
В поле ДатаПустая выборки, сформированной из запроса теперь всегда будет пустая дата (как для первого, так и для второго случая).
Сравниваем с пустой датой в запросе
Сравнить какое либо поле в запросе с пустой датой можно двумя способами: используя метод ДатаВремя и передавая пустую дату в запрос.
Используем метод ДатаВремя:
Передаем пустую дату в запрос:
В обоих случаях, будут выведены только те документы, у которых не пустая дата отгрузки.
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
Читайте также: