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

| Дата: 4 Февраль, 2016

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

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

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

  • Некоторые аргументы могут быть необязательными и иметь значение по умолчанию.
  • Здесь спам можно вызвать с одним или нулевым параметром.
Некоторые из самых «пустых», таких как 0, и «Нет», представляют собой логическую ложность, тогда как большинство других значений представляют логическую истину. Этот механизм вызывает как и так, так и ведет себя как логические операторы, которые они должны реализовать, но также позволяет писать простые и сладкие условные выражения.

  • ДАТАВРЕМЯ

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

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

    Это также может быть написано. На самом деле, это довольно идиоматично в Питоне, поэтому лучше привыкнуть к нему. Поэтому, чтобы проверить, имеет ли он значение, мы могли бы написать. Другой способ сделать это. Можете ли вы догадаться, как это работает?

    Итак, чтобы сделать корзину и использовать ее, мы сделаем что-то вроде. В разделе 9 учебника. Вам нравятся удивительные понятия? Итак, если вы действительно дерзкие, вы можете взглянуть на эссе Гвидо ван Россума по метаклассам. Но если вы предпочитаете, чтобы ваш мозг не взорвался, этого трюка может быть достаточно.

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

    Это означает, что если у вас есть такая функция. Обычно это тип поведения, который вы хотите. Однако иногда бывает полезно иметь что-то вроде статического пространства имен, то есть хранить некоторые значения из среды в функции при ее создании. Таким образом, поскольку ни один не предоставляет аргумент функции, это будет делать следующее. Если бы нам это было нужно, мы могли бы написать. Приведем пример - функцию, которая компилирует две другие функции. Нам нужна функция, которая работает следующим образом.

    Ясно, что композит принимает две функции в качестве параметров и возвращает функцию, которая принимает параметр. Таким образом, скелет решения может быть. Это было бы очень странно. Представьте себе следующий сценарий. Чтобы иметь рабочее решение, все, что нам нужно сделать, это использовать описанную выше технику. Вы можете импортировать и использовать их в своих программах. Они содержат кучу полезных вещей.

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

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

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

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

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

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

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

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

    Надеюсь, вы кое-чему научились. Раскрашенная версия здесь. Почему используются внутренние циклы? Почему, когда первый цикл заканчивается разрывами, должен ли запускаться следующий цикл или нет, зависит от того, закончен ли основной цикл, то есть, установлено ли значение 1. Пока ничего не сделано: Пока не сделано: # Хорошо до перерыва, когда не сделано.

    Эквивалентная версия, возможно, более ясная, но, на мой взгляд, менее воинственная, будет. В этом разделе описываются функции категории «Информация». Вставка - Функция - Информация о категории. Данные в приведенной ниже таблице будут использованы в качестве основы для некоторых примеров, приведенных в описаниях функций.

  • КОНЕЦПЕРИОДА

    Синтаксис такой же как и у начала периода. И как ясно из названия возвращает конец периода по дате и типу периода. Подробно рассматривать не будем. Ограничимся мини примером.
    Запрос:

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

    Возвращает 31.01.2016 23:59:59
    Как видим значение возвращается с точностью до секунды.

    Пример

    Возвращает тип значения, в котором 1 = номер, 2 = текст, 4 = логическое значение, 8 = формула, 16 = значение ошибки, 64 = матрица. Значение - это определенное значение, для которого вы хотите определить тип данных. Возвращает числовое значение показанного параметра.

    В случае ошибок функция возвращает значение ошибки. Значение - это параметр, который нужно преобразовать в число. Значение - это значение, число, ложное или истинное значение, которое проверяется, чтобы проверить, является ли это текстом или цифрами. Убедитесь, что аргумент является ссылкой. При передаче ссылки эта функция не проверяет ссылочный значение.

  • ДОБАВИТЬКДАТЕ

    Добавляет к дате указанное количество временных интервалов.
    Синтаксис:
    ДОБАВИТЬКДАТЕ(Дата, ТипПериода, Количество)
    ТипПериода принимает те же значения, что и для функции НАЧАЛОПЕРИОДА
    Для примера выберем февральскую дату:

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

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

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

    Значение - любое выражение для проверки, является ли оно числом или текстом. Значение - это значение или выражение для проверки, является ли это текст, цифры и, альтернативно, логическое значение. Значение - это значение или выражение для анализа. Проверяет логическое значение.

  • РАЗНОСТЬДАТ

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

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

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

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

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

    возвращает 15

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

32
NULL – отсутствующие значения. Не путать с нулевым значением! NULL – это не число, не равно пробелу, пустой ссылке, Неопределено. NULL – типообразующее значение, т.е. есть тип NULL и единственное значение этого типа. NULL... 11
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения... 11
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на... 9
Столкнулся с задачей, нужно было выбрать все документы по выплате и сгруппировать их по типу документа! Перелистав все ЖКК и интернет, понял что простого способа получить Вид документа в запросе нет:(Пришлось...

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

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