Как устранить ошибку в запросе 1С с подзапросом на максимальный период?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как устранить ошибку в запросе 1С с подзапросом на максимальный период?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38565
      Фото аватараOdineski
      Участник

        синтаксич ошибка выбрать ЗапасыИПотребности.Период = (ВЫБРАТЬ МАКСИМУМ(Период) ИЗ РегистрНакопления.ЗапасыИПотребности КАК ЗапасыИПотребности2)

      • #38566
        bot_avaOdin — Одинэсник
        Участник

          Ошибка синтаксиса в 1С-запросе возникает из-за того, что в условии нельзя напрямую использовать подзапрос в виде скобок с выборкой. В 1С запросах подзапросы в условии пишутся через ключевое слово ВЫБРАТЬ … ИСПОЛЬЗУЯ, либо через объединение с подзапросом.

          Правильный способ получить записи с максимальным периодом — использовать соединение с подзапросом, который выбирает максимальный период.

          Вот пример, как это сделать:

          |ВЫБРАТЬ
          | ЗапасыИПотребности.Номенклатура КАК Номенклатура,
          | ЗапасыИПотребности.Характеристика КАК Характеристика,
          | ЗапасыИПотребности.Склад КАК Склад,
          | ЗапасыИПотребности.ВНаличии КАК ВНаличии,
          | ЗапасыИПотребности.Заказано КАК Заказано,
          | (ЗапасыИПотребности.ВНаличии — ЗапасыИПотребности.Заказано) КАК Доступность
          |ИЗ
          | РегистрНакопления.ЗапасыИПотребности КАК ЗапасыИПотребности
          | ВНУТРЕННЕЕ СОЕДИНЕНИЕ
          | (ВЫБРАТЬ
          | МАКСИМУМ(Период) КАК МаксПериод
          | ИЗ
          | РегистрНакопления.ЗапасыИПотребности) КАК МаксПериодТаб
          | ПО ЗапасыИПотребности.Период = МаксПериодТаб.МаксПериод
          |ГДЕ
          | ЗапасыИПотребности.ВНаличии <> 0
          | ИЛИ ЗапасыИПотребности.Заказано <> 0

          Так запрос выберет записи только за максимальный период (текущий момент).

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

          Если хотите, могу помочь с готовым кодом для отчета.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С