Меню

Как получить текущую дату и время



Работа с датами в 1С 8.3 на примерах

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

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

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

С помощью литерала встроенного языка

С помощью функции 1С Дата()

Как указать пустую дату

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

Получить текущую дату

Получить отдельные части даты

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

Определить дату и время начала некоторого периода из даты

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

Определить дату и время конца некоторого периода из даты

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

Определить номер недели или дня в году

Определить номер дня в неделе

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

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

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

Формат даты в 1С

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

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

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

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

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

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

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

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

Синтаксис: Функция ДАТАВРЕМЯ( , , , , , )

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

Пустая дата

Текущая дата и работа с условием по дате в запросе

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

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

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

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

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

Читайте также:  Создайте таблицу Реки Европы используя следующие данные длины км и площади бассейна тыс кв км p

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

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

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

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

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

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

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

Источник

Дата в 1С запросе

Дата в 1С запросе

Дата в запросе в 1С может быть получена:

  • как значение полей выборки,
  • как параметр запроса
  • как результат исполнения встроенных функций языка запроса
    • ДАТАВРЕМЯ
    • ДОБАВИТЬКДАТЕ
    • НАЧАЛОПЕРИОДА
    • КОНЕЦПЕРИОДА

Текущая дата(и время) в запросе 1С получается только в качестве параметра.

Получение дат

Как передать текущую дату в запрос?

Запрос . УстановитьПараметр ( «ТекущаяДата» , ТекущаяДата ( ) ) ;
тзРезультатЗапроса = Запрос . Выполнить ( ) . Выгрузить ( ) ;

Далее приводятся только тексты запросов.

Как получить начало текущего месяца?

Конец текущего года?

Как получить полдень текущей даты?

Добавим использование функции ДОБАВИТЬКДАТЕ(ДАТА,<ГОД,КВАРТАЛ,МЕСЯЦ,ДЕКАДА,НЕДЕЛЯ,ДЕНЬ>,ЧИСЛО)

Как получить дату без времени (0:00)

Как задать дату-константу в запросе 1С?

Возможно задать дату с точностью до секунды?

А до милисекунды?

Вычисления над датами

Разность в секундах,минутах,часах, днях, неделях получается при использовании функции РАЗНОСТЬДАТ(Дата1,Дата2,<ГОД,КВАРТАЛ,МЕСЯЦ,ДЕКАДА,НЕДЕЛЯ,ДЕНЬ>)

Как получить номер текущего месяца?

ВЫБРАТЬ
МЕСЯЦ(&ТекущаяДата) как ТекущийМесяц,
РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&ТекущаяДата,ГОД),КОНЕЦПЕРИОДА(&ТекущаяДата,МЕСЯЦ),МЕСЯЦ) как ПолныхПрошедшихМесяцев

Как получить день недели?

ВЫБРАТЬ
ДЕНЬНЕДЕЛИ(&ТекущаяДата) КАК НомерДня,
ВЫБОР
КОГДА ДЕНЬНЕДЕЛИ(&ТекущаяДата) = 1
ТОГДА «понедельник»
КОГДА ДЕНЬНЕДЕЛИ(&ТекущаяДата) = 2
ТОГДА «вторник»
КОГДА ДЕНЬНЕДЕЛИ(&ТекущаяДата) = 3
ТОГДА «среда»
КОГДА ДЕНЬНЕДЕЛИ(&ТекущаяДата) = 4
ТОГДА «четверг»
КОГДА ДЕНЬНЕДЕЛИ(&ТекущаяДата) = 5
ТОГДА «пятница»
КОГДА ДЕНЬНЕДЕЛИ(&ТекущаяДата) = 6
ТОГДА «суббота»
ИНАЧЕ «Воскресенье»
КОНЕЦ КАК НаименованиеДняНедели

Сколько осталось до Нового года?

ВЫБРАТЬ
&ТекущаяДата > ДАТАВРЕМЯ(2017, 1, 1) КАК НовыйГодНаступил,
ВЫБОР
КОГДА &ТекущаяДата > ДАТАВРЕМЯ(2017, 1, 1)
ТОГДА «Да, наступил»
ИНАЧЕ «Нет, не наступил»
КОНЕЦ КАК Ответ,
РАЗНОСТЬДАТ(&ТекущаяДата,ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2017, 1, 1),СЕКУНДА,-1),ДЕНЬ) как ОсталосьДней,
РАЗНОСТЬДАТ(&ТекущаяДата,КОНЕЦПЕРИОДА(&ТекущаяДата,ДЕНЬ),ЧАС) как ОсталосьЧасов,
РАЗНОСТЬДАТ(&ТекущаяДата,КОНЕЦПЕРИОДА(&ТекущаяДата,ЧАС),Минута) как ОсталосьМинут,
РАЗНОСТЬДАТ(&ТекущаяДата,КОНЕЦПЕРИОДА(&ТекущаяДата,Минута),Секунда) как ОсталосьСекунд

primer-rascheta-vremeni-do-novogo-godaЧто еще следует знать про дату в запросах?

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

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

Допустимо задание дат-констант и использование параметров, также обработка их выше приведенными функциями.

Но нельзя дату передать в параметры виртуальных таблиц из полученных ранее в этом запросе полей выборки.

Читайте также:  Заполните таблицу жизненные формы растений дерево кустарник трава

Сортировка даты в запросе производится в рамках секунды.

Момент времени документа не является датой, он сортирует более глубже, чем дата документа, т.е. при наличии документов в одну секунду времени, сортировка по дате производится в недопустимом порядке: например в виде представления. Используйте для этого момент времени.

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

Допускается применение функции МАКСИМУМ(),МИНИМУМ() к дата в запросе, как в группировке так и в итогах запроса.

Ошибка «неверные параметры» возникает в случае, когда вместо даты передается null, число или что-то иное.

Преобразовать строку в дату в запросе

Специальных функций нет. но возможно преобразование через функцию ПОДСТРОКА и конструкцию ВЫБОР КОГДА

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Расчеты.Параметр,
Расчеты.ВерныйПараметр,
ВЫБОР
КОГДА Расчеты.символ1 = «2»
ТОГДА 2
КОГДА Расчеты.символ1 = «1»
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ * 1000 + ВЫБОР
КОГДА Расчеты.символ2 = «0»
ТОГДА 0
КОГДА Расчеты.символ2 = «1»
ТОГДА 1
КОГДА Расчеты.символ2 = «2»
ТОГДА 2
КОГДА Расчеты.символ2 = «3»
ТОГДА 3
КОГДА Расчеты.символ2 = «4»
ТОГДА 4
КОГДА Расчеты.символ2 = «5»
ТОГДА 5
КОГДА Расчеты.символ2 = «6»
ТОГДА 6
КОГДА Расчеты.символ2 = «7»
ТОГДА 7
КОГДА Расчеты.символ2 = «8»
ТОГДА 8
ИНАЧЕ 9
КОНЕЦ * 100 + ВЫБОР
КОГДА Расчеты.символ3 = «0»
ТОГДА 0
КОГДА Расчеты.символ3 = «1»
ТОГДА 1
КОГДА Расчеты.символ3 = «2»
ТОГДА 2
КОГДА Расчеты.символ3 = «3»
ТОГДА 3
КОГДА Расчеты.символ3 = «4»
ТОГДА 4
КОГДА Расчеты.символ3 = «5»
ТОГДА 5
КОГДА Расчеты.символ3 = «6»
ТОГДА 6
КОГДА Расчеты.символ3 = «7»
ТОГДА 7
КОГДА Расчеты.символ3 = «8»
ТОГДА 8
ИНАЧЕ 9
КОНЕЦ * 10 + ВЫБОР
КОГДА Расчеты.символ4 = «0»
ТОГДА 0
КОГДА Расчеты.символ4 = «1»
ТОГДА 1
КОГДА Расчеты.символ4 = «2»
ТОГДА 2
КОГДА Расчеты.символ4 = «3»
ТОГДА 3
КОГДА Расчеты.символ4 = «4»
ТОГДА 4
КОГДА Расчеты.символ4 = «5»
ТОГДА 5
КОГДА Расчеты.символ4 = «6»
ТОГДА 6
КОГДА Расчеты.символ4 = «7»
ТОГДА 7
КОГДА Расчеты.символ4 = «8»
ТОГДА 8
ИНАЧЕ 9
КОНЕЦ КАК НомерГода
ПОМЕСТИТЬ Цифры
ИЗ
Расчеты КАК Расчеты
;

Реклама — это техника запудривания мозгов. Старайтесь не забывать об этом: с рекламой шутки плохи.

— Фредерик Бегбедер

Источник

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

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

  1. Функции работы с датами
  2. Дата
  3. ТекущаяДата
  4. ТекущаяУниверсальнаяДатаВМиллисекундах
  5. Год, Месяц, День, Час, Минута, Секунда
  6. Начало…
  7. Конец…
  8. НеделяГода, ДеньГода
  9. ДеньНедели
  10. ДобавитьМесяц
  11. МоментВремени
  12. ВвестиДату
  13. Типовые задачи представления данных
  14. Разность даты в днях, количество дней между датами
  15. Разница между датами в месяцах, количество месяцев между датами
  16. Прибавить день к дате, вычесть день из даты, отнять от даты день
  17. Прибавить месяц к дате, вычесть месяц из даты, отнять месяц от даты
  18. День недели по дате
  19. Сравнение дат
  20. Дата равна нулю (проверка на заполненность), проверка на пустую дату

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

Типовой порядок частей даты принятый в 1С — год, месяц, день, час, минута, секунда.

Собственно простейший способ создания новой переменной типа дата является приравнивание к переменной строки цифр в одинарных кавычках (обязательно) вида ‘ГГГГММДДччммсс’ где:

  • ГГГГ — четыре цифры года (включая тысячелетие и век);
  • ММ — две цифры месяца;
  • ДД — две цифры даты;
  • чч — две цифры часа (в 24-х часовом формате);
  • мм — две цифры минут;
  • сс — две цифры секунд.
Читайте также:  Можно ли определить пол до рождения

Часы, минуты и секунды можно не указывать, при этом они приравниваются к нулю.

Источник

Запрос: Получение дат начала или окончания периодов в заданном интервале дат

Рассмотрим случай, когда в запросе нужно получить таблицу дат, состоящую из дат начала или окончания периодов в заданном интервале дат.

На примере типовой функции

ЗапросВТПериоды() общего модуля ЗарплатаКадрыОбщиеНаборыДанных конфигурации ЗУП 3.1.

Подробнее на примере:

Часть 1. Использование типовой функции.

Нужно получить таблицу с датами начала месяцев в интервале с 01.01.16 по 01.09.16 (т.е. таблицу с датами 01.01.16, 01.02.16, 01.03.16, 01.04.16, 01.05.16, 01.06.16, 01.07.16, 01.08.16, 01.09.16):

НачалоИнтервала = Дата(2016, 1, 1);

ОкончаниеИнтервала = Дата(2016, 9, 1);

Периодичность = «МЕСЯЦ»; //может принимать значения «ГОД», «КВАРТАЛ», «МЕСЯЦ», «ДЕНЬ» – определяет дату начала какого периода хотим получить

ИмяПоляПериод = «Месяц»; //имя поля колонки таблицы, в которой будут полученные даты

ИмяВТ = «ВТ_Месяцы»; //имя временной таблицы, в которой будут храниться полученные даты

ИспользоватьКонецПериода = Ложь; //Ложь – т.к. хотим получить даты начала каждого месяца в интервале

Запрос = ЗапросВТПериоды(НачалоИнтервала, ОкончаниеИнтервала, Периодичность, ИмяПоляПериод, ИмяВТ, ИспользоватьКонецПериода);

Часть 2. Запрос для получения дат.

Источник

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

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

Очевидно, что очень часто программистам приходится работать с датой и временем и естественно, по мере работы возникают вопросы, ответы на которые приходится где то искать. Я накидал для себя небольшую шпаргалку по работе с датами.

Хранение дат в системе

В базе данных даты хранятся с точностью до секунд. Для реквизитов типа «дата» можно установить вариант хранения «дата и время», «только дата», «только время».

Переменные типа «дата» всегда представляют дату с секундами. Отсчет дат ведется с Рождества Христова (наша эра), т.е. с 01.01.0001 00:00:00 по Григорианскому календарю. Начальная дата — это не совсем дата. Это значение в системе используется для представления «пустой даты» (аналог пустой ссылки для ссылочных типов или пустой строки «» для строкового типа).

Максимальная дата — 31.12.3999 23:59:59

Как получить текущую дату и время?

Как явно указать нужную дату?

  • Литералом встроенного языка вида ‘ГГГГММДДччммсс’ :
  • Функцией глобального контекста Дата():
  • Если нам необходимо в тексте запроса указать конкретную дату — тогда используем литерал ДАТАВРЕМЯ():

Пустая дата в 1С

В текстах модулей

Как соединить дату и время?

Как сложить две даты

Как вычислить количество дней между двумя датами

  • Способ 1 (запросом)
  • Способ 2

Если у вас есть еще какие то интересные заметки — пиши в комментариях, с радостью добавлю в эту статью.

Как добавить к дате секунду, минуту, час, день

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

Источник