Как объединить части кода в один запрос для отчёта в СКД?

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

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

        Как соединить эти части кода в единый запрос для отчета на СКД ВЫБРАТЬ
        ВЫБОР
        КОГДА ХозрасчетныйОбороты.Период < &ДатаНачала
        ТОГДА &ДатаНачала
        ИНАЧЕ ХозрасчетныйОбороты.Период
        КОНЕЦ КАК Период,
        ВЫБОР
        КОГДА ХозрасчетныйОбороты.Период < &ДатаНачала
        ТОГДА NULL
        ИНАЧЕ ХозрасчетныйОбороты.Регистратор
        КОНЕЦ КАК Регистратор,
        ЕСТЬNULL(ХозрасчетныйОбороты.Регистратор.Договор, «Без договора») КАК Договор,
        ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
        ХозрасчетныйОбороты.Субконто2 КАК Субконто2,
        ХозрасчетныйОбороты.Организация КАК Организация,
        ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт,
        ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт,
        ХозрасчетныйОбороты.КоличествоОборотДт КАК КоличествоОборотДт,
        ХозрасчетныйОбороты.КоличествоОборотКт КАК КоличествоОборотКт
        ПОМЕСТИТЬ ВТ_Обороты
        ИЗ
        РегистрБухгалтерии.Хозрасчетный.Обороты(, &ДатаОкончания, Регистратор, Счет В ИЕРАРХИИ (&Счет), , {(Организация = &Организация), (Подразделение = &Подразделение), (Субконто1 = &Субконто1), (Субконто2 = &Субконто2)}, , ) КАК ХозрасчетныйОбороты

        ИНДЕКСИРОВАТЬ ПО
        Период,
        Субконто1,
        Субконто2,
        Организация

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

          Вот как можно объединить этот код в единый запрос для отчёта на СКД, используя временную таблицу для хранения оборотов с нужной логикой по периоду и регистратору:

          |ВЫБРАТЬ
          | ВЫБОР
          | КОГДА ХозрасчетныйОбороты.Период < &ДатаНачала
          | ТОГДА &ДатаНачала
          | ИНАЧЕ ХозрасчетныйОбороты.Период
          | КОНЕЦ КАК Период,
          | ВЫБОР
          | КОГДА ХозрасчетныйОбороты.Период < &ДатаНачала
          | ТОГДА NULL
          | ИНАЧЕ ХозрасчетныйОбороты.Регистратор
          | КОНЕЦ КАК Регистратор,
          | ЕСТЬNULL(ХозрасчетныйОбороты.Регистратор.Договор, «Без договора») КАК Договор,
          | ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
          | ХозрасчетныйОбороты.Субконто2 КАК Субконто2,
          | ХозрасчетныйОбороты.Организация КАК Организация,
          | ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт,
          | ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт,
          | ХозрасчетныйОбороты.КоличествоОборотДт КАК КоличествоОборотДт,
          | ХозрасчетныйОбороты.КоличествоОборотКт КАК КоличествоОборотКт
          |ПОМЕСТИТЬ ВТ_Обороты
          |ИЗ
          | РегистрБухгалтерии.Хозрасчетный.Обороты(
          | ,
          | &ДатаОкончания,
          | Регистратор,
          | Счет В ИЕРАРХИИ (&Счет),
          | ,
          | {(Организация = &Организация), (Подразделение = &Подразделение), (Субконто1 = &Субконто1), (Субконто2 = &Субконто2)},
          | ,
          | ) КАК ХозрасчетныйОбороты
          |
          |ИНДЕКСИРОВАТЬ ПО
          | Период,
          | Субконто1,
          | Субконто2,
          | Организация;
          |
          |////////////////////////////////////////////////////////////////////////////////
          |
          |ВЫБРАТЬ
          | *
          |ИЗ
          | ВТ_Обороты
          |ГДЕ
          | (Период >= &ДатаНачала)
          |УПОРЯДОЧИТЬ ПО
          | Период,
          | Регистратор,
          | Договор,
          | Субконто1,
          | Субконто2,
          | Организация

          Объяснение:
          — Сначала создаём временную таблицу ВТ_Обороты с нужными данными и корректируем период и регистратор в зависимости от даты начала.
          — Затем из ВТ_Обороты выбираем записи, где период >= &ДатаНачала (то есть только нужный период).
          — Индексация и упорядочивание для оптимизации и удобства.

          Такой подход позволяет использовать данные с корректировкой по периоду и регистратору в одном запросе для отчёта на СКД.

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