1С получить из даты время: Учимся выделять время из даты в запросе 1С

Содержание

Учимся выделять время из даты в запросе 1С

Иногда бывает необходимо из даты вида ‘20150120134450’ выделить просто время, т.е. сделать дату следующего вида ‘00010101134450’. Как это осуществить в запросе?
Очень просто!

Для этого вам необходимо с помощью функции РазностьДата узнать количество секунд между началом дня текущей даты и самой датой. Следующим шагом, Вы с помощью функции ДобавитьКДате, добавляете к пустой дате найденное количество секунд, и получаете дату нужного вида.

Например, как в этом запросе:

ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА,РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&ТекущаяДата,ДЕНЬ),&ТекущаяДата,СЕКУНДА)) КАК ТекущееВремя

Результат его выполнения можно посмотреть на картинке ниже

Если Вы всё еще «плаваете» в конструкциях языка запросов, и у Вас вызывают трудности даже самые простые запросы, то рекомендую вам мой курс «Запросы в 1С от новичка до профи». Где эти и многие другие вопросы рассматриваются более подробно.

В чем особенность этого курса:
• Курс рассчитан на тех, кто не знаком с языком запросов в 1С;
• Учебный материал грамотно скомпонован и прост в освоении;

• Несколько десятков уроков;
• Полезные практические примеры;
• Все уроки изложены понятным и простым языком

Для моих читателей, купон на скидку 25%: hrW0rl9Nnx

Я стараюсь как можно чаще выпускать различные интересные бесплатные статьи и видеоуроки. Поэтому буду очень рад, если Вы поддержите мой проект перечислив любую сумму:

Можете перечислить любую сумму напрямую:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Работа с Датами (Временем) » FAQ 1С 8.x » HelpF.pro

Ввести дату, ввод даты[7.x, 8.x]
Выбор периода, задать период[7.x, 8.x]
Вычислить возраст человека и выразить его прописью[8.x]
Добавить к Дате указанное количество дней[8.x]
Добавить к Дате указанное количество лет[8.x]
Как Выбрать Месяц формирования отчета?[8.x, 8.2 УП]
Как вывести месяц прописью в родительском падеже?(Як вивести місяц в батьківському відмінку?)[8.x]
Как вычислить количество дней между датами[7.x, 8.x, 8.2 УП]
Как вычислить разницу между двумя датами в днях[8.x]
Как вычислить разницу между двумя датами в месяцах
[8.x]
Как вычислить разницу между двумя датами в часах и минутах[8.x, 8.2 УП]
Как перебрать все даты с НачалоПериода по КонецПериода и получить таблицу периодов?[8.x, 8.2 УП]
Как по Номеру Недели Года получить Дату[8.x, 8.2 УП]
Как получить количество ЛЕТ, МЕСЯЦЕВ, ДНЕЙ между датами?[8.x]
Как получить количество рабочих дней в месяце по календарю?[8.x, 8.2 УП, 8.3]
Как получить номер Декады месяца ( Например: 1 Декада )?[7.x, 8.x, 8.2 УП]
Как получить текущее время с милисекундами?[7.x, 8.x, 8.2 УП]
Как получить текущую (системную) дату на сервере 1С:Предприятия?[8.x]
Как посчитать разницу между двумя датами?[7.x, 8.x, 8.2 УП, 8.3]
Как при выполнении обработки сообщить пользователю текущее время и дату?[8.x]
Как прибавить к дате день, месяц?[8.x]
Как проверить дату на пустое значение?[8.x]
Как соединить дату и время?[8.x, 8.2 УП]
Как сравнить две даты (дни)?
[8.x]
Как узнать количество дней в месяце?[8.x, 8.2 УП]
Как указать нужную,конкретную дату?[7.x, 8.x]
Количество месяцев и дней между 2-мя датами[8.x]
Момент Времени и Граница, назначение, примеры использования[7.x, 8.x]
Перебор дат, заполнение списка, массива дат по порядку[8.x]
Перевод, преобразование Даты в Строку и Обратно[8.x, 8.2 УП]
Передаем в функцию дату, например 13.08.2009 11:13:54, получаем 13 августа 2009 г.[8.x]
Подсчет реального количества месяцев между датами, включая начало и конец месяца[8.x, 8.2 УП, 8.3]
Преобразование времени в универсальное (GMT) и местное в 1С[8.x, 8.2 УП]
Преобразование даты 1С в unixtime (Unix Time Stamp)[8.x]
Процедура вычисляет количество лет, месяцев и дней между двумя датами[7.x, 8.x]
Пустая дата в запросе и в модуле[8.x, 8.2 УП]
Разница между датами в рабочих днях, подсчет рабочих дней в 1С[8.x, 8.2 УП, 8.3]
Синхронизация времени рабочей станции с сервером[7.x, 8.x, 8.2 УП]
Синхронизация системного Времени по запросу[8.x]
Сколько лет, месяцев, дней прошло между датами[8.x]
Сколько лет, месяцев, дней прошло между датами[8.x]
Функции для работы с датами через запрос (Разность, Добавление, Граница)[8.x]
Функции преобразуют время из представления в виде строки в число и обратно[8.x]
Функция вычисляет даты начала/конца периодов за интервал в виде таблицы значений[8.x]
Функция Дата прописью[7.x, 8.x, 8.2 УП]
Функция дата прописью[8.x]
Функция месяц прописью[7.x, 8.x]
Функция описывает период, определяемый датой и периодичностью[8.x]
Функция переводит Дату в формате 1С в формат вида ‘YYYYMMDD hh:mm:ss’ и обратно[8.x, 8.2 УП]
Функция пересчитывает сумму из валюты ВалютаНач по курсу КурНач в валюту ВалютаКон по курсу КурКон[8.x]
Функция ПредставлениеПериода() аналог 7-ной функции ПериодСтр()[8.x, 8.2 УП]
Функция преобразует строку вида 04/30/09 в дату[8.x]
Функция преобразует строку вида 31.01.2015 в дату[8.x, 8.2 УП, 8.3]
Функция проверяет является ли передаваемое значение датой или нет[8.x]

Работа с датами в 1С 8.3

В 1С значение типа «Дата» – это календарная дата григорианского календаря (с 01 января 0001 года по 31 декабря 3999 год) и время с точностью до 0,1 миллисекунды. Разработчику неизбежно приходится сталкиваться с данным типом, поэтому в этой статье предлагаю ознакомиться с его основными функциями и принципами работы.

«Дата» в модулях 1С

Как инициализировать дату

С помощью литерала встроенного языка
// Формат 'ГГГГММДДччммсс'
Дата = '20200105212930'; // 05.01.2020 21:29:30

// Формат 'ГГГГ.ММ.ДД:чч:мм:сс'
Дата = '2020.01.05:21:29:30'; // 05.01.2020 21:29:30

// Формат 'ГГГГ-ММ-ДД-чч-мм-сс'
Дата = '2020-01-05-21-29-30'; // 05.01.2020 21:29:30

// Допустимо не указывать часы, минуты и секунды
НачалоДня = '2020.01.05'; // 05.01.2020 00:00:00
С помощью функции 1С Дата()
Дата = Дата("20200105212930"); // 05.01.2020 21:29:30
Дата = Дата(2020,01,05,21,29,30); // 05.01.2020 21:29:30
Как указать пустую дату
ПустаяДата = Дата(1,1,1);

Функции для работы с датой

Получить текущую дату
// Получим текущую дату на компьютере. Формат возвращаемой даты по умолчанию ' ДД.ММ. ГГГГ:чч:мм:сс'
Дата = ТекущаяДата();
Получить отдельные части даты
Г = Год('2020.01.05:21:29:30'); // 2020

Следует заметить, что пробел в номере года вставляется при установках по умолчанию (подразумевается, что не установлен признак группировки в региональных установках).

М = Месяц('2020.01.05:21:29:30'); // 1
Д = День('2020.01.05:21:29:30'); // 5
Ч = Час('2020.01.05:21:29:30'); // 21
Мин = Минута('2020.01.05:21:29:30'); // 29
Сек = Секунда('2020.01.05:21:29:30'); // 30
Определить дату и время начала некоторого периода из даты

Для решения таких задач существует набор функций НачалоГода(<Дата>), НачалоКвартала(<Дата>), НачалоМесяца(<Дата>), НачалоНедели(<Дата>), НачалоДня(<Дата>), НачалоЧаса(<Дата>), НачалоМинуты(<Дата>). В параметр  <Дата> задаётся значение даты начало периода, которого необходимо определить.

Пример:

НачалоПериода = НачалоМесяца('2020.02.05:21:29:30'); // 01.02.2020 0:00:00
Определить дату и время конца некоторого периода из даты

Для получения конца периода из даты, можно использовать специальные функции НачалоГода(<Дата>), НачалоКвартала(<Дата>), НачалоМесяца(<Дата>), НачалоНедели(<Дата>), НачалоДня(<Дата>), НачалоЧаса(<Дата>), НачалоМинуты(<Дата>). Параметр <Дата> принимает значение «нашей даты», аналогично, как и в функции Начало…().

Пример:

КонецПериода = КонецМесяца('2020.02.05:21:29:30'); // 29.02.2020 23:59:59
Определить номер недели или дня в году
Номер1 = НеделяГода('2020.02.05:21:29:30'); // 6
Номер2 = ДеньГода('2020.02.05:21:29:30'); // 36
Определить номер дня в неделе
Номер = ДеньНедели('2020.02.05:21:29:30'); // 3
Как отнять или прибавить к дате в 1С год, месяц, день, час, минуту, секунду
//Начнём с простого. Прибавим секунду.
Результат = НашаДата + 1;

// Прибавим минуту. В минуте 60 сек соответственно:
Результат = НашаДата + 60;

//Прибавим два часа. В часе 60 минут.
Результат = НашаДата + 60 * 60 * 2;

//Прибавим два дня. В одном дне 24 часа.
КоличествоДней = 2;
Результат = НашаДата + КоличествоДней * 60 * 60 * 24;

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Чтобы прибавить, вычесть месяц или год правильно использовать функцию ДобавитьМесяц(<Дата>, <ЧислоМесяцев>). Если параметру <ЧислоМесяцев> задать отрицательное значение, то число месяцев отнимается.

//Месяц
КоличествоМесяцев = 2;
Результат = ДобавитьМесяц(НашаДата, КоличествоМесяцев);

//Год
КоличествоЛет = 2;
Результат = ДобавитьМесяц(НашаДата, КоличествоЛет * 12);
Формат даты в 1С

Функция Формат(<Значение>, <ФорматнаяСтрока>). В параметре <ФорматнаяСтрока> перечисляются параметры форматирования через символ «;». Возвращаемый тип строка.

Примеры:

Дата = '2020.02.05:21:29:30';

ДатаФормат1 = Формат(Дата, "ДФ=""дд ММММ гггг 'г.' ЧЧ:мм:сс""");
// "05 февраля 2020 г. 21:29:30"

ДатаФормат2 = Формат(Дата, "ДФ=""дд/ММ-гггг""");
// "05/02-2020"

ДатаФормат3 = Формат(Дата, "ДЛФ=ДД");
// "5 февраля 2020 г.";

ДатаФормат4 = Формат(Дата, "ДЛФ=Д");
// "05.02.2020";

ДатаФормат5 = Формат(Дата, "ДЛФ=В");
// "21:29:30";

Для задания параметра <ФорматнаяСтрока> можно воспользоваться «конструктором форматной строки». При написании кода вызвать его не составляет труда. Необходимо только нажать правую кнопку «мыши» и из контекстного меню выбрать одноимённый конструктор.

На вкладке «Дата» задаём нужный нам формат.

Как вызвать диалоговое окно для ввода даты

Модальный режим:

&НаКлиенте
Процедура ВводДатыМодально(Команда)
Дата = '0001.01.01';
Если ВвестиДату(Дата, "Введите дату", ЧастиДаты.Дата) Тогда
Сообщить("Введена дата : " + Дата);
КонецЕсли;
КонецПроцедуры

Не модальный режим:

&НаКлиенте
Процедура ВводДаты(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеВводаДаты", ЭтотОбъект);
ПоказатьВводДаты(Оповещение, , "Введите дату", ЧастиДаты.Дата);
КонецПроцедуры

&НаКлиенте
Процедура ПослеВводаДаты(Дата, Параметры) Экспорт
Если Не Дата = Неопределено Тогда
Сообщить("Введена дата : " + Дата);
КонецЕсли;
КонецПроцедуры

«Дата» в запросах 1С

Инициализация даты в запросах

Функция ДАТАВРЕМЯ()

Синтаксис: Функция ДАТАВРЕМЯ(<Год>, <Месяц>, <День>, <Час>, <Минута>, <Секунда>)

Стоит отметить, что параметры данной функции принимают только литералы в отличие от схожей на неё функции для работы с датой в модулях Дата(). Например запись с передачей в функцию полей выборки из временной таблицы ДАТАВРЕМЯ(вт.Год, вт.Месяц, вт.День) выдаст ошибку.

"ВЫБРАТЬ
|          ДАТАВРЕМЯ(2019, 12, 31, 23, 59, 59) КАК КонецГода"
|         ....

// Допустимо не указывать часы, минуты, секунды.
"ВЫБРАТЬ
|          ДАТАВРЕМЯ(2019, 12, 31) КАК НачалоДня" // 31.12.2019 00:00:00
|         ....
Пустая дата
"ВЫБРАТЬ
|          ДАТАВРЕМЯ(1, 1, 1) КАК ПустаяДата"
|         ....
Текущая дата и работа с условием по дате в запросе

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

"ВЫБРАТЬ
//… выбираемые поля
|ГДЕ
| Таблица.Дата = &ТекущаяДата"
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());

Получить отдельные части даты. Функции: ГОД, КВАРТАЛ, МЕСЯЦ, ДЕНЬ, ЧАС, МИНУТА, СЕКУНДА

В запросе получить отдельные части даты возможно с помощью одноимённых функций ГОД(), КВАРТАЛ(), МЕСЯЦ(), ДЕНЬ(), ЧАС(), МИНУТА(), СЕКУНДА().

Пример:

"ВЫБРАТЬ
|          МЕСЯЦ(ДАТАВРЕМЯ(2019, 12, 31)) КАК Месяц" // 12
|         ....

Получить начало, конец некоторого периода

Существует две функции для решения таких задач. Соответственно НАЧАЛОПЕРИОДА(<Дата>, <Период>) и КОНЕЦПЕРИОДА(<Дата>, <Период>).

Где в параметр <Дата> указывается «наша дата», а в параметр <Период>  задаётся значение периода (Год, Полугодие, Квартал, Месяц, Декада, Неделя, День, Час, Минута).

Пример:

"ВЫБРАТЬ
|          НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2019, 12, 31), МЕСЯЦ) КАК НачалоМесяца"
|         ....

Аналогично и для функции КОНЕЦПЕРИОДА().

Добавить сдвиг к дате

Для решения таких задач пригодится функция ДОБАВИТЬКДАТЕ(<Дата>, <Тип>, <Количество>). В параметр <Дата> задаётся «наша дата», в параметр <Тип> временной интервал (Год, Полугодие, Месяц и т.д.).

Пример:

"ВЫБРАТЬ
|          ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2019, 12, 31), ДЕНЬ, 1) КАК ДатаСоСдвигом"
|         ....

Использование функции РАЗНОСТЬДАТ()

Синтаксис:

РАЗНОСТЬДАТ(<Дата1>, <Дата2>, <Тип>). Где параметр <Дата1> принимает значение начальной даты, а параметр <Дата2> конечной. В параметре  <Тип> указывается в разрезе, какой временной единицы необходимо получить результат. Рассмотрим работу данной функции на примере, а именно узнаем, сколько дней осталось до «Нового Года». Результат выведем в окно сообщений.

&НаКлиенте
Процедура РасчитатьКоличесвоДнейДоНовогоГода(Команда)
КоличествоДней = РасчитатьКоличесвоДнейДоНовогоГодаНаСервере();
Сообщить("Дней до нового года : " + КоличествоДней);
КонецПроцедуры


&НаСервере
Функция РасчитатьКоличесвоДнейДоНовогоГодаНаСервере()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|          РАЗНОСТЬДАТ(&ТекущаяДата, КОНЕЦПЕРИОДА(&ТекущаяДата, ГОД), ДЕНЬ) КАК ДнейДоКонцаГода";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КоличествоДней = ВыборкаДетальныеЗаписи.ДнейДоКонцаГода;
КонецЦикла;

Возврат КоличествоДней + 1;

КонецФункции

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Функции работы с датами в 1С 8

Дата — один из примитивных типов данных в системе 1С:Предприятие. Дата всегда имеет формат год, месяц, день, час, минута, секунда. Таким образом, переменная типа дата содержит не только дату, но и время.

Создать переменную с типом дата можно несколькими способами:

Способ 1:

Присвоение переменной значения типа ‘ГГГГММДДччммсс’ или ‘ГГГГ.ММ.ДД:чч:чч:сс’

‘20100304235959’ — вернет дату 04.03.2010 23:59:59.

‘2011.10.09:22:10:12’ — вернет дату 09.10.2011 22:10:12.

Способ 2:

Использование функции глобального контекста Дата (Год, Месяц, День, час, минуты, секунды).

Дата(2010, 07, 14, 12, 13, 14) — вернет значение 14.07.2010 12:13:14

Этой же функцией можно преобразовать строку в дату.

Дата(20100714121314) — вернет значение 14.07.2010 12:13:14

Способ 3 (для запросов):

Использование выражения ДАТАВРЕМЯ (Год, Месяц, День, час, минута, секунда)

Для любого из способов указание часов, минут и секунд не является обязательным.

Дата (2010, 07, 14) — вернет значение 14.07.2010 0:00:00

Способ 4:

Еще можно попросить пользователя ввести нужную дату. Для этого необходимо воспользоваться функцией ВвестиДату(Дата, Подсказка, ЧастьДаты). Первый параметр задает переменную, которой будет присвоено введенное значение. Второй параметр — это заголовок диалогового окна, третий параметр определяет, какую часть типа дата необходимо ввести. Он может принимать следующие значения:

  • ЧастиДаты.Дата — будут введены только год, месяц и день;
  • ЧастиДаты.Время — будут введены только часы, минуты, секунды. В этом случае дата будет иметь вид 0001.01.01 чч:мм:сс.
  • ЧастиДаты.ДатаВремя — будут введены все составляющие даты и времени.

Способ 5 (получить текущую дату и время)

Дата=ТекущаяДата();

Проверка пустой даты

Часто бывает необходимо проверить, введена дата или нет. Пустая дата — это первое января 1 года, 0 часов, 0 минут, 0 секунд. Проверка может выглядеть следующим образом:

Если ПроверяемаяДата=Дата(1,1,1) Тогда
//действие при пустой дате
КонецЕсли;

Использование даты в реквизитах

В реквизитах справочников, документов и т.д. можно использовать:

  • дату, тогда время всегда равно 00:00:00;
  • только время, тогда дата равна 01.01.0001;
  • дату и время.

Получение отдельных составляющих даты

Получить год:

Результат=Год(Дата);

Получить месяц:

Результат=Месяц(Дата);

Получить номер дня в месяце:

Результат=День(Дата);

Получить номер дня в году:

Результат=ДеньГода(Дата);

Получить номер дня в неделе:

Результат=ДеньНедели(Дата);

Получить номер недели в году:

Результат=НеделяГода(Дата);

Получить час:

Результат=Час(Дата);

Получить минуту:

Результат=Минута(Дата);

Получить секунду:

Результат=Секунда(Дата);

Операции по преобразованию дат

Дата представляет собой количество секунд, прошедших с 1 января 0001 года 00:00:00. Поэтому, чтобы добавить к дате дни, часы, минуты и т.д., нужно прибавить соответствующее количество секунд.

Результат=Дата + 1; //Прибавили секунду
Результат=Дата + 2*60; //Прибавили 2 минуты
Результат=Дата + 3*60*60*24; //Прибавили 3 дня

Прибавить или отнять от даты один или несколько месяцев:

Результат=ДобавитьМесяц(Дата, 2); //Добавляет к дате 2 месяца
Результат=ДобавитьМесяц(Дата, -2) //Отнимает от даты 2 месяца

Получить конец или начало периода:

Результат=НачалоКвартала(Дата); // Возвращает дату начала квартала, время 00:00:00
Результат=КонецКвартала(Дата); //Возвращает дату конца квартала, время 23:59:59

Результат=НачалоМесяца(Дата); // Возвращает дату начала месяца, время 00:00:00
Результат=КонецМесяца(Дата); //Возвращает дату конца месяца, время 23:59:59

Результат=НачалоНедели(Дата); // Возвращает дату начала недели, время 00:00:00
Результат=КонецНедели(Дата); //Возвращает дату конца недели, время 23:59:59

Результат=НачалоДня(Дата); // Дата остается прежней, время 00:00:00
Результат=КонецДня(Дата); // Дата остается прежней, время 23:59:59

Результат=НачалоЧаса(Дата); //Дата и час остаются прежними, минуты и секунды 00:00
Результат=КонецЧаса(Дата); //Дата и час остаются прежними, минуты и секунды 59:59

Результат=НачалоМинуты(Дата); //Дата, час и минута остаются прежними, секунды 00
Результат=КонецМинуты(Дата); //Дата, час и минута остаются прежними, секунды 59

Работа с Датами (Временем) » FAQ 1С Все версии » HelpF.pro

Ввести дату, ввод даты[7.x, 8.x]
Выбор периода, задать период[7.x, 8.x]
Вычислить возраст человека и выразить его прописью[8.x]
Добавить к Дате указанное количество дней[8.x]
Добавить к Дате указанное количество лет[8.x]
Как Выбрать Месяц формирования отчета?[8.x, 8.2 УП]
Как вывести месяц прописью в родительском падеже?(Як вивести місяц в батьківському відмінку?)[8.x]
Как вычислить количество дней между датами[7.x, 8.x, 8.2 УП]
Как вычислить разницу между двумя датами в днях[8.x]
Как вычислить разницу между двумя датами в месяцах[8.x]
Как вычислить разницу между двумя датами в часах и минутах[8.x, 8.2 УП]
Как перебрать все даты с НачалоПериода по КонецПериода и получить таблицу периодов?[8.x, 8.2 УП]
Как по Номеру Недели Года получить Дату[8.x, 8.2 УП]
Как показать период времени в формате hh:mm:ss[]
Как получить день недели прописью?[8.3]
Как получить количество ЛЕТ, МЕСЯЦЕВ, ДНЕЙ между датами?[8.x]
Как получить количество рабочих дней в месяце по календарю?[8.x, 8.2 УП, 8.3]
Как получить количество часов/минут из интервал с исключением ночного времени[8.2 УП]
Как получить номер Декады месяца ( Например: 1 Декада )?[7.x, 8.x, 8.2 УП]
Как получить текущее время с милисекундами?[7.x, 8.x, 8.2 УП]
Как получить текущую (системную) дату на сервере 1С:Предприятия?[8.x]
Как посчитать разницу между двумя датами?[7.x, 8.x, 8.2 УП, 8.3]
Как преобразовать дату в формат RFC 822 и обратно?[8.2 УП, 8.3]
Как при выполнении обработки сообщить пользователю текущее время и дату?[8.x]
Как прибавить к дате день, месяц?[8.x]
Как проверить дату на пустое значение?[8.x]
Как соединить дату и время?[8.x, 8.2 УП]
Как сравнить две даты (дни)?[8.x]
Как узнать количество дней в месяце?[8.x, 8.2 УП]
Как указать нужную,конкретную дату?[7.x, 8.x]
Количество месяцев и дней между 2-мя датами[8.x]
Месяц прописью и День Прописью[7.x]
Момент Времени и Граница, назначение, примеры использования[7.x, 8.x]
Неправильно рассчитывает номер недели в году, функция корректного расчета[]
Перебор дат, заполнение списка, массива дат по порядку[8.x]
Перевод, преобразование Даты в Строку и Обратно[8.x, 8.2 УП]
Передаем в функцию дату, например 13.08.2009 11:13:54, получаем 13 августа 2009 г.[8.x]
Подсчет реального количества месяцев между датами, включая начало и конец месяца[8.x, 8.2 УП, 8.3]
Преобразование времени в универсальное (GMT) и местное в 1С[8.x, 8.2 УП]
Преобразование даты 1С в unixtime (Unix Time Stamp)[8.x]
Процедура вычисляет количество лет, месяцев и дней между двумя датами[7.x, 8.x]
Пустая дата в запросе и в модуле[8.x, 8.2 УП]
Разница между датами в рабочих днях, подсчет рабочих дней в 1С[8.x, 8.2 УП, 8.3]
Синхронизация времени рабочей станции с сервером[7.x, 8.x, 8.2 УП]
Синхронизация системного Времени по запросу[8.x]
Сколько лет, месяцев, дней прошло между датами[8.x]
Сколько лет, месяцев, дней прошло между датами[8.x]
Строку в дату по форматной строке[]
Функции для работы с датами через запрос (Разность, Добавление, Граница)[8.x]
Функции преобразуют время из представления в виде строки в число и обратно[8.x]
Функция вычисляет даты начала/конца периодов за интервал в виде таблицы значений[8.x]
Функция дата прописью[8.x]
Функция Дата прописью[7.x, 8.x, 8.2 УП]
Функция месяц прописью[7.x, 8.x]
Функция описывает период, определяемый датой и периодичностью[8.x]
Функция переводит Дату в формате 1С в формат вида ‘YYYYMMDD hh:mm:ss’ и обратно[8.x, 8.2 УП]
Функция пересчитывает сумму из валюты ВалютаНач по курсу КурНач в валюту ВалютаКон по курсу КурКон[8.x]
Функция ПредставлениеПериода() аналог 7-ной функции ПериодСтр()[8.x, 8.2 УП]
Функция преобразует строку вида 04/30/09 в дату[8.x]
Функция преобразует строку вида 31.01.2015 в дату[8.x, 8.2 УП, 8.3]
Функция проверяет является ли передаваемое значение датой или нет[8.x]

функции для работы с датой

Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными.

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Язык запросов 1С 8.3 для начинающих программистов: функции для работы с датой

Автор уроков и преподаватель школы: Владимир Милькин

Функции для работы с датой в запросе

На сегодняшнем уроке мы разберём функции для работы с реквизитами типа Дата в запросах.

Мы уже сталкивались с этим типом, например, когда выводили реквизит Дата у документов.

Функция ДАТАВРЕМЯ

И самая первая функция, которую нам следует разобрать — это, конечно же, ДАТАВРЕМЯ.

В качестве параметров она принимает целочисленные Год, Месяц, День, Час, Минута и Секунда. Последние три параметра являются необязательными.

Назначение функции ДАТАВРЕМЯ состоит в конструировании даты по её отдельным компонентам.

Таким образом следующий запрос

ВЫБРАТЬ	
    ДАТАВРЕМЯ(2013, 02, 01)

вернёт нам таблицу с типом поля ДАТА и значением 1 февраля 2013 года:

Значение часов, минут и секунд равно нулю, так как мы их не указали при вызове функции (последние три параметра).

Отступление

Отдельно обращаю ваше внимание на текст предыдущего запроса. Мы получаем таблицу как бы «из воздуха», не указывая в секции ИЗ источник данных.

Получается, что вовсе необязательно делать запрос к реально существующим таблицам базы данных. Можно конструировать эти таблицы самостоятельно, задавая константные значения полей.

Например, так (поля типа ЧИСЛО):

Или так (поля типа СТРОКА):

ВЫБРАТЬ	
    "Привет",
    ",",
    "Мир",
    "!"

Или вообще вот так (поля разных типов):

ВЫБРАТЬ	
    "Одна секунда до нового тысячелетия!",
    ДАТАВРЕМЯ(1999, 12, 31, 23, 59, 59),
    1

Вернёмся к функциям для работы с датой.

Функция ГОД

Принимает параметр типа ДАТА. Возвращает год.

ВЫБРАТЬ	
    ГОД(ДАТАВРЕМЯ(2013, 02, 01))

Функция КВАРТАЛ

Принимает параметр типа ДАТА. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Возвращает номер квартала даты (целочисленное значение от 1 до 4).

ВЫБРАТЬ	
    КВАРТАЛ(ДАТАВРЕМЯ(2013, 02, 01))

Функция МЕСЯЦ

Принимает параметр типа ДАТА. Возвращает номер месяца даты (целочисленное значение от 1 до 12).

ВЫБРАТЬ	
    МЕСЯЦ(ДАТАВРЕМЯ(2013, 02, 01))

Функция ДЕНЬГОДА

Принимает параметр типа ДАТА. Возвращает номер дня в году (целочисленное значение от 1 до 366).

ВЫБРАТЬ	
    ДЕНЬГОДА(ДАТАВРЕМЯ(2013, 02, 01))

Функция ДЕНЬ

Принимает параметр типа ДАТА. Возвращает номер дня в месяце (целочисленное значение от 1 до 31).

ВЫБРАТЬ	
    ДЕНЬ(ДАТАВРЕМЯ(2013, 02, 01))

 Функция НЕДЕЛЯ

Принимает параметр типа ДАТА. Возвращает номер недели в году.

ВЫБРАТЬ	
	НЕДЕЛЯ(ДАТАВРЕМЯ(2013, 02, 01))

 Функция ДЕНЬНЕДЕЛИ

Принимает параметр типа ДАТА. Возвращает номер дня недели (целочисленной значение от 1 (понедельник) до 7 (воскресенье)).

ВЫБРАТЬ	
    ДЕНЬНЕДЕЛИ(ДАТАВРЕМЯ(2013, 02, 01))

Функция ЧАС

Принимает параметр типа ДАТА. Возвращает час суток (целочисленное значение от 0 до 23).

ВЫБРАТЬ	
    ЧАС(ДАТАВРЕМЯ(2013, 02, 01, 20, 38, 59))

Функция МИНУТА

Принимает параметр типа ДАТА. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Возвращает минуты часа (целочисленное значение от 0 до 59).

ВЫБРАТЬ	
    МИНУТА(ДАТАВРЕМЯ(2013, 02, 01, 20, 38, 59))

Функция СЕКУНДА

Принимает параметр типа ДАТА. Возвращает секунды минуты (целочисленное значение от 0 до 59).

ВЫБРАТЬ	
    СЕКУНДА(ДАТАВРЕМЯ(2013, 02, 01, 20, 38, 59))

Функция НАЧАЛОПЕРИОДА

Принимает параметр типа ДАТА и тип периода (одно из значений МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ).

Функция предназначена для получения даты начала периода по дате, принадлежащей этому периоду.

ВЫБРАТЬ	
    НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2013, 02, 01), ГОД)

ВЫБРАТЬ	
	НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2013, 02, 01), НЕДЕЛЯ)

Функция КОНЕЦПЕРИОДА

Принимает параметр типа ДАТА и тип периода (одно из значений МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ).

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

ВЫБРАТЬ	
    КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(2013, 02, 01), ГОД)

ВЫБРАТЬ	
	КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(2013, 02, 01), НЕДЕЛЯ)

Функция ДОБАВИТЬКДАТЕ

Принимает параметр типа ДАТА, тип увеличения (одно из значений СЕКУНДА, МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ) и величину увеличения (целочисленное значение).

Функция предназначена для прибавления к дате некоторой величины.

ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2013, 02, 01), МЕСЯЦ, 1)

ВЫБРАТЬ	
    ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2013, 02, 01), КВАРТАЛ, 2)

Функция РАЗНОСТЬДАТ

Принимает два параметра типа ДАТА и третий параметр тип разности (одно из значений СЕКУНДА, МИНУТА, ЧАС, ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД).

Функция предназначена для получения разницы между двумя датами (вторым и первым параметром).

ВЫБРАТЬ	
    РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2013, 02, 01), ДАТАВРЕМЯ(2014, 02, 01), ГОД)

ВЫБРАТЬ	
    РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2013, 02, 01), ДАТАВРЕМЯ(2014, 02, 01), МЕСЯЦ)

В функции можно передавать не только константы, но и поля таблиц

Отдельно обращаю ваше внимание, что в функции можно передавать не только даты, сконструированные при помощи ДАТАВРЕМЯ, но и свойства объектов, которые мы запрашиваем из базы, имеющие тип ДАТА.

К примеру, если мы запрашиваем документы и нам известно, что свойство Дата у документа имеет тип ДАТА, это означает, что мы можем использовать его в качестве параметров для функций работающих с датой.

Вот пример:

ВЫБРАТЬ
    Дата,
    ГОД(Дата),
    НАЧАЛОПЕРИОДА(Дата, МЕСЯЦ),
    ДАТАВРЕМЯ(1999, 01, 01)
ИЗ
    Документ.ЗаказКлиента

 

Ещё раз: когда мы конструируем дату при помощи функции ДАТАВРЕМЯ, задавая конкретные значения года, месяца и числа, то получаем значение даты, которое жёстко прописано в коде и уже никогда не изменится.

Когда же мы пишем Дата, то в случае выборки из документов это означает, что вместо Дата будут подставляться даты из документов, забитых в базе.

Поэтому даты, заданные первым способом называются константными (то есть постоянными), а вторые нет.

Как вы понимаете, ничто нам не мешает использовать одновременно оба типа дат:

ВЫБРАТЬ
    Дата,
    РАЗНОСТЬДАТ(ДАТАВРЕМЯ(1999, 01, 01), Дата, ДЕНЬ)
ИЗ
    Документ.ЗаказКлиента

Пройдите тест

Начать тест

3. Тип дата в запросах хранит (выберите наиболее полный ответ)

год, месяц, день, час, минута, секунда, миллисекунда

год, месяц, день

год, месяц, день, час, минута, секунда


а) Напишите запрос, который получает все заказы клиентов (таблица Документ.ЗаказКлиента) и отдельно выводит год, месяц и день, на которые приходится заказ:

Функции языка запросов 1С. Работа с датами

Функции работы с датами

Дата — один из примитивных типов данных в системе 1С:Предприятие. Дата всегда имеет формат год, месяц, день, час, минута, секунда. Таким образом, переменная типа дата содержит не только дату, но и время.

Одной из первых моих статей в этой рубрике была небольшая шпаргалка по работе с датами, но о датах в запросах там было написано очень мало.  В запросах 1С с датами приходится работать довольно часто, особенно когда запрос строится к объектам метаданных в которых содержится периодическая информация. Как правило это регистры (сведений, накопления, расчета, бухгалтерии).

Функция Год

ГОД(<Дата>)

Функция Год() возвращает целое число — год даты. Например, выберем все заказы покупателя оформленные с 1 января 2016 года

ВЫБРАТЬ
    ЗаказПокупателя.Дата,
    ГОД(ЗаказПокупателя.Дата) КАК Год,
    ЗаказПокупателя.Ссылка
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
    ГОД(ЗаказПокупателя.Дата) > 2015

Функция Квартал

КВАРТАЛ(<Дата>)

Возвращает номер квартала даты (целочисленное значение от 1 до 4)

ВЫБРАТЬ
    ЗаказПокупателя.Дата,
    КВАРТАЛ(ЗаказПокупателя.Дата) КАК НомерКвартала,
    ЗаказПокупателя.Ссылка
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
    ЗаказПокупателя.Ссылка = &ЗаказПокупателя

Предположим, в ЗаказПокупателя передаем заказ №100 от 12.03.2016, в этом случае наш запрос вернет НомерКвартала = 1

Функция Месяц

МЕСЯЦ(<Дата>)

Принимает параметр типа ДАТА. Возвращает номер месяца даты (целочисленное значение от 1 до 12).

ВЫБРАТЬ МЕСЯЦ(ДАТАВРЕМЯ(2016, 6, 23))

Запрос вернет – 6

Функция ДеньГода

ДЕНЬГОДА(<Дата>)

Принимает параметр типа ДАТА. Возвращает номер дня в году (целочисленное значение от 1 до 366).

ВЫБРАТЬ ДЕНЬГОДА(ДАТАВРЕМЯ(2016, 6, 23))

Запрос вернет — 175

Функция День

ДЕНЬ(<Дата>)

Принимает параметр типа ДАТА. Возвращает номер дня в месяце (целочисленное значение от 1 до 31).

ВЫБРАТЬ ДЕНЬ(ДАТАВРЕМЯ(2016, 6, 23))

Запрос вернет — 23

Функция Неделя

НЕДЕЛЯ(<Дата>)

Принимает параметр типа ДАТА. Возвращает номер недели в году.

ВЫБРАТЬ НЕДЕЛЯ(ДАТАВРЕМЯ(2016, 6, 23))

Запрос вернет — 25

Функция ДеньНедели

ДЕНЬНЕДЕЛИ(<Дата>)

Принимает параметр типа ДАТА. Возвращает номер дня недели (целочисленной значение от 1 (понедельник) до 7 (воскресенье)).

ВЫБРАТЬ ДЕНЬНЕДЕЛИ(ДАТАВРЕМЯ(2016, 6, 23))

Запрос вернет — 4

Функция Час

ЧАС(<Дата>)

Принимает параметр типа ДАТА. Возвращает час суток (целочисленное значение от 0 до 23).

ВЫБРАТЬ ЧАС(ДАТАВРЕМЯ(2016, 6, 23, 18, 25, 36))

Запрос вернет — 18

Функция Минута

МИНУТА(<Дата>)

Принимает параметр типа ДАТА.  Возвращает минуты часа (целочисленное значение от 0 до 59).

ВЫБРАТЬ МИНУТА(ДАТАВРЕМЯ(2016, 6, 23, 18, 25, 36))

Запрос вернет — 25

Функция Секунда

СЕКУНДА(<Дата>)

Принимает параметр типа ДАТА. Возвращает секунды минуты (целочисленное значение от 0 до 59).

ВЫБРАТЬ СЕКУНДА(ДАТАВРЕМЯ(2016, 6, 23, 18, 25, 36))

Запрос вернет — 36

Функция НачалоПериода

НАЧАЛОПЕРИОДА(<Дата>, <Период>)

Функция возвращает для указанной даты начало периода в который она входит. Период может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ

ВЫБРАТЬ НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2016, 6, 23), МЕСЯЦ)

Запрос вернет – 01.06.2016

Функция КонецПериода

КОНЕЦПЕРИОДА(<Дата>, <Период>)

Функция возвращает для указанной даты конец периода в который она входит. Период может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ

ВЫБРАТЬ КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(2016, 6, 23), МЕСЯЦ)

Запрос вернет – 30.06.2016

Функция ДобавитьКДате

ДОБАВИТЬКДАТЕ(<Дата>, <Тип>, <Количество>)

Функция добавляет к дате указанное количество временных интервалов.

ВЫБРАТЬ ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2016, 6, 15), МЕСЯЦ, 4)

Получаем дату 15.10.2016 0:00:00 Очень удобно, что не приходится задумываться о количестве дней в месяцах.
Количество может быть и отрицательным. Тогда отсчет интервала производится в обратную сторону.

Функция РазностьДат

РАЗНОСТЬДАТ(<Дата1>, <Дата2>, <Тип>)

Функция рассчитывает календарную разницу между двумя датами и ее нельзя использовать в местах, где необходимо рассчитать банковских или рабочих дней. Тип может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ

ВЫБРАТЬ	РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2016, 2, 15), ДАТАВРЕМЯ(2016, 6, 12), ДЕНЬ)

Возвращает 118 дней.

Похожие записи

datetime — как получить только время из даты и времени C #

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
.

php — Как получить время из datetime

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании
.

datetime — Как получить текущее время только в JavaScript

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании

Загрузка…

.

Rails — получить дату по метке даты и времени

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
.

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

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