Дата в запросе 1С 8.3
Меню

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

Содержание статьи
  1. Видео эксперта
  2. Примеры работы с датами в запросах 1С

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

Видео эксперта

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

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

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

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

    
    ДАТАВРЕМЯ (1, 1, 1)
    

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

    
    ВЫБРАТЬ
            ПоступлениеНаРасчетныйСчет.Ссылка КАК Ссылка
    ИЗ
            Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет
    ГДЕ
            ПоступлениеНаРасчетныйСчет.Дата МЕЖДУ ДАТАВРЕМЯ(2018, 1, 1, 0, 0, 0) И ДАТАВРЕМЯ(2018, 1, 10, 23, 59, 59)
    

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

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

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

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

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

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

    • РАЗНОСТЬДАТ. Получает разницу между датами в указанных единицах измерения;

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

    • ДЕНЬНЕДЕЛИ. Вернет порядковый номер одного из дней недели.

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

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

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

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

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


    Рассказать друзьям
    Предыдущая статья статья
    Подбор персонала в программе 1С: профиль должности, создание вакансии, загрузка резюме кандидатов на должности
    Следующая статья статья
    1С:Управление торговлей 8 версия 11.5: обзор возможностей
    Комментарии