Почему поле «Поле1» пустое в запросе 1С?

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

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

        ВЫБРАТЬ
        ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период КАК Период,
        ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство КАК ОсновноеСредство,
        СУММА(ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ПервоначальнаяСтоимость) КАК ПервоначальнаяСтоимость,
        ВЫБОР
        КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата1_1 И &Дата1_2
        ТОГДА «2022-2024»
        КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата2_1 И &Дата2_2
        ТОГДА «2019-2021»
        КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата3_1 И &Дата3_2
        ТОГДА «2014-2018»
        КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата3_1 И &Дата3_2
        ТОГДА «2004-2013»
        КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период <= &ДатаМин
        ТОГДА «2004-2013»
        КОНЕЦ КАК Поле1,
        КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство) КАК ОсновноеСредство1
        ИЗ
        РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(&Дата, ) КАК ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних

        СГРУППИРОВАТЬ ПО
        ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период,
        ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство,
        ВЫБОР
        КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата1_1 И &Дата1_2
        ТОГДА «2022-2024»
        КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата2_1 И &Дата2_2
        ТОГДА «2019-2021»
        КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата3_1 И &Дата3_2
        ТОГДА «2014-2018»
        КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата4_1 И &Дата4_2
        ТОГДА «2004-2013»
        КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата4_1 И &Дата4_2
        ТОГДА «2004-2013»
        КОНЕЦ

        УПОРЯДОЧИТЬ ПО
        Поле1,
        ОсновноеСредство1
        почему Поле1 пустое

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

          Ошибка в запросе — в условии ВЫБОР для «Поле1» дважды используется одно и то же условие с &Дата3_1 и &Дата3_2, а для диапазона «2004-2013» используется условие с &Дата3_1 и &Дата3_2, вместо &Дата4_1 и &Дата4_2.

          Из-за этого для периода «2004-2013» условие не срабатывает, и в итоге для этих записей поле «Поле1» остаётся пустым.

          Правильно должно быть так:

          |ВЫБОР
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата1_1 И &Дата1_2 ТОГДА «2022-2024»
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата2_1 И &Дата2_2 ТОГДА «2019-2021»
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата3_1 И &Дата3_2 ТОГДА «2014-2018»
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата4_1 И &Дата4_2 ТОГДА «2004-2013»
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период < &Дата4_1 ТОГДА «До 2003»
          | ИНАЧЕ «»
          |КОНЕЦ КАК Поле1

          То же самое в части GROUP BY.

          Также обратите внимание, что в вашем варианте:

          — Последнее условие ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период <= &ДатаМин ТОГДА "2004-2013" — не совсем корректно, лучше использовать < &Дата4_1 для периода до 2004 года.

          — В условии ВЫБОР для группировки и выборки должны быть одинаковые условия.

          Исправленный пример:

          |ВЫБРАТЬ
          | ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период КАК Период,
          | ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство КАК ОсновноеСредство,
          | СУММА(ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ПервоначальнаяСтоимость) КАК ПервоначальнаяСтоимость,
          | ВЫБОР
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата1_1 И &Дата1_2 ТОГДА «2022-2024»
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата2_1 И &Дата2_2 ТОГДА «2019-2021»
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата3_1 И &Дата3_2 ТОГДА «2014-2018»
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата4_1 И &Дата4_2 ТОГДА «2004-2013»
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период < &Дата4_1 ТОГДА «До 2003»
          | ИНАЧЕ «»
          | КОНЕЦ КАК Поле1,
          | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство) КАК ОсновноеСредство1
          |ИЗ
          | РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(&Дата, ) КАК ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних
          |СГРУППИРОВАТЬ ПО
          | ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период,
          | ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство,
          | ВЫБОР
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата1_1 И &Дата1_2 ТОГДА «2022-2024»
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата2_1 И &Дата2_2 ТОГДА «2019-2021»
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата3_1 И &Дата3_2 ТОГДА «2014-2018»
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период МЕЖДУ &Дата4_1 И &Дата4_2 ТОГДА «2004-2013»
          | КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.Период < &Дата4_1 ТОГДА «До 2003»
          | ИНАЧЕ «»
          | КОНЕЦ
          |УПОРЯДОЧИТЬ ПО
          | Поле1,
          | ОсновноеСредство1

          Проверьте параметры:

          |Запрос.УстановитьПараметр(«Дата1_1», Дата(2022,1,1));
          |Запрос.УстановитьПараметр(«Дата1_2», Дата(2024,12,31));
          |Запрос.УстановитьПараметр(«Дата2_1», Дата(2019,1,1));
          |Запрос.УстановитьПараметр(«Дата2_2», Дата(2021,12,31));
          |Запрос.УстановитьПараметр(«Дата3_1», Дата(2014,1,1));
          |Запрос.УстановитьПараметр(«Дата3_2», Дата(2018,12,31));
          |Запрос.УстановитьПараметр(«Дата4_1», Дата(2004,1,1));
          |Запрос.УстановитьПараметр(«Дата4_2», Дата(2013,12,31));
          |Запрос.УстановитьПараметр(«Дата», ТекущаяДата());

          Так поле «Поле1» будет заполняться корректно.

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