Пустая ссылка, дата или строка в запросе 1С 8.3 и 8.2
В этой статье будут рассмотрены способы проверки на пустое значение в зависимости от типа проверяемого реквизита в запросе 1С 8.3, в том числе пустой ссылки.
Проверка на NULL
Значение NULL возвращается в том случае, когда реквизита попросту нет. Тип в этом случае будет тоже NULL. Например, вы объединяете две таблицы через левое соединение. В том случае, когда для левой таблицы не будет найдено ни одного значения в правой, вернется NULL.
Проверку на данное значение можно осуществить при помощи конструкции «ЕСТЬ NULL» и «ЕСТЬNULL()». В первом случае возвращается Истина или Ложь. Во втором случае можно сразу задать другое значение в том случае, когда возвращается NULL.
В приведенном ниже запросе 1С 8.3 будут возвращен список контактных лиц тех партнеров, у кого не задан сегмент.
ВЫБРАТЬ
КонтактныеЛицаПартнеров.Ссылка
ИЗ
Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СегментыПартнеров КАК СегментыПартнеров
ПО КонтактныеЛицаПартнеров.Владелец = СегментыПартнеров.Родитель
ГДЕ
СегментыПартнеров.Ссылка ЕСТЬ NULL
Пустая дата
Проверка значения на пустую дату производится путем сравнения с конструкцией ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0). Пример использования приведен ниже:
ВЫБРАТЬ
Встреча.Ссылка
ИЗ
Документ.Встреча КАК Встреча
ГДЕ
Встреча.Дата = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
Пустая ссылка в запросе 1С
В случае, когда возвращаемый реквизит имеет ссылочный тип, например, это элемент какого-либо справочника, документа и т. п., используется следующая конструкция: ЗНАЧЕНИЕ(Справочник.ИмяСправочника.ПустаяСсылка).
В приведенном ниже примере запрос выбирает всех партнеров, у которых не указан бизнес-регион.
ВЫБРАТЬ
Партнеры.Ссылка
ИЗ
Справочник.Партнеры КАК Партнеры
ГДЕ
Партнеры.БизнесРегион = ЗНАЧЕНИЕ(Справочник.БизнесРегионы.ПустаяСсылка)
Чтобы проверить на «ЗначениеЗаполнено» нужно сделать обратное условие:
Пустая строка
Для проверки строковых типов производится сравнение с другим образцом. В данном случае – «».
Получите понятные самоучители по 1С бесплатно:
Приведенный ниже запрос отберет всех партнеров с незаполненным наименованием.
ВЫБРАТЬ
Партнеры.Ссылка
ИЗ
Справочник.Партнеры КАК Партнеры
ГДЕ
Партнеры.Наименование = «»
Текущая дата в запросе
В данной статье будет рассмотрено определение текущей даты в запросах в 1С 8.3, а именно: сделан обзор на общее понятие и организацию даты в запросах 1С 8.3, осуществлена проверка на пустую дату в запросе с примером, определено, как прописывать любую произвольную дату в языке запросов и рассмотрен пример вызова текущей даты в запросе 1С.
При помощи запросов в системе 1С 8.3 можно осуществить и провести почти любое действие или процедуру для получения информационных данных внутри платформы 1С. Тип «Дата» является одним из самых распространённых информационных типов.
Стоит отметить, что в системе 1С можно выполнять сортировку по датам и времени, при этом сортировка должна быть кратна секунде.
Ещё стоит знать и отличать, что временной момент в какой-либо документации не одно и то же с датой. Например, если есть документация с различием в секунду, то по дате сортировка по дате и времени не будет выполняться корректно, в этом случае как раз необходимо воспользоваться временным моментом.
Отображение даты происходит согласно настройкам в операционной системе в компьютере.
2. Пустая дата в запросах 1С
Для начала, сделаем проверку значения по пустой дате в запросе. Как пример, пусть существуют в справочнике некоторые счета от банка, и нужно сделать выборку с теми счетами, которые не были закрыты. Поможет в определении того, что счёт не был закрыт, значение пустой даты, которое присвоено полю «ДатаЗакрытия». В этом случае запрос с проверкой на пустую дату будет выглядеть следующим образом:
Рис. 1 Проверка на пустую дату в запросе в 1С
3. Любая дата в запросе в 1С 8.3
Рассмотрим следующую функцию, в которой можно задавать любую дату для запроса в 1С 8.3 – функцию «ДатаВремя». Допустим, необходимо отобрать всю возможную документацию с наименованием «Счёт на оплату покупателю» за февраль. В таком случае текст запроса будет выглядеть так:
Рис. 2 Пример использования функции ДатаВремя
4. Текущая дата в 1С
Рассмотрим случай, когда необходимо получить текущую дату внутри запроса. Аналогов метода «ТекущаяДата()» для запросов в системе 1С нет, так что необходимо будет передать значение текущей даты в 1С через параметр в запрос, как показано в примере на скриншоте далее:
Рис. 3 Передать значение текущей даты в 1С через параметр в запрос
5. Примеры различных действий с датой в запросе 1С 8.3
Далее будут представлены различные иные манипуляции с датой в системе 1С:
Рассмотрим, как будет выглядеть полученное посредствам запроса определение начала нынешнего месяца:
Рис. 4 Выбор начала месяца с датой в запросе 1С 8.3
Конец года, можно определить при помощи следующей строчки в запросе:
Рис. 5 Конец года – дата в запросе 1С 8.3
Далее представлено получение полудня в текущей дате внутри запроса:
Рис. 6 Полдень текущей даты в запросе в 1С
Также бывают ситуации, когда нужно получить только дату без учёта точного времени. В этом случае поможет следующая строка для запроса:
Рис. 7 Только дата в запросе 1С 8.3
Иногда необходимо, чтобы дата служила константой внутри запроса, тогда воспользуемся следующей операцией:
Рис. 8 Дата в запросе 1С 8.3 как константа
Последнее действие – это задание максимально точной даты, то есть точность до секунды, это действие может реализовать следующий запрос:
Пустая дата в запросе в 1С
Значение пустой даты — когда дата не выбрана, можно получить в запросе через функцию ДАТАВРЕМЯ() или передать в качестве параметра запроса.
Как получить пустую дату?
Запрос = Новый Запрос;
Запрос.Текст line-height: 1.5;»> ДАТАВРЕМЯ(0001, 01, 01, 0, 0, 0)
В данном запросе в выборку попадут 4 значения пустой даты.
Вот интересный вариант, которым в запросе можно получить пустую из произвольной даты (в примере дату мы инициализировали произвольной для универсальности запроса)
ВЫБРАТЬ ДобавитьКДате(ДатаВремя(2016,10,1),ГОД,-3000) КАК ПустаяДата
В данном случае, вычитая 3000 лет, мы привели значение к пустой дате (в примере достаточно отнять 2017 лет, чтобы получить).
На практике не рекомендуется использовать такие неявные преобразования, так как в какой-нибудь платформе или операционной системе это может отработать неверно.
Спасибо за внимание!
Клиент получает ту рекламу, которую он заслуживает!
— Дэвид Огилви
Как в запросе указать пустую дату? — ДАТАВРЕМЯ()
ДАТАВРЕМЯ ( <Целое число>, <Целое число>, <Целое число>[, <Целое число>, <Целое число>, <Целое число>] )
Значения типа дата задаются с помощью ключевого слова ДАТАВРЕМЯ, после которого в скобках последовательно указываются год, месяц, день, час, минута, секунда. Последние три указывать необязательно.
Максимальная дата которую возможно задать при помощи литерала ДАТАВРЕМЯ – 31.12.3999 23:59:59.