1с получить максимальную дату

Обновлено: 18.05.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

Отступление

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

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

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

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

03

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

04

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

Функция ГОД

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

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

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

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

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

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

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

Функция ДЕНЬ

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

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

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

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

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

Функция ЧАС

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

03

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

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

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

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

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

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

Функция Год

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

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

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

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

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

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

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

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

Функция День

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

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

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

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

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

Функция Час

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1с запрос максимальная дата

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

Мы попытаемся как можно подробнее рассказать вам об тех запросах, которые связанны с соединением, объединением, а также с соединением запросов. Давайте с помощью примеров попытаемся ответить на вопрос: каким образом можно получить последние документы в 1С запросе. Итак, давайте все таки начнем.

Для начала следует сортировать документы по убыванию даты, для этого вам понадобится воспользоватся конструкцией «ВЫБРАТЬ ПЕРВЫЕ 1»:

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

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

Этот запрос способен выбрать последние документы по всем контрагентам.

1с запрос максимальная дата

Сергей Лунев

Тип «Дата» в 1С входит в число 4 основных типов данных наряду с числом, строкой и булево. В конфигурациях даты встречаются повсеместно – при разработке невозможно избежать работы с этим типом данных. Поэтому лучше начинать писать запросы, уже понимая, как обрабатывать даты, какие есть возможности для работы с ними, как они хранятся, а до этого «безопаснее» использовать услуги программистов по доработке 1С, которые предоставляют большинство компаний-франчайзи. Рассмотрим на примерах все нюансы написания запросов с различными датами.

Примеры работы с датами в запросах 1С

В первую очередь, необходимо получить дату в запросе в нужном формате – со временем или без него. Выполнить эту задачу можно несколькими путями:

  1. Передать через параметр. Получить текущую дату сеанса можно только этим методом;
  2. Получить дату в запросе из поля выборки;
  3. Преобразовать из числовых значений с помощью функции ДАТАВРЕМЯ().

Самой распространенной задачей при работе с документами является проверка на пустую дату в запросе 1С. В этом случае легче всего сравнить переменную или поле с пустой датой, которая получается с помощью функции ДАТАВРЕМЯ(1,1,1):

Аналогичной командой можно получить произвольную дату и время в запросе. При этом их можно указать с точностью до секунды, задав в качестве параметров 6 чисел. Если же используется только 3 числа, то часы, минуты и секунды будут приравнены к 0 (начало дня). Например, нам необходимо в запросе выбрать документы за первые 10 дней января 2018 года:

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

  • НАЧАЛОПЕРИОДА. В качестве параметров указывается дата и промежуток времени, в разрезе которого необходимо получить начало даты. Используется, чтобы преобразовать дату к формату без времени. Для этого необходимо задать второй параметр – «ДЕНЬ»;
  • КОНЕЦПЕРИОДА. Аналогичная команда, возвращающая последнюю дату в разрезе указанных в параметрах единиц;
  • ДОБАВИТЬКДАТЕ. Позволяет получить дату, большую на заданное количество указанных единиц времени. В качестве параметров функции указывают дату, единицу измерения времени и число;
  • РАЗНОСТЬДАТ. Получает разницу между датами в указанных единицах измерения;
  • ДЕНЬНЕДЕЛИ. Вернет порядковый номер одного из дней недели.

Грамотно применяя эти функции, разработчик может решать достаточно нетривиальные задачи. К примеру, получение наименования дня недели текущей даты в запросе в виде строки:

Преобразование типов в запросе 1С из числа или строки в дату – трудоемкое занятие. Из чисел можно получить дату с помощью функции ДАТАВРЕМЯ, из строки – комбинируя функцию ПОДСТРОКА и конструкцию ВЫБОР КОГДА ТОГДА ИНАЧЕ. Исходя из этого, разработчики предпочитают получать дату из других типов в модуле и передавать ее в запрос с помощью параметра. К сожалению, это не всегда реализуемо, поэтому приходится менять формат даты в запросе.

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

Надеемся, статья была вам полезна. Если у вас остались вопросы по указанию даты в запросе, обратитесь к нашим специалистам в рамках консультационных услуг по 1С, мы обязательно вам поможем.

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

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

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

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

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

Читайте также: