Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут!

Пустая ссылка, дата или строка в запросе 1С 8.3

Рассмотрим основные методы использования пустых значений в условиях запросов 1С 8.3.

Пустая ссылка в отборе запроса 1СПроверка на NULL

выполняется с помощью конструкции ЕСТЬ NULL, например:

ВЫБРАТЬ
ВнутренниеЗаказыОстатки.Заказчик,
ВнутренниеЗаказыОстатки.КоличествоОстаток
ИЗ
РегистрНакопления.ВнутренниеЗаказы.Остатки КАК ВнутренниеЗаказыОстатки
ГДЕ
ВнутренниеЗаказыОстатки.КоличествоОстаток ЕСТЬ NULL

Получите 267 видеоуроков по 1С бесплатно:

Пустая дата в запросе 1С

Пустая дата в запросе устанавливается конструкцией ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0), пример:

ВЫБРАТЬ
СчетНаОплатуПокупателю.Ссылка,
СчетНаОплатуПокупателю.ДатаОтгрузки
ИЗ
Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
ГДЕ
СчетНаОплатуПокупателю.ДатаОтгрузки = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

Пустая ссылка (значение) в запросе 1С 8.2 и 8.3

Для ссылочных значений (справочники, документы, перечисления, планы счетов и т.д), для проверки необходимо использовать конструкцию «ЗНАЧЕНИЕ(Справочник.ИмяСправочника.ПустаяСсылка)». Например:

ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)

Проверка на пустую строку в запросе 1С

В условиях, для нахождения пустой строки необходимо использовать пустое значение строки — «», например:

ВЫБРАТЬ
Банки.Ссылка
ИЗ
Справочник.Банки КАК Банки
ГДЕ
Банки.Код = «»

Будет полезно — рубрикатор статей по языку запросов 1С.

P.S. Наша компания предоставляет услуги по настройке, доработке и комплексному внедрению 1С. Закажите бесплатный расчет стоимости вашей задачи на странице Услуги 1С или по телефону +7 (499) 350 29 00.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 34 на “Пустая ссылка, дата или строка в запросе 1С 8.3
  1. Запрос1.Текст = «ВЫБРАТЬ
    |РемонтныйЛист.Номер,
    |РемонтныйЛистМатериалыЗамена.ДатаРемонта,
    |РемонтныйЛист.Проведен,
    |РемонтныйЛист.Водитель1,
    |РемонтныйЛист.Водитель2,
    |РемонтныйЛист.Водитель3,
    |РемонтныйЛистМатериалыЗамена.КолвоЧасов
    |ИЗ
    |Документ.РемонтныйЛист.МатериалыЗамена КАК РемонтныйЛистМатериалыЗамена
    |ЛЕВОЕ СОЕДИНЕНИЕ Документ.РемонтныйЛист КАК РемонтныйЛист
    |ПО РемонтныйЛистМатериалыЗамена.Ссылка = РемонтныйЛист.Ссылка
    |ГДЕ
    //|РемонтныйЛистМатериалыЗамена.ДатаРемонта >= Значение(«ДатаНач») И РемонтныйЛистМатериалыЗамена.ДатаРемонта <= Значение("ДатаКон")
    |РемонтныйЛист.Проведен = Истина
    //|РемонтныйЛист.Водитель3 НЕ ЗНАЧЕНИЕ (РемонтныйЛист.Водитель3.ПустаяСсылка)
    //|РемонтныйЛист.Водитель2 НЕ ЗНАЧЕНИЕ (РемонтныйЛист.Водитель2.ПустаяСсылка)
    //|РемонтныйЛист.Водитель1 НЕ ЗНАЧЕНИЕ (РемонтныйЛист.Водитель1.ПустаяСсылка)";

    Пишу запрос мне необходимо выбрать даты, ремонты и ФИО водителей при том что дата входит в указанный период, водитель не пустое значение и документ проведен. там где закомментировано там ошибки:( помогите пожалуйста

    Ответить

    • Здравствуйте!

      Мария, откуда Вы взяли такой синтаксис?

      Давайте посмотрим подробней устанавливать параметры и пустые значения:

      НЕ ПРАВИЛЬНО
      //|РемонтныйЛистМатериалыЗамена.ДатаРемонта >= Значение(“ДатаНач”)
      ПРАВИЛЬНО
      //|РемонтныйЛистМатериалыЗамена.ДатаРемонта >= &ДатаНач

      НЕ ПРАВИЛЬНО
      //|РемонтныйЛист.Водитель3 НЕ ЗНАЧЕНИЕ (РемонтныйЛист.Водитель3.ПустаяСсылка)
      ПРАВИЛЬНО
      //|РемонтныйЛист.Водитель3 <> Значение(Справочник.Водители.ПустаяСсылка)

      Где «Водители» имя справочника, тип которого имеет реквизит «Водитель3» (возможно сотрудники или физические лица)

      Ответить

  2. Синтаксис не правильный так как я тока учусь:) спасибо большое. но водитель это реквизит не справочника а документа. имеет ли это значение?
    а еще подскажите пожалуйста как вот на основании этого же запроса заполнить ячейки в отчете на пересечении водителя и даты необходимо поставить колво часов сколько он был в ремонте

    Ответить

    • РемонтныйЛист.Водитель3 <> Значение(Справочник.Водители.ПустаяСсылка)

      РемонтныйЛист.Водитель3 — Это реквизит
      Значение(Справочник.Водители.ПустаяСсылка) — это значение, которое вы передаете что бы наложить отбор, а Справочник.Водители — это ТИП реквизита РемонтныйЛист.Водитель3.

      В конечном счете суть условия какая? Отобрать только те позиции, для которых выражение будет равняться ИСТИНА.

      Ответить

  3. С этим я уже разобралась. вы правы были что это реквизит справочника Физические лица.у меня теперь проблема в том что он ругается на РемонтныйЛист.Проведен = Истина

    Ответить

  4. {Форма.ФормаОтчета.Форма(23)}: Ошибка при вызове метода контекста (Выполнить)
    Результат1 = Запрос1.Выполнить();
    по причине:
    {(15, 1)}: Синтаксическая ошибка «Документ.РемонтныйЛист.Проведен»
    <>Документ.РемонтныйЛист.Проведен = Истина
    Вот ошибка какая

    Ответить

  5. Здесь мы еще до условий то не дошли вроде?!:) это ошибка в запросе ведь или там тоже и надо везде?

    Ответить

    • То, что идет после слова «ГДЕ» в языке запросов называется условием)))

      Разные условия соединяются с помощью «И» или «ИЛИ» ))) В вашем случае скорее всего «И» 🙂

      Ответить

  6. Не задано значение параметра «ДатаНач»
    РемонтныйЛистМатериалыЗамена.ДатаРемонта >= <>&ДатаНач И Документ.РемонтныйЛистМатериалыЗамена.ДатаРемонта <= &ДатаКон И
    Вот, когда я на форме отчета ввожу ДатаНач и ДатаКон

    Ответить

    • Вот) теперь передайте параметр в запрос.
      Проще всего это сделать с помощью метода Запрос.УстановитьПараметр(«ИмяПараметра», ЗначениеПараметра)

      Ответить

  7. С «И» тоже правильно подсказали:) спасибо большое:)

    Ответить

  8. Значение не является значением объектного типа (Получить)
    КолвоЧасов = Выборка1.КолвоЧасов.Получить();
    Получить не могу:(

    Ответить

  9. ПолучитьОбъект тоже не получается

    Ответить

    • Что то вы плохо думаете….)))
      Зачем получать объект из числа?)))))))

      Достаточно:
      КолвоЧасов = Выборка1.КолвоЧасов;

      Ответить

  10. Правильно будет после запроса сформировать таблицу датРемонта, но она ведь не одна а много? надо цикл вставлять какой то?

    Ответить

  11. Метод объекта не обнаружен (Вывести)
    ТабДок.Вывести(Макет.ПолучитьОбласть(«Шапка|ПервыйСтолбец»));

    Ответить

  12. Спасибо вам и так за помощь. я как бы суть понимаю но плохо знаю синтаксис его все равно и по видео курсам не выучишь пока сама не попробуешь:( вот и учусь по маленьку. да еще и учить то особо некому:(

    Ответить

    • Тут только самостоятельно, пока сами не поймете — любые подсказки будут мимо. 🙂 Я по началу каждую ночь сидел, учился) Советую курсы гилёва/насипова, там 170 часов обучения, всё поймете

      Ответить

  13. а ссылку можно если не затруднит?

    Ответить

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

    Ответить

  15. Сейчас сделаю:) спасибо

    Ответить

  16. Проверяйте тип ТабДок, читайте в синтаксис помощнике, есть ли у него такой метод

    Ответить

  17. ну я даже из сегодняшних ваших подсказок уже уяснила кое-что:)

    Ответить

  18. Здравствуйте!
    Простите за глупый вопрос. Как написать запрос, чтобы, если значение пусто(значения в поле нет) подставлял 0?
    Делаю в запросе вот так
    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК Остаток,
    не работает.

    Ответить

    • Как вы поняли что не работает? Вы смотрите данные в отчете?

      Ответить

  19. извините за беспокойство)
    разобралась. спасибо)

    Ответить

  20. 1. Сравнение для строковых реквизитов неограниченной длины приведет к ошибке
    ПоступлениеТоваровУслуг.Комментарий = “”
    2. не указано как проверять на заполненность значения реквизитов составного типа

    Ответить

    • Возьмите начало строки неограниченной длины:
      ВЫРАЗИТЬ(ПоступлениеТоваровУслуг.Комментарий КАК СТРОКА(1)) = “”

      Ответить

  21. Помогите!
    нужно создать документ, в котором будет много-много полей для автоматического заполнения и выводилась печатная форма с кнопкой печать

    Ответить

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

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


*