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

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

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

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

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

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

    База знаний 1С