Задача 1с специалист по сотрудникам

1. eXplode 25.08.22 10:06 Сейчас в теме
Добрый день, подскажите, пожалуйста решение.
Существует справочник сотрудников с указанием даты рождения сотрудника (тип "дата"). Необходимо написать отчет (используя только один запрос без обработки результата запроса в модуле), чтобы получить за указанный период таблицу распределения сотрудников по возрасту следующего вида:
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
12. Alexponenta 25.08.22 11:34 Сейчас в теме
Ну вот я тут накидал, запрос крайне кривой, с условностями, но как отправная точка - сойдет

ВЫБРАТЬ
	ФизическиеЛица.Ссылка КАК Ссылка,
	ФизическиеЛица.ДатаРождения КАК ДатаРождения,
	РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) КАК Год,
	МЕСЯЦ(ФизическиеЛица.ДатаРождения) КАК Месяц
ПОМЕСТИТЬ ВозрастИМесяц
ИЗ
	Справочник.ФизическиеЛица КАК ФизическиеЛица
ГДЕ
	НЕ ФизическиеЛица.ЭтоГруппа
	И НЕ ФизическиеЛица.ПометкаУдаления
	И НЕ ФизическиеЛица.ДатаРождения = &ПустаяДата
	И РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) > 0
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
   		ВЫБОР КОГДА ВозрастИМесяц.Год МЕЖДУ 0 И 10
			ТОГДА "Группа 0"
		ИНАЧЕ ВЫБОР
				КОГДА ВозрастИМесяц.Год МЕЖДУ 11 И 20
			ТОГДА "Группа 1"
		ИНАЧЕ ВЫБОР
				КОГДА ВозрастИМесяц.Год МЕЖДУ 21 И 30
					ТОГДА "Группа 2"
				ИНАЧЕ ВЫБОР
						КОГДА ВозрастИМесяц.Год МЕЖДУ 31 И 40
							ТОГДА "Группа 3"
						ИНАЧЕ ВЫБОР
								КОГДА ВозрастИМесяц.Год МЕЖДУ 41 И 50
									ТОГДА "Группа 4"
								ИНАЧЕ "Группа 5"
							КОНЕЦ
					КОНЕЦ
			КОНЕЦ
	КОНЕЦ 
	КОНЕЦ КАК Группа,
	ВозрастИМесяц.Месяц КАК Месяц,
	СУММА(1) КАК Количество
ПОМЕСТИТЬ КоличествоИМесяц
ИЗ
	ВозрастИМесяц КАК ВозрастИМесяц

СГРУППИРОВАТЬ ПО
	ВозрастИМесяц.Месяц,
	ВозрастИМесяц.Год
;

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

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 2

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 3

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 4

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 5

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 6

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 7

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 8

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 9

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 10

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 11

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество)
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 12

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВременнаяТаблица.Группа КАК Группа,
	СУММА(ВременнаяТаблица.Январь) КАК Январь,
	СУММА(ВременнаяТаблица.Февраль) КАК Февраль,
	СУММА(ВременнаяТаблица.Март) КАК Март,
	СУММА(ВременнаяТаблица.Апрель) КАК Апрель,
	СУММА(ВременнаяТаблица.Май) КАК Май,
	СУММА(ВременнаяТаблица.Июнь) КАК Июнь,
	СУММА(ВременнаяТаблица.Июль) КАК Июль,
	СУММА(ВременнаяТаблица.Август) КАК Август,
	СУММА(ВременнаяТаблица.Сентябрь) КАК Сентябрь,
	СУММА(ВременнаяТаблица.Октябрь) КАК Октябрь,
	СУММА(ВременнаяТаблица.Ноябрь) КАК Ноябрь,
	СУММА(ВременнаяТаблица.Декабрь) КАК Декабрь
ИЗ
	ВременнаяТаблица КАК ВременнаяТаблица

СГРУППИРОВАТЬ ПО
	ВременнаяТаблица.Группа 
УПОРЯДОЧИТЬ ПО ГРУППА
Показать



И РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) > 0 - Потому что у меня затесался сотрудник из будущего
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Prikum 3 25.08.22 10:10 Сейчас в теме
3. nomad_irk 76 25.08.22 10:12 Сейчас в теме
(1)что именно не получилось сделать в запросе?
4. puzo50 25.08.22 10:19 Сейчас в теме
а если мне 15 числа второго месяца исполнилось 20 лет - я куда? в первую или во вторую группу? или в обе?
5. Prikum 3 25.08.22 10:23 Сейчас в теме
(4)наверное имелось ввиду, что на дату формирования отчета и распределение по месяцам рождения
6. Alexponenta 25.08.22 10:33 Сейчас в теме
7. eXplode 25.08.22 10:35 Сейчас в теме
это все условия задачи. примерный вариант я смог накидать только так, но это за один месяц

ВЫБРАТЬ
	СУММА(ВЫБОР
			КОГДА РАЗНОСТЬДАТ(Сотрудники.ДатаРождения, НАЧАЛОПЕРИОДА(&КонДата, МЕСЯЦ), ГОД) < 20
				ТОГДА 1
			ИНАЧЕ 0
		КОНЕЦ) КАК Меньше20,
	СУММА(ВЫБОР
			КОГДА РАЗНОСТЬДАТ(Сотрудники.ДатаРождения, НАЧАЛОПЕРИОДА(&КонДата, МЕСЯЦ), ГОД) >= 20
					И РАЗНОСТЬДАТ(Сотрудники.ДатаРождения, НАЧАЛОПЕРИОДА(&КонДата, МЕСЯЦ), ГОД) <= 30
				ТОГДА 1
			ИНАЧЕ 0
		КОНЕЦ) КАК ВозрастОт20До30,
	СУММА(ВЫБОР
			КОГДА РАЗНОСТЬДАТ(Сотрудники.ДатаРождения, НАЧАЛОПЕРИОДА(&КонДата, МЕСЯЦ), ГОД) >= 31
					И РАЗНОСТЬДАТ(Сотрудники.ДатаРождения, НАЧАЛОПЕРИОДА(&КонДата, МЕСЯЦ), ГОД) <= 40
				ТОГДА 1
			ИНАЧЕ 0
		КОНЕЦ) КАК ВозрастОт31До40,
	СУММА(ВЫБОР
			КОГДА РАЗНОСТЬДАТ(Сотрудники.ДатаРождения, НАЧАЛОПЕРИОДА(&КонДата, МЕСЯЦ), ГОД) >= 41
					И РАЗНОСТЬДАТ(Сотрудники.ДатаРождения, НАЧАЛОПЕРИОДА(&КонДата, МЕСЯЦ), ГОД) <= 50
				ТОГДА 1
			ИНАЧЕ 0
		КОНЕЦ) КАК ВозрастОт41До50,
	СУММА(ВЫБОР
			КОГДА РАЗНОСТЬДАТ(Сотрудники.ДатаРождения, НАЧАЛОПЕРИОДА(&КонДата, МЕСЯЦ), ГОД) >= 51
				ТОГДА 1
			ИНАЧЕ 0
		КОНЕЦ) КАК Больше50,
	НАЧАЛОПЕРИОДА(&КонДата, МЕСЯЦ) КАК Период
ИЗ
	Справочник.Сотрудники КАК Сотрудники,
	ВТ_Период КАК ВТ_Период
Показать
9. Alexponenta 25.08.22 10:42 Сейчас в теме
(7) Я бы лично отдельным запросом посчитал возраст сотрудника, и месяц его рождения.
А вторым запросом через ОБЪЕДИНИТЬ раскидывал бы сотрудников на условии что месяц тот который нужен.
Но 11 ОБъединений...
10. Alexponenta 25.08.22 10:43 Сейчас в теме
(9) + еще при рассчете надо учитывать високосные года
11. nomad_irk 76 25.08.22 10:52 Сейчас в теме
(7)Вы же понимаете, что вам нужна еще и таблица с месяцами(первое число каждого месяца) за выбранный период?
Формируйте таблицу и соединяйте со справочником.
8. eXplode 25.08.22 10:38 Сейчас в теме
думаю здесь нет принципиального условия по дню месяца. можно просто на начало месяца
12. Alexponenta 25.08.22 11:34 Сейчас в теме
Ну вот я тут накидал, запрос крайне кривой, с условностями, но как отправная точка - сойдет

ВЫБРАТЬ
	ФизическиеЛица.Ссылка КАК Ссылка,
	ФизическиеЛица.ДатаРождения КАК ДатаРождения,
	РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) КАК Год,
	МЕСЯЦ(ФизическиеЛица.ДатаРождения) КАК Месяц
ПОМЕСТИТЬ ВозрастИМесяц
ИЗ
	Справочник.ФизическиеЛица КАК ФизическиеЛица
ГДЕ
	НЕ ФизическиеЛица.ЭтоГруппа
	И НЕ ФизическиеЛица.ПометкаУдаления
	И НЕ ФизическиеЛица.ДатаРождения = &ПустаяДата
	И РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) > 0
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
   		ВЫБОР КОГДА ВозрастИМесяц.Год МЕЖДУ 0 И 10
			ТОГДА "Группа 0"
		ИНАЧЕ ВЫБОР
				КОГДА ВозрастИМесяц.Год МЕЖДУ 11 И 20
			ТОГДА "Группа 1"
		ИНАЧЕ ВЫБОР
				КОГДА ВозрастИМесяц.Год МЕЖДУ 21 И 30
					ТОГДА "Группа 2"
				ИНАЧЕ ВЫБОР
						КОГДА ВозрастИМесяц.Год МЕЖДУ 31 И 40
							ТОГДА "Группа 3"
						ИНАЧЕ ВЫБОР
								КОГДА ВозрастИМесяц.Год МЕЖДУ 41 И 50
									ТОГДА "Группа 4"
								ИНАЧЕ "Группа 5"
							КОНЕЦ
					КОНЕЦ
			КОНЕЦ
	КОНЕЦ 
	КОНЕЦ КАК Группа,
	ВозрастИМесяц.Месяц КАК Месяц,
	СУММА(1) КАК Количество
ПОМЕСТИТЬ КоличествоИМесяц
ИЗ
	ВозрастИМесяц КАК ВозрастИМесяц

СГРУППИРОВАТЬ ПО
	ВозрастИМесяц.Месяц,
	ВозрастИМесяц.Год
;

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

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 2

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 3

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 4

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 5

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 6

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 7

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 8

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 9

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0,
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 10

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество),
	0
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 11

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа

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

ВЫБРАТЬ
	КоличествоИМесяц.Группа,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
	СУММА(КоличествоИМесяц.Количество)
ИЗ
	КоличествоИМесяц КАК КоличествоИМесяц
ГДЕ
	КоличествоИМесяц.Месяц = 12

СГРУППИРОВАТЬ ПО
	КоличествоИМесяц.Группа
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВременнаяТаблица.Группа КАК Группа,
	СУММА(ВременнаяТаблица.Январь) КАК Январь,
	СУММА(ВременнаяТаблица.Февраль) КАК Февраль,
	СУММА(ВременнаяТаблица.Март) КАК Март,
	СУММА(ВременнаяТаблица.Апрель) КАК Апрель,
	СУММА(ВременнаяТаблица.Май) КАК Май,
	СУММА(ВременнаяТаблица.Июнь) КАК Июнь,
	СУММА(ВременнаяТаблица.Июль) КАК Июль,
	СУММА(ВременнаяТаблица.Август) КАК Август,
	СУММА(ВременнаяТаблица.Сентябрь) КАК Сентябрь,
	СУММА(ВременнаяТаблица.Октябрь) КАК Октябрь,
	СУММА(ВременнаяТаблица.Ноябрь) КАК Ноябрь,
	СУММА(ВременнаяТаблица.Декабрь) КАК Декабрь
ИЗ
	ВременнаяТаблица КАК ВременнаяТаблица

СГРУППИРОВАТЬ ПО
	ВременнаяТаблица.Группа 
УПОРЯДОЧИТЬ ПО ГРУППА
Показать



И РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) > 0 - Потому что у меня затесался сотрудник из будущего
Прикрепленные файлы:
13. eXplode 25.08.22 11:45 Сейчас в теме
(12)
Да, такой отчет хорошо выглядит, спасибо!
14. Alexponenta 25.08.22 11:53 Сейчас в теме
(13) Это еще не конечный отчет, а только результат запроса
15. soft_wind 25.08.22 12:33 Сейчас в теме
эх, если бы еще экзамен и степень го..нокодости проверял, было бы здорово!!

вот например такой код делает тоже что и выше, но гораздо понятнее/читабельнее

Выбор 
	Когда ВозрастИМесяц <= 10 Тогда "Группа 0"
	Когда ВозрастИМесяц <= 20 Тогда "Группа 1"
	Когда ВозрастИМесяц <= 30 Тогда "Группа 2"
	Когда ВозрастИМесяц <= 40 Тогда "Группа 3"
	Когда ВозрастИМесяц <= 50 Тогда "Группа 4"
	Иначе "Группа 5"
КОНЕЦ КАК Группа,
Показать
dehro; Alexponenta; ls600; +3 Ответить
16. Alexponenta 25.08.22 16:37 Сейчас в теме
(15) Я писал "на коленке" - так что я особо в "читабельность" не всматривался
17. Alexponenta 25.08.22 16:39 Сейчас в теме
(15) Можно в принципе еще пристать к тому как я возраст считаю: не делая +1 если месяц рождения меньше чем текущая дата
Можно первые два запроса слепить в один, так как над одними и те же данные (просто добавить столбцов из второго запроса к первому)
18. soft_wind 25.08.22 17:05 Сейчас в теме
(16) ну извиняюсь, просто в типовых базах часто вижу такие же конструкции,
все время удивляюсь почему именно так пишут с большой вложенностью?

а по поводу оптимизации, что то вообще меня клинит, зачем вообще вся эта длинная кишка из объединений?
всего один запрос и поместить его в СКД, оно все посчитает и количество и по месяцам сгруппирует.
19. Alexponenta 25.08.22 21:16 Сейчас в теме
(18)Ну так задача вроде как была в том, чтобы получить данный результат не прибегая к скд
20. user1831019 25.08.22 21:19 Сейчас в теме
23. dehro 5 25.08.22 21:37 Сейчас в теме
(20)СКД великолепно!
user1600097; +1 Ответить
21. soft_wind 25.08.22 21:31 Сейчас в теме
(19) эээ, читаем внимательно
Необходимо написать отчет (используя только один запрос без обработки результата запроса в модуле),

написать отчет - все видят?
используя только один запрос без обработки результата запроса в модуле - чем не СКД?
один запрос и ни строчки кода в модуле!!!

(20)
СКД -зло.

- может вы его просто не умеете готовить?
user1600097; Alexponenta; dehro; +3 Ответить
22. user1831019 25.08.22 21:32 Сейчас в теме
(21)
- может вы его просто не умеете готовить?
Повар может уметь готовить разные блюда. Но не обязан их любить.
24. dehro 5 25.08.22 22:30 Сейчас в теме
ВЫБРАТЬ
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ФизическиеЛица.Ссылка) КАК КоличествоСотрудников,
	ВЫБОР
		КОГДА РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) < 20
			ТОГДА "Моложе 20 лет"
		КОГДА РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) >= 20
				И РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) < 30
			ТОГДА "От 20 до 30 лет"
		КОГДА РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) >= 30
				И РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) < 40
			ТОГДА "От 30 до 40 лет"
		КОГДА РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) >= 40
				И РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) < 50
			ТОГДА "От 40 до 50 лет"
		ИНАЧЕ "Старше 50 лет"
	КОНЕЦ КАК Возраст,
	НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ФизическиеЛица.ДатаРождения, ГОД, -1 * ГОД(ФизическиеЛица.ДатаРождения) + 2), МЕСЯЦ) КАК МесяцРождения
ИЗ
	Справочник.ФизическиеЛица КАК ФизическиеЛица
ГДЕ
	НЕ ФизическиеЛица.ЭтоГруппа
	И НЕ ФизическиеЛица.ПометкаУдаления
	И НЕ ФизическиеЛица.ДатаРождения = ДАТАВРЕМЯ(1, 1, 1)
	И РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) > 0

СГРУППИРОВАТЬ ПО
	ВЫБОР
		КОГДА РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) < 20
			ТОГДА "Моложе 20 лет"
		КОГДА РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) >= 20
				И РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) < 30
			ТОГДА "От 20 до 30 лет"
		КОГДА РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) >= 30
				И РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) < 40
			ТОГДА "От 30 до 40 лет"
		КОГДА РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) >= 40
				И РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) < 50
			ТОГДА "От 40 до 50 лет"
		ИНАЧЕ "Старше 50 лет"
	КОНЕЦ,
	НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ФизическиеЛица.ДатаРождения, ГОД, -1 * ГОД(ФизическиеЛица.ДатаРождения) + 2), МЕСЯЦ)
Показать


Даже написал.
У поля МесяцРождения поставил формат "ДФ=MMMM".

С помощью СКД собрал отчёт.
Прикрепленные файлы:
25. Alexponenta 26.08.22 08:27 Сейчас в теме
(24) Неплохо было бы увидеть *.epf
26. dehro 5 27.08.22 08:35 Сейчас в теме
(25)Ничего интересного, поверь мне. Текст запроса есть. Настройки в картинках. Структура отчёта конструктором собрана.
Прикрепленные файлы:
27. Alexponenta 29.08.22 10:59 Сейчас в теме
(26) Я просто не совсем понимаю как у СКД делается то, что я в запросе сделал с помощью Объединения
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот