Имя: Пароль:
1C
 
Вывести несколько дат в одну строку
0 poofik
 
10.10.25
15:59
Привет помогите пожалуйста решить как сделать для создания отчета.
Делаю отчет через макет. В зависимости от количества назначенных тем, менялось число дат.

Запрос:
ВЫБРАТЬ
    ВычиткиПоГруппам.ГруппаСтудентов КАК ГруппаСтудентов,
    ВычиткиПоГруппам.ТемаВычитки КАК ТемаВычитки,
    ВычиткиПоГруппам.МесяцВычитки КАК МесяцВычитки,
    ВычиткиПоГруппам.КоличествоПар КАК КоличествоПар,
    ВычиткиПоГруппам.СобытиеЗанятости КАК СобытиеЗанятости,
    ВычиткиПоГруппам.Регистратор КАК Регистратор
ПОМЕСТИТЬ ВТ_План
ИЗ
    РегистрСведений.ВычиткиПоГруппам КАК ВычиткиПоГруппам

СГРУППИРОВАТЬ ПО
    ВычиткиПоГруппам.ГруппаСтудентов,
    ВычиткиПоГруппам.КоличествоПар,
    ВычиткиПоГруппам.ТемаВычитки,
    ВычиткиПоГруппам.МесяцВычитки,
    ВычиткиПоГруппам.СобытиеЗанятости,
    ВычиткиПоГруппам.Регистратор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВычиткаПоГруппамОбороты.ГруппаОбучения КАК ГруппаОбучения,
    ВычиткаПоГруппамОбороты.ТемаВычитки КАК ТемаВычитки,
    ВычиткаПоГруппамОбороты.СобытиеЗанятости КАК СобытиеЗанятости,
    СУММА(ВычиткаПоГруппамОбороты.КоличествоПарОборот) КАК КоличествоПарОборот
ПОМЕСТИТЬ ВТ_Факт
ИЗ
    ВТ_План КАК ВТ_План,
    РегистрНакопления.ВычиткаПоГруппам.Обороты(&МесяцВычитки, &КонецПериода, Регистратор, ) КАК ВычиткаПоГруппамОбороты
ГДЕ
    ВычиткаПоГруппамОбороты.ГруппаОбучения = ВТ_План.ГруппаСтудентов
    И ВТ_План.ТемаВычитки = ВычиткаПоГруппамОбороты.ТемаВычитки
    И ВычиткаПоГруппамОбороты.СобытиеЗанятости = ВТ_План.СобытиеЗанятости

СГРУППИРОВАТЬ ПО
    ВычиткаПоГруппамОбороты.ГруппаОбучения,
    ВычиткаПоГруппамОбороты.ТемаВычитки,
    ВычиткаПоГруппамОбороты.СобытиеЗанятости
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_План.ГруппаСтудентов КАК ГруппаСтудентов,
    ВТ_План.ТемаВычитки КАК ТемаВычитки,
    СУММА(ЕСТЬNULL(ВТ_План.КоличествоПар, 0)) КАК КоличествоПарПлан,
    СУММА(ЕСТЬNULL(ВТ_Факт.КоличествоПарОборот, 0)) КАК КоличествоПарФакт,
    ВТ_Факт.СобытиеЗанятости КАК СобытиеЗанятости
ПОМЕСТИТЬ ВТ_ПланФакт
ИЗ
    ВТ_План КАК ВТ_План,
    ВТ_Факт КАК ВТ_Факт
ГДЕ
    ВТ_План.ГруппаСтудентов = ВТ_Факт.ГруппаОбучения
    И ВТ_Факт.ТемаВычитки = ВТ_План.ТемаВычитки
    И ВТ_Факт.СобытиеЗанятости = ВТ_План.СобытиеЗанятости

СГРУППИРОВАТЬ ПО
    ВТ_План.ГруппаСтудентов,
    ВТ_План.ТемаВычитки,
    ВТ_Факт.СобытиеЗанятости
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_План.ГруппаСтудентов КАК ГруппаСтудентов,
    ВТ_План.ТемаВычитки КАК ТемаВычитки,
    ВТ_План.КоличествоПар КАК КоличествоПарПлан,
    0 КАК КоличествоПарФакт
ПОМЕСТИТЬ ВТ_План0Факт
ИЗ
    ВТ_План КАК ВТ_План
ГДЕ
    НЕ (ВТ_План.ТемаВычитки, ВТ_План.ГруппаСтудентов) В
                (ВЫБРАТЬ
                    ВТ_План.ТемаВычитки КАК ТемаВычитки,
                    ВТ_План.ГруппаСтудентов КАК ГруппаСтудентов
                ИЗ
                    ВТ_План КАК ВТ_План,
                    ВТ_Факт КАК ВТ_Факт
                ГДЕ
                    ВТ_План.ГруппаСтудентов = ВТ_Факт.ГруппаОбучения
                    И ВТ_Факт.ТемаВычитки = ВТ_План.ТемаВычитки
                    И ВТ_Факт.СобытиеЗанятости = ВТ_План.СобытиеЗанятости)

СГРУППИРОВАТЬ ПО
    ВТ_План.ГруппаСтудентов,
    ВТ_План.ТемаВычитки,
    ВТ_План.КоличествоПар
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ПланФакт.ГруппаСтудентов КАК ГруппаСтудентов,
    ВТ_ПланФакт.ТемаВычитки КАК ТемаВычитки,
    ВТ_ПланФакт.КоличествоПарПлан КАК КоличествоПарПлан,
    ВТ_ПланФакт.КоличествоПарФакт КАК КоличествоПарФакт,
    ВЫРАЗИТЬ(ВТ_ПланФакт.КоличествоПарФакт / ВТ_ПланФакт.КоличествоПарПлан * 100 КАК ЧИСЛО(15, 2)) КАК Освоено,
    ВТ_ПланФакт.СобытиеЗанятости КАК СобытиеЗанятости
ПОМЕСТИТЬ ВТ_Общее
ИЗ
    ВТ_ПланФакт КАК ВТ_ПланФакт

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ_План0Факт.ГруппаСтудентов,
    ВТ_План0Факт.ТемаВычитки,
    ВТ_План0Факт.КоличествоПарПлан,
    ВТ_План0Факт.КоличествоПарФакт,
    ВЫРАЗИТЬ(ВТ_План0Факт.КоличествоПарФакт / ВТ_План0Факт.КоличествоПарПлан * 100 КАК ЧИСЛО(15, 2)),
    NULL
ИЗ
    ВТ_План0Факт КАК ВТ_План0Факт
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Общее.ГруппаСтудентов КАК ГруппаСтудентов,
    ВЫРАЗИТЬ(СУММА(ВТ_Общее.Освоено) / КОЛИЧЕСТВО(ВТ_Общее.Освоено) КАК ЧИСЛО(15, 2)) КАК ОсвоеноВсего
ПОМЕСТИТЬ ВТ_ОсвоеноВсего
ИЗ
    ВТ_Общее КАК ВТ_Общее

СГРУППИРОВАТЬ ПО
    ВТ_Общее.ГруппаСтудентов
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВЫРАЗИТЬ(СУММА(ВТ_ОсвоеноВсего.ОсвоеноВсего) / КОЛИЧЕСТВО(ВТ_ОсвоеноВсего.ОсвоеноВсего) КАК ЧИСЛО(15, 2)) КАК ОбщийПроцент
ПОМЕСТИТЬ ВТ_ОбщийПроцент
ИЗ
    ВТ_ОсвоеноВсего КАК ВТ_ОсвоеноВсего
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Общее.ТемаВычитки КАК Тема,
    ВТ_Общее.ГруппаСтудентов КАК ГруппаСтудентов,
    ВТ_Общее.Освоено КАК Освоено,
    ВТ_Общее.КоличествоПарПлан КАК Всего,
    ВТ_Общее.КоличествоПарФакт КАК Вычитано,
    "" КАК Заголовок,
    Посещаемость.Дата КАК Дата,
    ВТ_Общее.СобытиеЗанятости КАК СобытиеЗанятости
ПОМЕСТИТЬ ВТ_Посещаемость
ИЗ
    ВТ_Общее КАК ВТ_Общее
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Посещаемость КАК Посещаемость
        ПО (ВТ_Общее.ТемаВычитки = Посещаемость.ТемаВычитки)
            И (ВТ_Общее.ГруппаСтудентов = Посещаемость.ГруппаСтудентов)
            И (Посещаемость.СобытиеЗанятости = ВТ_Общее.СобытиеЗанятости)
ГДЕ
    Посещаемость.Дата МЕЖДУ &МесяцВычитки И &КонецПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Общее.ТемаВычитки КАК Тема,
    ВТ_Общее.ГруппаСтудентов КАК ГруппаСтудентов,
    ВТ_ОсвоеноВсего.ОсвоеноВсего КАК ОсвоеноВсего,
    ВТ_Общее.Освоено КАК Освоено,
    ВТ_Общее.КоличествоПарПлан КАК Всего,
    ВТ_Общее.КоличествоПарФакт КАК Вычитано,
    ВТ_ОбщийПроцент.ОбщийПроцент КАК ОбщийПроцент,
    "" КАК Заголовок,
    ВТ_Посещаемость.Дата КАК Дата
ИЗ
    ВТ_Общее КАК ВТ_Общее
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОсвоеноВсего КАК ВТ_ОсвоеноВсего
        ПО (ВТ_Общее.ГруппаСтудентов = ВТ_ОсвоеноВсего.ГруппаСтудентов)
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Посещаемость КАК ВТ_Посещаемость
        ПО (ВТ_Общее.ГруппаСтудентов = ВТ_Посещаемость.ГруппаСтудентов)
            И (ВТ_Посещаемость.Тема = ВТ_Общее.ТемаВычитки)
            И (ВТ_Общее.СобытиеЗанятости = ВТ_Посещаемость.СобытиеЗанятости),
    ВТ_ОбщийПроцент КАК ВТ_ОбщийПроцент.


Должно выглядеть так:

Группа  1       2        3      
Тема   Дата1   Дата2   Дата3
1 СвинТуз
 
10.10.25
15:52
Правильно заданный вопрос = половина ответа
2 poofik
 
10.10.25
15:59
(1) нужно составить запрос так чтобы у меня в отчете выводились дату в одну строку
3 lEvGl
 
гуру
10.10.25
16:04
(2) ну так а вывод то где
в наше время макетом даже котов называют, а вы о чем?
+ структура отчета стремная что то
4 Волшебник
 
10.10.25
16:02
(2) Не нужно.
5 СвинТуз
 
10.10.25
16:26
(2)
Если СКД то есть функции сбора в массив.
Массив выводится.

Простыней накидали. Кто их читать будет?

Если обычный отчет, то тоже (4) не нужно.

Не видно по запросу итога. Простыня длинная.
6 spiller26
 
10.10.25
16:32
(0) Вот вы пишите, что нифига не понятно.
Что вы используете СКД или через обычное формирование.
Вам нужно колонки с датами или в строку всё загнать?
7 СвинТуз
 
10.10.25
16:30
В запросе очень с натугой идет преобразование типов.
Способ я видел как из двух дат в запросе сделать одну строку.
Но оно вам "не нужно" (С).
8 spiller26
 
10.10.25
16:34
(0) Шаблон выходной можно в студию, как пользователи это хотят видеть то.
9 Волшебник
 
10.10.25
16:37
(8) Ну какие пользователи... Это ж курсач
10 Garykom
 
гуру
10.10.25
16:56
Странное переусложнение для курсача
Любой нормальный препод задаст пару вопросов по коду и завалит

Имхо в студенческих поделках запросы надо использовать только простейшие и короткие, не больше одного экранчика
Все прочее делать кодом, причем простым и понятным - самокомментируемым
11 Волшебник
 
10.10.25
16:57
(10) Студент хотел произвести впечатление на препода глубиной своих познаний языка запросов 1С
12 unenu
 
10.10.25
17:22
(10) названия ВТ логичные и точные.
эта
ПОМЕСТИТЬ ВТ_ОсвоеноВсего
душу греет.
Возможно будет классным разрабом.
13 Маленький Вопросик
 
10.10.25
18:04
(0) вот посмотри, как даты охватить, если типовая на БСП https://infostart.ru/1c/articles/2478491/
14 Garykom
 
гуру
10.10.25
18:33
(12) В первом же ВТ_План объясните нахрена там СГРУППИРОВАТЬ ???
Что и зачем он группирует?

Почему не просто ВЫБРАТЬ РАЗЛИЧНЫЕ?
15 Garykom
 
гуру
10.10.25
18:34
Короче запросы с говнотекстом, походу написаны ИИ
Без понимания детального что и зачем делается

Любой вопрос от препода - будет плавать..
16 Garykom
 
гуру
10.10.25
18:38
Часть же ВТ_План0Факт с подзапросом совсем пипец
Нахрена?
Как минимум надо другие имена в подзапросе
Да и зачем подзапрос когда можно еще одну ВТ и тупо соединить с ней?