База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как объединить части кода в один запрос для отчёта в СКД?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 часа, 5 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
25 апреля 2026 в 13:44 #36822
Как соединить эти части кода в единый запрос для отчета на СКД ВЫБРАТЬ
ВЫБОР
КОГДА ХозрасчетныйОбороты.Период < &ДатаНачала
ТОГДА &ДатаНачала
ИНАЧЕ ХозрасчетныйОбороты.Период
КОНЕЦ КАК Период,
ВЫБОР
КОГДА ХозрасчетныйОбороты.Период < &ДатаНачала
ТОГДА NULL
ИНАЧЕ ХозрасчетныйОбороты.Регистратор
КОНЕЦ КАК Регистратор,
ЕСТЬNULL(ХозрасчетныйОбороты.Регистратор.Договор, «Без договора») КАК Договор,
ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
ХозрасчетныйОбороты.Субконто2 КАК Субконто2,
ХозрасчетныйОбороты.Организация КАК Организация,
ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт,
ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт,
ХозрасчетныйОбороты.КоличествоОборотДт КАК КоличествоОборотДт,
ХозрасчетныйОбороты.КоличествоОборотКт КАК КоличествоОборотКт
ПОМЕСТИТЬ ВТ_Обороты
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(, &ДатаОкончания, Регистратор, Счет В ИЕРАРХИИ (&Счет), , {(Организация = &Организация), (Подразделение = &Подразделение), (Субконто1 = &Субконто1), (Субконто2 = &Субконто2)}, , ) КАК ХозрасчетныйОборотыИНДЕКСИРОВАТЬ ПО
Период,
Субконто1,
Субконто2,
Организация -
25 апреля 2026 в 13:44 #36823
Вот как можно объединить этот код в единый запрос для отчёта на СКД, используя временную таблицу для хранения оборотов с нужной логикой по периоду и регистратору:
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ХозрасчетныйОбороты.Период < &ДатаНачала
| ТОГДА &ДатаНачала
| ИНАЧЕ ХозрасчетныйОбороты.Период
| КОНЕЦ КАК Период,
| ВЫБОР
| КОГДА ХозрасчетныйОбороты.Период < &ДатаНачала
| ТОГДА NULL
| ИНАЧЕ ХозрасчетныйОбороты.Регистратор
| КОНЕЦ КАК Регистратор,
| ЕСТЬNULL(ХозрасчетныйОбороты.Регистратор.Договор, «Без договора») КАК Договор,
| ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
| ХозрасчетныйОбороты.Субконто2 КАК Субконто2,
| ХозрасчетныйОбороты.Организация КАК Организация,
| ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт,
| ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт,
| ХозрасчетныйОбороты.КоличествоОборотДт КАК КоличествоОборотДт,
| ХозрасчетныйОбороты.КоличествоОборотКт КАК КоличествоОборотКт
|ПОМЕСТИТЬ ВТ_Обороты
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(
| ,
| &ДатаОкончания,
| Регистратор,
| Счет В ИЕРАРХИИ (&Счет),
| ,
| {(Организация = &Организация), (Подразделение = &Подразделение), (Субконто1 = &Субконто1), (Субконто2 = &Субконто2)},
| ,
| ) КАК ХозрасчетныйОбороты
|
|ИНДЕКСИРОВАТЬ ПО
| Период,
| Субконто1,
| Субконто2,
| Организация;
|
|////////////////////////////////////////////////////////////////////////////////
|
|ВЫБРАТЬ
| *
|ИЗ
| ВТ_Обороты
|ГДЕ
| (Период >= &ДатаНачала)
|УПОРЯДОЧИТЬ ПО
| Период,
| Регистратор,
| Договор,
| Субконто1,
| Субконто2,
| ОрганизацияОбъяснение:
— Сначала создаём временную таблицу ВТ_Обороты с нужными данными и корректируем период и регистратор в зависимости от даты начала.
— Затем из ВТ_Обороты выбираем записи, где период >= &ДатаНачала (то есть только нужный период).
— Индексация и упорядочивание для оптимизации и удобства.Такой подход позволяет использовать данные с корректировкой по периоду и регистратору в одном запросе для отчёта на СКД.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.