1С Обучение

1С начало года – Дата в 1С

Содержание

Функции работы с датами в 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

chel1c.ru

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

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

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

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

Функция Год

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

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

 

ВЫБРАТЬ

    ЗаказПокупателя.Дата,

    ГОД(ЗаказПокупателя.Дата) КАК Год,

    ЗаказПокупателя.Ссылка

ИЗ

    Документ.ЗаказПокупателя КАК ЗаказПокупателя

ГДЕ

    ГОД(ЗаказПокупателя.Дата) > 2015

 

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

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

 

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

 

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

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

 

ВЫБРАТЬ

    ЗаказПокупателя.Дата,

    КВАРТАЛ(ЗаказПокупателя.Дата) КАК НомерКвартала,

    ЗаказПокупателя.Ссылка

ИЗ

    Документ.ЗаказПокупателя КАК ЗаказПокупателя

ГДЕ

    ЗаказПокупателя.Ссылка = &ЗаказПокупателя

 

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

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

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

 

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

 

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

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

 

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

 

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

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

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

 

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

 

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

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

 

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

 

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

Функция День

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

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

 

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

 

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

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

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

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

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

 

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

 

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

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

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

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

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

 

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

 

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

Функция Час

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

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

 

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

 

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

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

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

 

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

 

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

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

 

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

 

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

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

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

 

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

 

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

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

 

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

 

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

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

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

 

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

 

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

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

 

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

 

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

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

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

 

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

 

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

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

 

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

 

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

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

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

 

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

 

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

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

 

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

 

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

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

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

 

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

 

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

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

 

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

 

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

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

codernote.ru

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

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

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

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

Язык запросов 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. Тип дата в запросах хранит (выберите наиболее полный ответ)

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

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

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


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

helpme1c.ru

Работа с Датами (Временем) » 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]
Функция Дата прописью[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]

helpf.pro

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

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

  • как значение полей выборки,
  • как параметр запроса
  • как результат исполнения встроенных функций языка запроса 

 

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

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

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

Запрос = Новый Запрос(«ВЫБРАТЬ &ТекущаяДата»);

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

 

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

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

Используем функцию НАЧАЛОПЕРИОДА(ДАТА,{ГОД,КВАРТАЛ,МЕСЯЦ,ДЕКАДА,НЕДЕЛЯ,ДЕНЬ})

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

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

ВЫБРАТЬ
  КОНЕЦПЕРИОДА(&ТекущаяДата,ГОД)

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

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

ВЫБРАТЬ
  ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ТекущаяДата,ДЕНЬ),ЧАС,12)

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

ВЫБРАТЬ
   НАЧАЛОПЕРИОДА(&ТекущаяДата,ДЕНЬ)

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

ВЫБРАТЬ
  ДАТАВРЕМЯ(2017,1,1)

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

ВЫБРАТЬ
  ДАТАВРЕМЯ(2017,1,1,8,0,1)

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

Нет!

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

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

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

ВЫБРАТЬ
  МЕСЯЦ(&ТекущаяДата) как ТекущийМесяц,

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

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

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

 

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

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

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

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

Например:

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

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

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

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

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

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

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

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

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

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

Открыть текст запроса

Запрос,приводится в академических целях

ВЫБРАТЬ
"20161012" КАК Параметр,
&Парам = "20161012" КАК ВерныйПараметр,
ПОДСТРОКА(&Парам, 1, 1) КАК символ1,
ПОДСТРОКА(&Парам, 2, 1) КАК символ2,
ПОДСТРОКА(&Парам, 3, 1) КАК символ3,
ПОДСТРОКА(&Парам, 4, 1) КАК символ4
ПОМЕСТИТЬ Расчеты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Расчеты.Параметр,
Расчеты.ВерныйПараметр,
ВЫБОР
КОГДА Расчеты.символ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)
ИЗ
Цифры КАК цифры

Про использование пустой даты в запросе.

Реклама — величайшее искусство XX века.

— Маршалл Маклюэн

capitally.ru

Функции в запросах в 1С 8.3, 8.2 (в примерах)

/// Как в запросе задать константу типа дата в 1с 8.3, 8.2
 
&НаСервере
Процедура КакВЗапросеЗадатьКонстантуТипаДатаНаСервере()
 
    // Нужное значение даты можно передать в запрос через
    // параметр, либо указать значение даты прямо
    // в тексте запроса.
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |  ДАТАВРЕМЯ(2013, 12, 31, 23, 59, 59) КАК ЗаСекундуДоНовогоГода"
    );    
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Функции работы с датами в запросах в 1с 8.3, 8.2
 
&НаСервере
Процедура ФункцииДляРаботыСДатамиВЗапросахНаСервере()
 
    // Как получить начало или конец периода в запросах 1С 8.3, 8.2    
    // НАЧАЛОПЕРИОДА(Дата, Период)
    // КОНЕЦПЕРИОДА(Дата, Период)
 
    // Как добавить сдвиг к дате в запросах 1С 8.3, 8.2    
    // ДОБАВИТЬКДАТЕ(Дата, Период, Количество)
 
    // Как вычислить  разность между датами в запросах 1С 8.3, 8.2
    // РАЗНОСТЬДАТ(Дата1, Дата2, Период)
 
    // Как вычислить квартал, месяц или день даты в запросах 1С 8.3, 8.2
    // КВАРТАЛ(Дата), Месяц(Дата), День(Дата)
 
    // Период принимает одно из значений
    //   Секунда
    //   Минута
    //   Час
    //   День
    //   Неделя
    //   Декада
    //   Месяц
    //   Квартал
    //   Полугодие
    //   Год
 
    Запрос = Новый Запрос(    
        "ВЫБРАТЬ
        |   Ссылка,
        |   ДОБАВИТЬКДАТЕ(Дата, Квартал, 1) КАК ПлюсКвартал,
        |   РАЗНОСТЬДАТ(Дата, &ВыбДата, Месяц) КАК РазностьВМесяцах,
        |   КВАРТАЛ(Дата) КАК Квартал,
        |   МЕСЯЦ(Дата) КАК Месяц,
        |   ДЕНЬ(Дата) КАК День
        |ИЗ
        |   Документ.ПродажаЕды
        |ГДЕ
        |   Дата МЕЖДУ 
        |       НАЧАЛОПЕРИОДА(&ВыбДата, Год) И 
        |       КОНЕЦПЕРИОДА(&ВыбДата, Год)"
    );
 
    Запрос.УстановитьПараметр("ВыбДата", '20140601');
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Как в запросе указать значение поля предопределенной записи
/// одной из таблиц в 1с 8.3, 8.2    
 
&НаСервере
Процедура КакУказатьПредопределенноеЗначениеВЗапросеНаСервере()
 
    // К примеру, требуется вывести только тех котрагентов, у которых
    // значение поля Пол равно значению перечисления Мужской.
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   Наименование,
        |   Пол
        |ИЗ
        |   Справочник.Контрагенты
        |ГДЕ
        |   Пол = ЗНАЧЕНИЕ(Перечисление.Пол.Мужской)
        |"
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
    // Или требуется выбрать проводки по дебету бухгалтерского счёта 50.01,
    // обратившись к нему через предопределенное имя КассаОрганизации.
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |  СчетДт,
        |  СчетКт,
        |  Сумма
        |ИЗ
        |  РегистрБухгалтерии.Хозрасчетный
        |ГДЕ
        |  СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КассаОрганизации)"
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Как использовать условный оператор выбора в запросе в 1с 8.3, 8.2
 
&НаСервере
Процедура КакИспользоватьУсловныйОператорВыбораВЗапросеНаСервере()
 
    // При помощи условного оператора выбора добавим
    // в результат запроса новое поле описывающее
    // количество жира в продукте.
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   Наименование,
        |   Жиры,
        |   ВЫБОР
        |       КОГДА Жиры = 0 ТОГДА
        |           ""Здесь жира нет""
        |       КОГДА Жиры < 10 ТОГДА
        |           ""Средняя жирность""
        |       ИНАЧЕ
        |           ""Очень жирный продукт""
        |
        |   КОНЕЦ КАК ОписаниеЖирности
        | ИЗ
        |   Справочник.Номенклатура
        |"
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Как в запросе проверить поле на соответствие ссылочному типу 
/// в 1с 8.3, 8.2
 
&НаСервере
Процедура КакВЗапросеПроверитьПолеНаСсылочныйТипНаСервере()
 
    // Сделаем отбор только тех бухгалтерских проводок, у которых
    // регистратором является документ типа "ПродажаЕды"
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |  Регистратор,
        |  СчетДт,
        |  СчетКт,
        |  Сумма
        |ИЗ
        |  РегистрБухгалтерии.Хозрасчетный
        |ГДЕ
        |  Регистратор ССЫЛКА Документ.ПродажаЕды"
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Как в запросе проверить значение на вхождение в 
/// диапазон (включительно) в 1с 8.3, 8.2
 
&НаСервере
Процедура КакВЗапросеПроверитьЗначениеНаДиапазонНаСервере()    
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |  Наименование,
        |  Калорийность
        |ИЗ
        |  Справочник.Номенклатура
        |ГДЕ
        |  Калорийность МЕЖДУ 200 И 300"
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Как в запросе проверить значение на вхождение в список 
/// в 1с 8.3, 8.2
 
&НаСервере
Процедура КакВЗапросеПроверитьЗначениеНаВхождениеВСписокНаСервере()
 
    // Выведем солёные и сладкие продукты.
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |  Наименование,
        |  Вкус
        |ИЗ
        |  Справочник.Номенклатура
        |ГДЕ
        |  Вкус В (
        |    &СладкийВкус,
        |    &СолёныйВкус
        |  )"
    );
 
    Запрос.УстановитьПараметр("СладкийВкус",
        Справочники.Вкусы.НайтиПоНаименованию("Сладкий")
    );
 
    Запрос.УстановитьПараметр("СолёныйВкус",
        Справочники.Вкусы.НайтиПоНаименованию("Солёный")
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
    // Обратите внимание. У оператора "В" есть вариант "В ИЕРАРХИИ".
    // Например, ГДЕ Город В ИЕРАРХИИ (... список групп городов ...)
 
КонецПроцедуры
 
/// Как в запросе сравнить строку с шаблоном в 1с 8.3, 8.2
 
&НаСервере
Процедура КакВЗапросеСравнитьСтрокуСШаблономНаСервере()
 
    // %   - любое количество произвольных символов
    // _   - один произвольный символ
    // []  - любой одиночный символ, перечисленный внутри скобок
    // [^] - любой одиночный символ, кроме тех, что внутри скобок после ^
 
    // К примеру, выберем контрагентов, которые содержат
    // слова, оканчивающиеся на "ов ".
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   Наименование
        |ИЗ
        |   Справочник.Контрагенты
        |ГДЕ
        |   Наименование ПОДОБНО ""%_[о][в][ ]%"""
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Как проверить в запросе на отсутствие поля (то есть значение NULL)
/// в 1с 8.3, 8.2
 
&НаСервере
Процедура КакВЗапросеПроверитьПолеНаNULLНаСервере()
 
    // Ну, например, выберем из справочника Контрагенты только
    // те элементы, у которых нет поля "Пол" (очевидно, что
    // такими элементами окажутся группы).
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   Наименование,
        |   Пол
        |ИЗ
        |   Справочник.Контрагенты
        |ГДЕ
        |   Пол ЕСТЬ NULL"
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
    // Обратите внимание, что сюда не попали элементы,
    // у которых это поле есть, но просто не заполнено.
 
КонецПроцедуры
 
/// Как в запросе проверить и заменить NULL на другое значение в 1с 8.3, 8.2
 
&НаСервере
Процедура КакВЗапросеЗаменитьNULLНаДругоеЗначениеНаСервере()
 
    // Добавим в предыдущем примере вывод фразы "NULL", если
    // Пол ЕСТЬ NULL.
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   Наименование,
        |   ЕСТЬNULL(Пол, ""NULL"")
        |ИЗ
        |   Справочник.Контрагенты"
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Как получить пустую ссылку в запросе в 1с 8.3, 8.2
 
&НаСервере
Процедура КакВЗапросеПолучитьПустуюСсылкуНаСервере()
 
    // Получим только тех контрагентов, у которых поле Пол есть,
    // но оно не заполнено.
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   Наименование,
        |   Пол
        |ИЗ
        |   Справочник.Контрагенты
        |ГДЕ
        |   Пол = ЗНАЧЕНИЕ(Перечисление.Пол.ПустаяСсылка)"
    );    
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
    // аналогично пишутся
    // ЗНАЧЕНИЕ(Справочник.Контрагент.ПустаяСсылка)
    // ЗНАЧЕНИЕ(Документ.ПродажаЕды.ПустаяСсылка)
    // и т.д.
 
КонецПроцедуры
 
/// Как использовать значение Неопределено в запросе
/// в 1с 8.3, 8.2
 
&НаСервере
Процедура КакВЗапросеИспользоватьНеопределеноНаСервере()
 
    // Значение данного типа применяются, когда необходимо
    // использовать пустое значение, не принадлежащее ни к
    // одному другому типу. 
 
    // Например, такое значение изначально имеют реквизиты
    // с составным типом значения.    
 
    // Для примера отберём только те города, у которых
    // не заполнено поле ОтличительныйПризнак (оно имеет
    // составной тип).
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   Наименование,
        |   ОтличительныйПризнак
        |ИЗ
        |   Справочник.Города
        |ГДЕ
        |   ОтличительныйПризнак = Неопределено"
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

helpme1c.ru

Профессия — 1С » Дата в запросах 1С

ДАТАВРЕМЯ

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


ВЫБРАТЬ ДАТАВРЕМЯ(2016, 1, 1)

В результате выполнения запроса получаем дату – 01.01.2016
На самом деле трудно представить ситуацию в которой в запросе дата будет указываться таким образом. Ведь когда надо указать период используются параметры. Но есть случай когда эта функция представляет особую ценность. Это когда нам надо в полях или в условиях запроса указать пустую дату. Напомню, что для языка 1С пустая дата имеет вид – 0001.01.01. Таким образом, чтобы получить пустую дату в запросе достаточно указать ДАТАВРЕМЯ(1, 1, 1). В качестве примера выберем из регистра сведений РаботникиОрганизаций записи у которых не заполнен ПериодЗавершения:


ВЫБРАТЬ
	РаботникиОрганизаций.Период,
	РаботникиОрганизаций.Сотрудник,
	РаботникиОрганизаций.Должность,
	РаботникиОрганизаций.ПодразделениеОрганизации
ИЗ
	РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ГДЕ
	РаботникиОрганизаций.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)

НАЧАЛОПЕРИОДА

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


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

Запрос вернет – 01.01.2016
А теперь пример. Как известно периодичность у регистра РаботникиОрганизаций один день. Составим запрос в котором вместо действительного периода записей будет отображаться дата начала месяца.


ВЫБРАТЬ
	НАЧАЛОПЕРИОДА(РаботникиОрганизаций.Период, МЕСЯЦ) КАК НачалоМесяца,
	РаботникиОрганизаций.Сотрудник,
	РаботникиОрганизаций.Должность,
	РаботникиОрганизаций.ПодразделениеОрганизации
ИЗ
	РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций

professia1c.ru

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

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