Как сгруппировать данные по каждому году в 1С вместо диапазонов дат?

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

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

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

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

          Чтобы сделать группировку и вывод данных по каждому году отдельно, а не по диапазонам, нужно заменить условие ВЫБОР на выделение года из даты и группировать именно по году.

          В 1С для получения года из даты используется функция ГОД().

          Пример исправленного запроса:

          |ВЫБРАТЬ
          | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПереоценкаОСОС.ОсновноеСредство) КАК ОсновноеСредство,
          | СУММА(ПереоценкаОСОС.ВосстановительнаяСтоимость) КАК ВосстановительнаяСтоимость,
          | СУММА(ПереоценкаОСОС.СуммаАмортизации) КАК СуммаАмортизации,
          | МАКСИМУМ(ПереоценкаОСОС.ДатаВвода) КАК ДатаВвода,
          | ГОД(ПереоценкаОСОС.ДатаВвода) КАК Год
          |ИЗ
          | Документ.ПереоценкаОС.ОС КАК ПереоценкаОСОС
          | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПереоценкаОС КАК ПереоценкаОС
          | ПО ПереоценкаОСОС.Ссылка = ПереоценкаОС.Ссылка
          |ГДЕ
          | ПереоценкаОС.Ссылка = &Ссылка
          |СГРУППИРОВАТЬ ПО
          | ГОД(ПереоценкаОСОС.ДатаВвода)
          |УПОРЯДОЧИТЬ ПО
          | ГОД(ПереоценкаОСОС.ДатаВвода)

          Если нужно, чтобы в выборке был именно текстовый год, можно сделать так:

          |ВЫБРАТЬ
          | …,
          | ФОРМАТ(ГОД(ПереоценкаОСОС.ДатаВвода), «ЧГ») КАК ГодТекст
          |…

          Таким образом, вы получите данные по каждому году отдельно, без объединения в диапазоны.

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