1С запрос начало дня дата

Содержание
  1. Получение дат
  2. Как передать текущую дату в запрос?
  3. Как получить начало текущего месяца?
  4. Конец текущего года?
  5. Как получить полдень текущей даты?
  6. Как получить дату без времени (0:00)
  7. Как задать дату-константу в запросе 1С?
  8. Возможно задать дату с точностью до секунды?
  9. А до милисекунды?
  10. Вычисления над датами
  11. Как получить номер текущего месяца?
  12. Как получить день недели?
  13. Сколько осталось до Нового года?
  14. Что еще следует знать про дату в запросах?
  15. Преобразовать строку в дату в запросе
  16. Как задать дату в запросах 1С в виде константы
  17. Как получить начало или конец года, полугодия, квартала, месяца, декады, недели, дня, часа, минуты в запросах 1С
  18. Как получить в запросах 1С год, день года, квартал, месяц, неделю, день недели, день, час, минуту, секунду из даты
  19. Как добавить к дате или отнять от даты год, полугодие, квартал, месяц, декаду, неделю, день, час, минуту, секунду в запросах 1С
  20. Как вычислить разность дат в запросах 1С

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

Получить начало или конец периода от нужной вам даты в запросе можно при помощи функций языка запросов:

Где период принимает значения: Год, Квартал, Месяц, Неделя, День, Час, Секунда В запросе это выглядит так:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Экран съехал вправо что делать

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

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

Что еще следует знать про дату в запросах?

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

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

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

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

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

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

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

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

Ошибка «неверные параметры» возникает в случае, когда вместо даты передается 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С, так же как и во встроенном языке платформы 1С:Предприятие, есть функции для работы с датами. Они помогают упростить преобразования дат в запросах, избежать использования большого количества параметров. Рассмотрим эти функции.

Как задать дату в запросах 1С в виде константы

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

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

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

Для этого используются соответственно функции:

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

Запрос . Текст = "ВЫБРАТЬ
НачалоПериода(ДАТАВРЕМЯ (2016,09,28,12,22,00), ДЕКАДА)" ; // Результат: 21 сентября 2016 0:00:00

Запрос . Текст = "ВЫБРАТЬ
КонецПериода(ДАТАВРЕМЯ (2016,09,28,12,22,00), КВАРТАЛ)" ; // Результат: 30 сентября 2016 23:59:59

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

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

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

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

Запрос . Текст = "ВЫБРАТЬ
ГОД(ДАТАВРЕМЯ (2016,09,28,12,22,00))" ; // Результат: 2016

Запрос . Текст = "ВЫБРАТЬ
НЕДЕЛЯ(ДАТАВРЕМЯ (2016,09,28,12,22,00))" ; // Результат: 40

Запрос . Текст = "ВЫБРАТЬ
ДЕНЬНЕДЕЛИ(ДАТАВРЕМЯ (2016,09,28,12,22,00))" ; // Результат: 3

Запрос . Текст = "ВЫБРАТЬ
ДЕНЬГОДА(ДАТАВРЕМЯ (2016,09,28,12,22,00))" ; // Результат: 272

Запрос . Текст = "ВЫБРАТЬ
ДЕНЬ(ДАТАВРЕМЯ (2016,09,28,12,22,00))" ; // Результат: 28

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

Для этого используется функция ДобавитьКДате (Дата, Период, Значение).

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

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

Запрос . Текст = "ВЫБРАТЬ
ДобавитьКДате(ДАТАВРЕМЯ(2016, 9, 28, 12, 22, 0), ПОЛУГОДИЕ, 1)" ; // Результат: 28 марта 2017 12:22:00

Запрос . Текст = "ВЫБРАТЬ
ДобавитьКДате(ДАТАВРЕМЯ(2016, 9, 28, 12, 22, 0), ДЕКАДА, -1)" ; // Результат: 18 сентября 2016 12:22:00

Как вычислить разность дат в запросах 1С

Для этого используется функция РазностьДат (Дата1, Дата2, Период).

Параметр Дата1 — дата, которую вычитают.

Параметр Дата2 — дата, из которой вычитают.

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

Запрос . Текст = "ВЫБРАТЬ
РазностьДат(ДАТАВРЕМЯ(2016, 9, 28, 12, 22, 0), ДАТАВРЕМЯ(2017, 9, 28, 12, 22, 0), КВАРТАЛ)" ; // Результат: 4

Запрос . Текст = "ВЫБРАТЬ
РазностьДат(ДАТАВРЕМЯ(2016, 9, 28, 12, 22, 0), ДАТАВРЕМЯ(2017, 9, 28, 12, 22, 0), Секунда)" ; // Результат: 31 536 000

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

Оцените статью
Добавить комментарий

Adblock detector